最近呢,在做一块小板子,用到了一个rtc模块,为了不使整个程序阻塞起来我使用了一路基本定时器200ms定时读取rtc的值,原本没有什么问题,但是rtc内部带有一个温度传感器,我想顺便也读了吧,考虑到温度不需要实时更新,所以我在定时器中断里设了两个标志变量(定时器10ms中断一次)变量A是读取rtc的标志变量,变量B为温度读取的标志变量,两个变量都在中断函数中自加,并在while(1)中不停的查询两个变量的值,当A为20时,首先清除A的值为0并读取rtc的数据显示到液晶,当B为500时读取温度传感器的值并更新显示到液晶,现在出现的问题是,温度传感器的值正常更新,可是rtc的显示不走时,大体程序如下 while(1) { if A == 20 //更新rtc显示到液晶,且A清0 ifB == 50 //更新温度显示到液晶,且B清0 } A,B兼在中断函数中自加,求解现在为什么只B==50这部分代码会被执行,A==20的代码不执行,调试发现A的值一直自加直到溢出,求解各位大大们,这是怎么回事 手机码字,不便之处请大家多多见谅 |
A的函数就是从rtc里读取时分秒年然后显示到显示,不太好发啊,这函数有400多行
那你的意思就是A的值乱了,,
应该把判断定时“if A == 20”和“ifB == 50”放在中断里面,判断成立然后设置标志,主程序里判断标志然后执行,判断定时不放在中断就改为“if A >= 20”和“ifB >= 50”
对头,对头,您这个方法确实人效,原因是为何呢
调试时能看到A值会一直加,直到溢出,也就是说,if A==20这话不起作用了