完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我自己编程的程序无法编译通过,我反复查找,找不到原因,请帮忙检查一下到底在那个地方有错误,是什么原因?麻烦你告诉我出错误的地方,是什么原因发生这样的错误。
下面是我编程的程序: //班玛频率程序// #include #include #define SEG P2 //7段数码管接P2 #define SCANP P1 //数码管扫描线接P1 ***it PB0=P3^2; //PBO安纽接P3.2 char TAB[3]={0xc0,0xf9,0xa4}; char disp[4]={0xc0,0xc0,0xc0,0xc0}; //显示区数组初始显示0000; //=======声明T0定时函数===== #define count_M1 5000 //(T0(MODE1)的计数值0.05S #define H_0 (65636-count_M1)/256 //(T0(MODE1)的计算高8位 #define L_0 (65636-count_M1)%256 //(T0(MODE1)的计算低8位 char times=0; // 计算中断次数 //=====声明基本变量======= bit status_F=1; //状态标志位 char scan=1; // 扫描信号 unsigned int fred=0; // 频率变量 void delay1m(int); // 声明延迟函数 void measure(void); // 声明测量函数 void display(void); // 声明显示函数 sfr16 DPTR=0x82; //声明DPTR //=========主程序============ main() //主程序开始 { while(1) //无穷循环,程序一直运行 {if(PB0==0) //如果安下PB0 { status_F=0; //则进入测量阶段 measure(); //调测量函数 while(status_F=0); //等待0;测量完毕 } else display(); // 显示阶段 } // while 循环结束 } //主程序结束 //======= 测量函数======== void measure() //测量函数开始 { SCANP=0xff; //关闭显示器 IE=0X8a; //启用T0,T1中断 TMOD=0X51; //T1为计算器, T0定时器 TH0=H_0; //设置T0高位 TL0=L_0; //设置T0低位 TH1=0; //TH1归0 TL1=0; //TL1归0 TR0=1; //启动TR0 TR1=1; //启动TR1 { //测量函数结束 //==========T0_1S============= //T0_1S中断开始 void To_1s()interrupt 1 { TH0=H_0; //设置T0计算器的高位 TL0=L_0; //设置T0计算器的低位 if(++times==20) //如果达到1S { times=0; //重新计次 status_F=1; //完成测量 TR0=0; //关闭TR0 TR1=0; //关闭TR1 DPL=TL1; //计算量的低8位 DPH=TH1; //计算量的高8位 fred=DPTR; if(fred>=10000) //超过10KZ { disp[3]=TAB[10]; //负号填入千位数显示区 disp[2]=TAB[10]; //负号填入百位数显示区 disp[1]=TAB[fred/10000]; //填入十位数显示区 disp[0]=TAB[(fred/100)%10]; } //填入个位数显示区 else //低于10KZ { disp[3]=TAB[(fred/1000)%10]; //填入千位数显示区 disp[2]=TAB[(fred/100)%10]; //填入百位数显示区 disp[1]=TAB[(fred/10)%10]; //填入十位数显示区 disp[0]=TAB[fred%10];} //填入个位数显示区 } //结束if判断(达到1S) } //T0_1S中断程序结束 //===============显示程序============= void display(void) //显示程序开始 { char i; //声明变量 while(PB0==1) //如果按下PB0 { scan=0x01; //初始扫描信号 for(i=0;i<4;i++) //扫描4次 { SEG=0xff; //关闭7段LED数码管 SCANP=~scan; //输出扫描信号 SEG=disp[i]; //输出显示信号 delay1m(4); //延迟4hm scan<<=1; //下一个扫描信号 } //for结束扫描4次 } //结束while按下PB0 } //显示函数结束 //======延迟扫描=============== void delay1m(int x) //延迟函数开始 { int i,j; //声明变量 for(i=0;i } //延迟函数结束 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
在只有一个电子负载仪的情况下,如何持续监控并记录太阳能充电板的全程充电电流?
1366 浏览 1 评论
5752 浏览 1 评论
9399 浏览 1 评论
8756 浏览 1 评论
1338 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:43 , Processed in 0.503295 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号