完善资料让更多小伙伴认识你,还能领取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 } //延迟函数结束 |
|
相关推荐
2个回答
|
|
char TAB[3]={0xc0,0xf9,0xa4};
char disp[4]={0xc0,0xc0,0xc0,0xc0}; char的范围是-128~127,数组里明显有好多数超过了char的范围,换成unsigned char 另外SCANP是什么?没定义 |
|
|
|
同意楼上,同时在把错误调试信息也发上来,不要让别人给你猜谜语!很难的!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:06 , Processed in 0.624463 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号