; Вектор сброса
org 0x000
goto start
; Вектор прерываний
org 0x004
; Сохранение регистров W, STATUS, PCLATH
movwf W_TEMP
swapf STATUS,W
bcf STATUS,PR1
bcf STATUS,PR0
movwf STATUS_TEMP
movf PCLATH,W
movwf PCLATH_TEMP
clrf PCLATH
; Проверка что прерывание от TMR2
btfss PIR1,TMR2IF
goto cont
; Обработка прерываний от TMR2
bcf PIR1,TMR2IF
goto int_end
; Проверка других источников прерываний
cont:
; Завершение прерываний
int_end:
; Востановить регистры PCLATH, STATUS, W
movf PCLATH_TEMP,W
movwf PCLATH
swapf STATUS_TEMP,W
movwf STATUS
swapf W_TEMP,F
swapf W_TEMP,W
retfie
start:
; Настройка TMR2, например
movlw B'00000100'
movwf T2CON
; Включение прерываний от TMR2
bsf STATUS,PR0
bsf PIE1,TMR2IE
bcf STATUS,PR0
; Разрешение периферийных прерываний
bsf INTCON,PEIE
; Глобальное разрешение прерываний
bsf INTCON,GIE
main:
; Ваша программа
goto main
end
|