PIC blinked - interrupt

Use the TIMER0 interrupt to control blinking.

INTERRUPT VECTOR

; Add this line in the project properties box, pic-as Global Options -> Additional options: 
;    -Wa,-a -Wl,-DCODE=2,-pResetVec=0h,-pISR_Vec=4h
;

Timer0 Vector

;
; Interrupt vector
;
    PSECT   ISR_Vec,class=CODE,delta=2
    global  ISR
ISR:
    banksel PIE0
    btfsc   PIE0,PIE0_TMR0IE_POSITION
    btfss   PIR0,PIR0_TMR0IF_POSITION
    goto    ISR_TIMER0_EXIT
    bcf     PIR0,PIR0_TMR0IF_POSITION
    movf    LED_D2_wait,F
    skipnz
    goto    ISR_TIMER0_EXIT
    decfsz  LED_D2_wait,F
    goto    ISR_TIMER0_EXIT
    movlw   TIMER0_TICKS_TO_LED_TOGGLE
    movwf   LED_D2_wait
    banksel LATA
    movlw   (1<<LATA_LATA4_POSITION)
    xorwf   LATA,F      ; Toggle LED_D3
ISR_TIMER0_EXIT:

    retfie
  • Variable
    PSECT   Isr_Data,global,class=COMMON,space=1,delta=1,noexec
LED_D2_wait:DS      1

Reset vector

;
; Reset vector
;
    PSECT   ResetVec,class=CODE,delta=2
    global  ResetVector
ResetVector:
    pagesel Start
    goto    Start

Ref