TMR1_INT -- TMR1 Overflow Interrupt
Uses PIR1,TMR1IF, PIE1,TMR1IE Registers and Control Bits.
Uses PIR1,T1IF, PIE1,T1IE Registers and Control Bits. -- TMR1 alternate sym
DT's Interrupts MUST be used with PicBasic Pro and MPASM.
The following block of instructions will establish the interrupt used and the PBP label (your ISR) to jump to once interrupt occurs. Remember; all PBP labels or variables used inside ASM code blocks must be preceded by the underscore,( _TimeOut). All instruction to the interrupt processor should be in ASM and preceded by the @ symbol and to the far left column of the editor if not included in other ASM code blocks.
Example:
@ INT_DISABLE TMR1_INT
ASM
INT_LIST macro ;IntSource Label, Type, ResetFlag?
INT_Handler TMR1_INT _TimeOut PBP Yes
endm
INT_CREAT ;Creates the interrupt processor
INT_ENABLE TMR1_INT ;enables TMR1 interrupts
ENDASM
Command functions:
INT_CREATE ;Creates the interrupt processor
INT_ENABLE TMR1_INT – to enable TMR1 interrupt
INT_DISABLE TMR1_INT – disable TMR1 interrupt.
INT_CLEAR TMR1_INT -- clear flags
INT_RETURN ------------- To restore and return to the program where interrupt was made.
NOTE:The TMR1 interrupt, if enabled, is generated on timer overflow.
Basic Language Interrupt
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 TMR1_INT, _ToggleLED1, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
T1CON = $31 ; Prescaler=8, TMR1ON
@ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts
Main:
PAUSE 1
GOTO Main
'---[TMR1 - interrupt handler]--------------------------------------------------
ToggleLED1:
TOGGLE LED1
@ INT_RETURN
Code Size=240 words
If Basic Laguage interrupts are NOT being used, then DT_INTS-14.bas is the only file you need to include.
ASM Interrupt
LED1 VAR PORTD.0
LOW LED1 ; Set to Output Low
INCLUDE "DT_INTS-14.bas" ; Base Interrupt System
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, ToggleLED1, ASM, yes
endm
INT_CREATE ; Creates the interrupt processor
INT_ENABLE TMR1_INT ; Enable Timer 1 Interrupts
ENDASM
T1CON = $31 ; Prescaler=8, TMR1ON
Main:
PAUSE 1
GOTO Main
'---[TMR1_INT - interrupt handler]------------------------------------------
ASM
ToggleLED1
btfsc _LED1 'test bit PortD.0, skip next instruction if clear
goto $+3 'jump farward to bcf _LED1
bsf _LED1 'bit set LED1
goto $+2 'jump farward to INT_RETURN
bcf _LED1 'clear bit LED1
INT_RETURN
ENDASM
Code Size=104 Words
<< TMR0_INT | 14-bit sources | TMR2_INT >>
