完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 yao1 于 2013-3-9 08:24 编辑
#include #define uchar unsigned char #define uint unsigned int ***it dula=P2^6; ***it wela=P2^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar num=0,num1=0,shi=0,ge=0,num2=0,num3=0; void D(uchar,uchar,uchar,uchar); void D(uchar ge,uchar shi,uchar num2,uchar num3) { dula=1; //第六个数码管 P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; A(500); dula=1; //第五个数码管 P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; A(500); dula=1; P0=table[num2]; //第二个数码管 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; A(500); dula=1; P0=table[num3]; //第一个数码管 dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; A(500); } void A(uint x) //延时程序 { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void main() { TMOD=0x01; //中断 TH0=(65536-45872)/256; TL0=(655366-45872)%256; EA=1; ET0=1; TR0=1; while(1) { D(ge,shi,num2,num3); } } void T0_time()interrupt 1 { TH0=(65536-45872)/256; TL0=(655366-45872)%256; num1++; if(num1==20) //一秒时间,第六个数码管加一 { num1=0; num++; if(num==60) //一分钟到,第二个数码管进一 { num=0; num2++; if(num2==10) //十分钟到,第一个数码管进一 {num2=0; num3++; } } } shi=num/10; //第五个数码管数值 ge=num%10; //第六个数码管数值 } |
|
相关推荐
6个回答
|
|
你这个程序什么注释都没有,分析起来就很困难了,首先你的变量都没有初始化,有些编译器是不会帮你初始化的,所以一开始,变量ge和num的值就不确定了,由于定时中断有延时,第六位数码管的数字会因ge的值不确定可能会显示一个数,也可能什么也不显示,其次当初次定时中断产生后num的值由于不确定,使执行ge=num%10后,ge的值可能是0-9中的任何一个数。再有一个就是你没有约束num3的值,在num3>16后,第1位数码管显示的的就是乱码了。
|
|
|
|
记得写注释
|
|
|
|
|
|
|
|
你的中断里边数据操作程序很多 不建议这样写,另外你在wela这里 选中后延时A(500);数据是不是大了 我写的习惯 是先wela后dula 最后关闭 及0xff 你的程序 数码管显示前后调整下 把中断里边的判断放在主函数里 应该就没错了 程序本身没什么大问题 祝你好远
|
|
|
|
{:9:}
|
|
|
|
函数名称要见名知意,延时函数可以用void delay(); 显示函数可以用display ();
不要随便起个名字,不利于别人读程序。 我们做单片机时经常会自定义函数,一般自定义函数都是以内容相近意思的英文单词 作为函数名,这样方便在后期阅读或修改程序。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
787 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
755 浏览 0 评论
850 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1534 浏览 0 评论
1239 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12060 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 15:43 , Processed in 0.678962 second(s), Total 78, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号