STC单片机定时器问题_才发现之前代码显示不全,附件补完

2019-07-15 19:54发布

本帖最后由 superjeffery 于 2014-5-6 23:22 编辑

用DS1302做东西,先在开发板上调试。所以1302的时间直接在代码里面写死。反复读时间然后扫描显示数码管。数码管是2个四位的,共八位。用其中的6位。首先,开发板MCU是STC89LE52RC,整个开发板功能完全正常没有问题。
代码如下,可以正常编译,下载。功能完全正常,所有预期目标都有实现。但是有如下问题。
可以看到,代码里完全没有用到定时器和中断。但是,如果在代码中将 EA=1;ET0=1; TR0=1; 这三句中的任何一句、两句或者三句都注释掉的话,数码管的显示就不正常了,具体表现为,表示时、分的四位都正常,表示秒的十位也正常,但是个位显示莫名的不在 led_ca_table 里面的符号。如果加入串口调试信息,可以看到hour,min,sec三个变量的值依然是对的。dis_index对应的led_an_table的值也是正确的。但是display[5]的值异常。但是仅仅是显示异常。每秒钟sec_led对应的LED灯亮灭,10秒钟,60秒钟数码管的进位等等行为也正常。
也试过数码管扫描不用延时用T0的中断,现象类似。同样是秒个位显示异常。
各位帮忙看看这到底是什么情况呃osz



DS1302.rar 下载积分: 积分 -1 分
1.02 KB, 下载次数: 8, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
发烧友之麒麟
1楼-- · 2019-07-16 00:12
看看先                  
superjeffery
2楼-- · 2019-07-16 00:36
今天发现只要把 display[5]=led_ca_table[sec%0x10]; 这句放到if外面,即读取之后立即计算,不判断秒变化
这样注释掉T0中断相关的语句显示就正常了 但还是想不明外为什么呃

另外,如果用T0做时标,定时做扫描显示不做延时,最后一位显示还是异常不知道为什么

一周热门 更多>