完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我采用T0计数,采用工作方式2,每当用脉冲输入到T0端时,变量加一,并在主程序等待中断的循环体内输出并显示脉冲个数
以下是我的代码 #include unsigned int cnt_t0,cnt_t1,qian,bai,shi,ge,bb,wan,shiwan; unsigned int num; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管断码表 void delay1ms(unsigned int z) //延时1ms程序 { unsigned char i,j; for(i=0;i } void init() //T0初始化 { num=0; TMOD=0x06; TH0=255; TL0=255; ET0=1; EA=1; TR0=1; } void display(unsigned long num_num) //驱动数码管显示 { shiwan=num_num%1000000/100000; wan=num_num%100000/10000; qian=num_num%10000/1000; bai=num_num%1000/100; ge=num_num%100/10; P0=0xdf; //P0是位选 P2=table[shiwan]; delay1ms(1); P0=0xef; P2=table[wan]; delay1ms(1); P0=0xf7; P2=table[qian]; delay1ms(1); P0=0xfb; P2=table[bai]; delay1ms(1); P0=0xfd; P2=table[shi]; delay1ms(1); P0=0xfe; P2=table[ge]; delay1ms(1); } void main() { P0=0xff; init(); while(1) { display(num); } } void timert0() interrupt 1 { num++; } |
|
相关推荐
5个回答
|
|
但是经过手动输入脉冲发现,每十个脉冲才会记一次数,不知道为什么
|
|
|
|
|
|
|
|
用软件仿真看看是那个语句有问题,或硬件仿真也可以。
|
|
|
|
|
|
|
|
顶顶顶顶顶顶顶顶
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1749 浏览 3 评论
3051 浏览 1 评论
3349 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
5051 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1122 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 11:23 , Processed in 0.723069 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号