Action
Execute subroutine when specified interrupt occurs.
Syntax
ON interrupt label [NOSAVE]
Remarks
interrupt |
INT0, INT1, SERIAL, TIMER0 ,TIMER1 or TIMER2. Chip specific interrupts can be found under microprocessor support. |
Label |
The label to jump to if the interrupt occurs. |
NOSAVE |
When you specify NOSAVE, no registers are saved and restored in the interrupt routine. So when you use this option be sure to save and restore used registers. |
You must return from the interrupt routine with the RETURN statement.
You may have only one RETURN statement in your interrupt routine because the compiler restores the registers and generates a RETI instruction when it encounters a RETURN statement in the ISR.
You can't use TIMER1 when you are using SERIAL routines such as PRINT
because TIMER1 is used as a BAUDRATE generator.
When you use the INT0 or INT1 interrupt you can specify on which condition the interrupt must be triggered.
You can use the Set/Reset statement in combination with the TCON-register for this purpose.
SET TCON.0 : trigger INT0 by falling edge.
RESET TCON.0 : trigger INT0 by low level.
SET TCON.2 : trigger INT1 by falling edge.
RESET TCON.2 : trigger INT1 by low level.
See Hardware for more details
See Also
Example
ENABLE INTERRUPTS
ENABLE INT0 'enable the interrupt
ON INT0 Label2 nosave 'jump to label2 on INT0
DO 'endless loop
LOOP
END
Label2:
PRINT " A hardware interrupt occurred!" 'print message
RETURN