Hi,
I write assembly interrupts often and the main reason that I do this is for timing. I would not recommend jumping into, out of, back into and finally out of the ISR just to increment some counters. I have cut part of my ASM ISR out to show how to increment variables.
Code:
TOCK
BCF 0x0B,2 ;CLEAR INT FLAG
MOVLW 0x64 ;LOAD (PRELOAD) INTO W
MOVWF 01 ;LOAD W INTO TMR0
INCFSZ _TMR0CNT,1 ;INC LOW BYTE OF COUNTER - SKIP NEXT IF IT ROLLS OVER
RETURN ;LOW BYTE DIDN'T ROLL OVER SO RETURN WITHOUT INC UPPER BYTE
INCF _TMR0CNT + 1,1 ;LOW BYTE ROLLED OVER SO INC HIGH BYTE
RETURN ;RETURN
Note that TMR0CNT is a word variable declared in the basic program body. Hope this helps.
Regards,
Joe.
Bookmarks