Fexclub.su Технологии Программирование и исходники

Проблема с PIC

strah 26.04.2016, 05:56
В общем, есть следующий быдлокод для данного МК:


list p=16f627
include "p16f627.inc"

org 0x00 ;reset vector
goto start

org 0x004 ;Interrupt vector
btfsc OPTION_REG,INTEDG ;If interrpt on rising edge, turn LED on, else turn LED off
goto ledon
goto ledoff
ledon
movlw b'1******0' ;send 1 to RB7
movwf PORTB
bsf STATUS,RP0 ;select bank1
bcf OPTION_REG,INTEDG ;interrupt on falling edge
bcf STATUS,RP0 ;select bank0
goto intend
ledoff
movlw 0x00 ;send 0 to RB7
movwf PORTB
bsf STATUS,RP0 ;select bank1
bsf OPTION_REG,INTEDG ;interrupt on rising edge
bcf STATUS,RP0 ;select bank0
goto intend
intend
bcf INTCON,INTF ;clear interrupt flag
retfie

start
bsf INTCON,GIE ;enable global interrupts
bsf INTCON,INTE ;enable RB0 interrupt

bsf STATUS,RP0 ;go to bank1
movlw b'0******1' ;setup RB0 as input and RB7 as output
movwf TRISB
bcf STATUS,RP0 ;go to bank0

loop
goto loop
END


Проблема в том, что инструкция "btfsc OPTION_REG,INTEDG" ведет себя очень странно: она перепрыгивает на "goto ledoff" даже, если бит INTEDG регистра опций равен единице. В общем, как это можно исправить?
strah 27.04.2016, 23:36
Проблема решилась - я банально забыл перейти в первый банк, регистр OPTION_REG располагается именно в нем.
strah 28.04.2016, 00:35
Проблема решилась - я банально забыл перейти в первый банк, регистр OPTION_REG располагается именно в нем.
Похожие темы
Проблема с ЯВА 350/638
Проблема с HDD
Проблема с DVD-rom
Проблема
проблема c gtx 460 1gb