完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
哪位前辈能指导一下,这个程序哪里有错误,为什么数码管总是000那样的闪呢?
#include #include #define nop _nop_() #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define dula P0 #define wela P1 ***it trig=P2^7; uchar code tabwe[]={0xfe,0xfd,0xfb,0xf8}; uchar code tabdu[]={0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,0x7d , 0x07 , 0x7f , 0x6f }; uchar a; bit flag; uchar ge,shi,bai,numwe; ulong s,time; void delay(uint z) {uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() { trig=0; } void count() { time=TH1*256+TL1; TH1=0; TL1=0; s=(time*1.7)/100; if(s>=700||flag==1) {flag=0; wela=tabwe[3]; dula=tabdu[0]; delay(500); } else {delay(5); bai=s/100; shi=s%100/10; ge=s%10; for(numwe=0;numwe<3;numwe++) {wela=tabwe[numwe]; if(numwe==0) {dula=tabdu[bai]; } if(numwe==1) {dula=tabdu[shi]; } if(numwe==2) {dula=tabdu[ge]; } delay(5); } } EX0=1; } void main() {init(); TMOD=0X11; IT0=1; TH1=0; TL1=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; ET1=1; EX0=1; TR1=0; TR0=1; EA=1; while(1) {if(TR1==0) count(); } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; a++; if(a==16) { a=0; trig=1; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; trig=0; } } void exter0() interrupt 0 {TR1=~TR1; if(TR1==0) EX0=0; } void timer1() interrupt 3 {flag=1; } |
|
相关推荐
1个回答
|
|
这个你需要检测是哪里出问题,用示波器检查显示信号。
|
|
|
|
只有小组成员才能发言,加入小组>>
25257 浏览 56 评论
2063 浏览 0 评论
63874 浏览 142 评论
吴鉴鹰单片机项目详细解析系列(连载)之基于单片机的.....
7795 浏览 7 评论
吴鉴鹰单片机项目详细解析系列(连载)之基于单片机的.....
6649 浏览 4 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 07:28 , Processed in 0.867365 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号