POP MACRO
DECFSZ FSR, F
ENDM
So long as your startup code makes no assumptions about power-on values of SFRs (i.e. you write to every one that you rely upon), then you can simply do a GOTO 0.
The stack is circular, i.e. it never "overflows", it just overwrites any entries more than 8 deep, so you don't have to worry about it.
Data_start
bsf T1CON,TMR1ON ;turn TMR1 on |B0
movlw b'00000101' ;
movwf CCP1CON ;CCP1 rising capture |B0
bcf PIR1,CCP1IF ;flag must be cleared after mode |B0
btfss PIR1,CCP1IF ;test CCP1 interrupt flag (interrupt not enabled)
goto $-1
movf CCPR1H,w ;start time high byte
movwf CCP_T1H ;save value in shadow register
movf CCPR1L,w ;start tiem low byte
movwf CCP_T1L ;save value in shadow register
bcf CCP1CON,0 ;change interrupt flag to falling edge
bcf PIR1,CCP1IF ;clear flag
btfss PIR1,CCP1IF ;test CCP1 falling edge interrupt flag
goto $-1
movf CCPR1H,w ;stop time high byte
movwf CCP_T2H ;save value in shadow register
movf CCPR1L,w ;stop time low byte
movwf CCP_T2L ;save value in shadow register
bsf CCP1CON,0 ;change interrupt flag to rising edge
bcf PIR1,CCP1IF ;clear flag
btfss PIR1,CCP1IF ;test for rising edge (end of period)
goto $-1
movf CCPR1H,w ;start time high byte
movwf CCP_T3H ;save value in shadow register
movf CCPR1L,w ;start tiem low byte
movwf CCP_T3L ;save value in shadow register
bcf CCP1CON,0 ;change interrupt flag to falling edge
bcf PIR1,CCP1IF ;clear flag
bcf T1CON, TMR1ON ;stop TMR1
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?