Hello..
I'm trying to make 16f88 'interrupt' every 500ms. TMR0/1 are busy. So, I've set TMR2 to interrupt every 1ms and then count var TMR2_clock till 500. But, it is interrupting every 3ms or something... Would you help me?
Code:
'------- initial --------------------
TMR2_clock VAR WORD
OPTION_REG = %00000000
INTCON = %11000000 ' enable interrupts
TRISB = %00000000 ' portb all output
TRISA = %00111111 ' some analog inputs
ANSEL = %00001111 ' some analog inputs
CMCON = %00000111 ' turn of comparators
ADCON1 = %10000000' right justified
T2CON = %00000011 ' TMR2 prescale 1:16
'---------------------------------------------------
TMR2_clock = 0
Lcdout $FE,1 ' clear screen
PR2 = 194 ' load tmr2 PR2 to reset every 1ms
PIE1.1 = 1 ' enable TMR2 interrupt
PIR1.1 = 0 ' disabled interrupt flag - TMR2
T2CON.2 = 1 ' turn TMR2 on
ON INTERRUPT GOTO tick
MAIN:
' do nothing
GOTO MAIN
DISABLE
tick:
PR2 = 194 'reload PR2
TMR2_clock = TMR2_clock + 1
Lcdout $FE,$A0, DEC TMR2_clock
IF TMR2_clock = 500 THEN
TMR2_clock = 0
' Set some flag..
ENDIF
PIR1.1 = 0
resume
ENABLE
Thanks..!
Sylvio
Bookmarks