Код
1: #pragma interrupt hi_isr
2: void hi_isr(void){
05DC CFDA MOVFF 0xfda, 0xfe4
05DE FFE4 NOP
05E0 CFE2 MOVFF 0xfe2, 0xfda
05E2 FFDA NOP
05E4 52E6 MOVF 0xfe6, F, ACCESS
3:
4: _asm
5: NOP
05E6 0000 NOP
6: _endasm
7:
Тупое прерывание Hi-ISR с NOPиком в качестве основного кода.
Но имеются какие то NOPы после MOVFF, которые при пошаговой отладке
не выполняются, в DISASSEMBLY LISTING они пропускаются.
Как это можно объяснить ? Компилер MCC18
При расширении кода, вот что творит.
Код
1: #pragma interrupt hi_isr
2: void hi_isr(void){
0606 CFDA MOVFF 0xfda, 0xfe4
0608 FFE4 NOP
060A CFE2 MOVFF 0xfe2, 0xfda
060C FFDA NOP
060E CFE9 MOVFF 0xfe9, 0xfe4
0610 FFE4 NOP
0612 CFEA MOVFF 0xfea, 0xfe4
0614 FFE4 NOP
0616 CFF6 MOVFF 0xff6, 0xfe4
0618 FFE4 NOP
061A CFF7 MOVFF 0xff7, 0xfe4
061C FFE4 NOP
061E CFF5 MOVFF 0xff5, 0xfe4
0620 FFE4 NOP
0622 CFF3 MOVFF 0xff3, 0xfe4
0624 FFE4 NOP
0626 CFF4 MOVFF 0xff4, 0xfe4
0628 FFE4 NOP
062A CFFA MOVFF 0xffa, 0xfe4
062C FFE4 NOP
062E EE00 LFSR 0, 0
0630 F000 NOP
0632 0E14 MOVLW 0x14
0634 04E8 DECF 0xfe8, W, ACCESS
0636 E303 BNC 0x63e
0638 CFEE MOVFF 0xfee, 0xfe4
063A FFE4 NOP
063C D7FB BRA 0x634
063E EE00 LFSR 0, 0x14
0640 F014 NOP
0642 0E0C MOVLW 0xc
0644 04E8 DECF 0xfe8, W, ACCESS
0646 E303 BNC 0x64e
0648 CFEE MOVFF 0xfee, 0xfe4
064A FFE4 NOP
064C D7FB BRA 0x644
064E 52E6 MOVF 0xfe6, F, ACCESS
Особенно непонятно что творит с fe4h
Сообщение отредактировал IXFN50N80Q2 - Nov 2 2010, 20:24