Here's a simple example of toggling an LED using the external interrupt (INT).
LED1 VAR PORTB.1
INCLUDE "DT_INTS-14.bas" ; Base Interrupt System
INCLUDE "ReEnterPBP.bas" ; Include if using PBP interrupts
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler INT_INT, _ToggleLED1, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
@ INT_ENABLE INT_INT ; enable external (INT) interrupts
Main:
PAUSE 1
GOTO Main
'---[INT - interrupt handler]---------------------------------------------------
ToggleLED1:
TOGGLE LED1
@ INT_RETURN
Rising Edge: OPTION_REG.6 = 1
By default, the INT input will generate an interrupt on the Rising edge of the signal.
Using the circuit shown to the right, the LED will toggle on and off with each "Press" of the pushbutton (S1).
The INT input can also be configured to interrupt on the Falling edge by changing the INTEDG bit. (OPTION_REG.6)
INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of INT pin
0 = Interrupt on falling edge of INT pin
If you use this circuit with the Falling edge selected, then the LED will toggle on each button "Release".
Falling Edge: OPTION_REG.6 = 0
Usually it's not a good idea to allow the power supply voltage to leave the PC board. So, this circuit is preferred if using pushbuttons.
With INTEDG = 0, the LED will toggle with each button "Press". Or, with INTEDG = 1, it will toggle with each "Release"
