Hi all,
I have read several tutorials about external interrupts, but still cannot manage to make it work
The MC i am using is the PIC18F4550.
One of the tutorials i used was the one below:
http://www.hobbyprojects.com/pic_tut...utorial11.html
The program that i am trying to do is the one below. It will start blinking an led at port c,2 and when an interrupt occurs (at int0), the led will stop blinking for few seconds.
Can someone help me solve this please.
Thanks in advance
I have read several tutorials about external interrupts, but still cannot manage to make it work

One of the tutorials i used was the one below:
http://www.hobbyprojects.com/pic_tut...utorial11.html
The program that i am trying to do is the one below. It will start blinking an led at port c,2 and when an interrupt occurs (at int0), the led will stop blinking for few seconds.
Rich (BB code):
;REGISTER DECLERATIONS
REG2 EQU 60H
REG3 EQU 61H
REG4 EQU 62H
ORG 0000H ;WHEN SUPPLY ON OR RESET IS PRESSED, PROGRAM WILL START FROM HERE (SEE DATASHEET PG 57)
GOTO MAIN
ORG 0008H ;HIGH PRIORITY VECTOR... THE PROGRAM WILL GO HERE WHEN INTERRUPT IS ENABLED
GOTO ISR
;ALL INTIALIZATION HERE OF ALL PORTS AND PERIPHERALS HERE
;START MAIN PROGRAM HERE
MAIN
MOVLW B'000' ;SET PORT C AS OUTPUT
MOVWF TRISC
CLRF INTCON ;CLEAR REGISTORS
CLRF RCON
BSF RCON,7 ;SET IPIN TO 1
BSF INTCON,7 ;ENABLE ALL HIGH PRIORITY INTERRUPTS
BSF INTCON,4 ;SET INT0 AS EXTERNAL INTERRUPT
BCF INTCON,1 ;CLEAR FLAG
MOVLW B'00000001' ;SET PORT B,0 AS INPUT (SINCE IT IS AN INTERRUPT)
MOVWF TRISB
;START BLINKING LED
LINE3
CLRF REG2
CLRF REG3
MOVLW 30
MOVWF REG4
BSF PORTC,2
LINE1
DECFSZ REG2
BRA LINE1
DECFSZ REG3
BRA LINE1
DECFSZ REG4
BRA LINE1
BCF PORTC,2
CLRF REG2
CLRF REG3
MOVLW 30
MOVWF REG4
LINE2
DECFSZ REG2
BRA LINE2
DECFSZ REG3
BRA LINE2
DECFSZ REG4
BRA LINE2
GOTO LINE3
;INTERRUPT SERVICE ROUTINE
ISR
BCF PORTC,2 ;STOP LED AT PORT C FORM BLINKING WHEN THE INTERRUPT FLAG IS SET
CLRF REG2
CLRF REG3
CLRF REG4
LINE6
DECFSZ REG2
BRA LINE6
DECFSZ REG3
BRA LINE6
DECFSZ REG4
BRA LINE6
BCF INTCON,1 ;SINCE THE PIC DOES NOT RESET THE INTERRUPT PIN AS 0 AUTOMATICALLY, IT HAS TO BE SET MANUALLY
RETFIE ; END INTERRUPT ROUTINE
GOTO $ ; THIS WILL STOP THE MICRO FROM STARTING TO EXECUTRE THE PROGRAME AGAIN EVEN AFTER
; SENDING IT TO THE END DIRECTIVE
END
Thanks in advance