if(msCounter>5000){ Startout(); } } } //------------------------------------------------------------------------ //定时中断服务程序 void interrupt Timer_1ms_ISR(void){ msCounter++; } //------------------------------------------------------------------------
在8位MCU上,msCounter>5000,5000对应的16进制数值就是0x1388,超过了一字节数域的表示范围,这个对应的ASM指令,一般都是多条指令来判断大小,基本上编译器生成的汇编指令都是分成两次分别比较高字节和低字节值的大小,当MCU执行比较时,如果恰好中断发生并导致了进位,此时就产生了临界。
|