我在使用“CodeCruiser for EasyPack 51”调试MCU,出现一个很奇怪的现象: 与问题相关的程序内容如下: …… unsigned char IntCount = 0; …… void TEST_INT0 (void) interrupt 0 using 2 { P3_1 = 1; EX0 = 0; …… IntCount ++; if( IntCount > 2 ) { IntCount = 0; …… // 执行中断算法 } …… EX0 = 1; P3_1 = 0; } …… 在程序的其它地方都没有操作IntCount。 调试中发现中断算法一直没有得到执行。经过逐步定位,发现IntCount在TEST_INT0结束时会变为0。即执行“IntCount ++”时,IntCount变为1,然后跳过“if( IntCount > 2 )”。在“TEST_INT0”程序结束的“}”之后又变为0,从而造成“if( IntCount > 2 )”总是跳过。
不知谁知道可能会是什么原因造成以上现象? 另外补充一点:在“CodeCruiser for EasyPack 51”的项目设置中的设备是选择AT89S52,编译结果报告的Program Size为:data=88.5 xdata=0 code=1528 |