我的问题如下: 用得是PICC C编译器,
if( T_value < 15)
{
NOP(); 在此设断点,值大于15时,也停了,怪了 ???
NOP();
}
看汇编清单如下:
;TMP006_1936.c: 1236: if( T_value < 15)
3935 0D72 300F movlw 15
3936 0D73 0235 subwf _T_value^(0+128),w ;volatile
3937 0D74 1803 skipnc
3938 0D75 2D78 goto l11907
3939
3940 ;TMP006_1936.c: 1237: {
3941 ;TMP006_1936.c: 1238: _nop();
3942 0D76 0000 nop
3943
3944 ;TMP006_1936.c: 1239: _nop();
3945 0D77 0000 nop
3946 0D78 l11907:
3947
3948 ;TMP006_1936.c: 1240: }
3949 ;TMP006_1936.c: 1243: if( *( (char*)& T_long_value +2 ) == 0xff)
3950 0D78 0022 movlb 2 ; select bank2
3951 0D79 0822 movf (_T_long_value^(0+256)+2),w ;volatile
3952 0D7A 3AFF xorlw 255
3953 0D7B 1D03 skipz
3954 0D7C 2D83 goto l2048
也看不出什么问题呀,
但仔细观察发现:断点停止时,PC指针的位置是:0X0D79,这不是NOP指令的位置呀,怎么回事 ??????
请各位老师给予解答为盼。
?
|