这个代码架构有问题:
按你的图中TL0=0x40,TH0=0xA2 ,假设主频为12M,在1T时,约为2ms一中断,
再看你图中的中断ISR函数中都有什么:
除了有最基本的计数,
还有JDQ,有LED1、有LED2执行驱动的代码,
还有GET_ADC、OLED_Show、这样本该在中断外执行的函数
还有一大堆的if ( )、有的if ()还是一连串的&&..
你有没有大约算一下,进中断,完整走完再出来,需花费多少时间?
会不会直接干翻了这个2ms的中断?
这明显是把餐后甜点当主食了,能行吗?
如果你在main()中调用了GET_ADC、OLED_Show等函数,又在中断中调用了同样的函数,很容易出问题的。
你说你注释了中断代码就OK,也说明上述的理论是正确的。 |