如题,51单片机中,在程序中设置两个数SetTime、RunTime,比较这两个数的大小,均是unsigned long类型,其中:
这样也确实解决了问题,所以最根本的问题,还是计算过程中数据溢出的问题,在此,也非常感谢MOP同学热心解答!
LiuYang 发表于 2016-8-11 19:14 确实是定时器的问题。第一次进到中断里,证明已经到达定时器的溢出值,这时计时是正确的。 然而在计算过程 ...
999 发表于 2016-8-11 21:33 Hour++; if (Hour > 1) {
SingleYork 发表于 2016-8-12 08:15 感谢刘总,不过工作模式就是设置的自动重装……定时器工作在0模式……也就是16位自动重装…… ...
LiuYang 发表于 2016-8-12 09:50 那么在中断函数里就不要再操作CNT寄存器了
君子好“球” 发表于 2016-8-12 08:44 Hour++; if (Hour > 1) {
TDA2030 发表于 2016-8-12 11:38 18*60*60=64800 19*60*60=68400 而两字节最大表示数为65535
SetTime = SetDay*24L*60L*60L + SetHour*60L*60L;
RunTime = Day*24L*60L*60L+Hour*60L*60L+Min*60L+Sec;
SingleYork 发表于 2016-8-12 11:56 尝试了强制类型转换,好像是数据溢出的问题……
MOP 发表于 2016-8-12 12:33 如题,51单片机中,在程序中设置两个数SetTime、RunTime,比较这两个数的大小,均是unsigned long类型,其 ...
999 发表于 2016-8-12 14:47 你不是已经做了强制转换吗?又改了帖子?。。囧
TDA2030 发表于 2016-8-12 13:28 现在好了没?
灵澈 发表于 2016-8-12 10:52 已经推到论坛首页,希望能帮助楼主把问题尽快解决!