MAX_COUNT equ d'2500'-1
org 08h
INT_SERVE:
BCF INTCON, INT0IF
;
btfss PORTA,1
bra DO_DECR
DO_INCR:
movlw low MAX_COUNT
cpfseq COUNTER+0
bra DO_INCR2
;
movlw high MAX_COUNT
cpfseq COUNTER+1
bra DO_INCR2
;
clrf COUNTER+0
clrf COUNTER+1
;
bsf LATB,1
;
retfie fast
DO_INCR2:
infsnz COUNTER+0,f
incf COUNTER+1,f
;
movlw b'11111100'
andwf COUNTER+0,w
iorwf COUNTER+1,w
btfss STATUS,Z
bcf LATB,1
;
retfie fast
DO_DECR:
movlw -1
addwf COUNTER+0,f
addwfc COUNTER+1,f
btfsc STATUS,C
bra DO_DECR2
;
movlw low MAX_COUNT
movwf COUNTER+0
;
movlw high MAX_COUNT
movwf COUNTER+1
;
bcf LATB,1
;
retfie fast
DO_DECR2:
movlw b'11111100'
andwf COUNTER+0,w
iorwf COUNTER+1,w
btfsc STATUS,Z
bsf LATB,1
;
retfie fast