Sorry for my previous mail, I did not see your GOTO TOGGLELEDS.
I see 2 other problems:
1. You do not return from interrupt routine:
Data Sheet:
"When an interrupt is responded to; the GIE bit is
cleared to disable any further interrupt,
The "return from interrupt" instruction, RETFIE, exits
interrupt routine as well as sets the GIE bit, which
re-enable interrupts."
You have to drive your leds from interrupt routine OR main loop.
2.
toggleleds
BTFSS PORTA,1
goto LedsOFF
BTFSC PORTA,1 >> if 0 then skip --> next is Ledson
goto Ledson >> if 1 then GOTO Ledson
Ledson
>> In both cases you are going to Ledson ...
Mathew Cohen a écrit :
Hi All, Can someone tell me why the following code will not work. Is this the correct way to initilise the timer and use the timer overflow interupt.Thanks in advance Mathew Cohen ORG H'50' Start
Call Initporta
Call Initportb
Call Initmr
GOTO Checkswitch ;------------ -------------------------------------------------------------- ORG H'03'
TmrInterupt BTFSC PORTB,7
call Initmr
goto toggleleds Initmr
CLRF TMR0
BSF STATUS,RP0 ;select bank 1
CLRF OPTION_REG
MOVLW B'00000111'
IORWF OPTION_REG,1
BCF INTCON,T0IF
BSF INTCON,T0IE RETURN font>
Initporta BSF STATUS,RP0
MOVLW 0
TRIS PORTA
BCF STATUS,RP0
MOVLW 31
MOVWF PORTA RETURN Initportb BSF STATUS,RP0
MOVLW H'FF'
MOVWF TRISB
BCF STATUS,RP0
RETURN Checkswitch
BTFSS PORTB,7
BSF PORTA,4
BTFSC PORTB,7
BCF PORTA,4
GOTO Checkswitch
toggleledsBTFSS PORTA,1
goto LedsOFF
BTFSC PORTA,1
goto LedsonLedson MOVLW 15
MOVWF PORTA
CALL Initmr
GOTO Checkswitch
LedsOFFMOVLW 0
MOVWF PORTA
CALL Initmr
GOTO CheckswitchEND