很简单的问题,扯那么多,哥都看不下去了.
问题出在counter是int型.
counter与250比较的时候,先用低字节减去250,再用高字节减0
如果在跑主程序的时候数据是260,这时, counter刚减完250,中断来了,中断程序中被改成260,高字节由原来的1变成0,所以就出事了.
中断和主程序两个变量共用的资源一定要做互斥处理,不一定要关中断.
用一个标志位,主程序要判断前先把标志位置1,比较完后再清零,
进中断后先判断标志位,再进行处理.
想必这就是所谓的信号量了吧.
不知道||CY的用意何在.
直接用CY标志位也有这样的用法,在pic自带的EEPROM写程序中就有用借位标志的用法. |