; File name: interrupt timer 1
; Curiosity ボードにPIC16F18346を挿している。
;
; Notes: 1MHz内部クロック
; LED RC5
; Language: PIC-AS (v2.32)
; MPLABX (v5.50)
; Target: PIC16F18346
; Created on 2021-11-6
;
; MPLAB X 設定の追加:
; project properties ダイアログ pic-as Linker の
; Custom linker options 欄に以下の2文を追加する
; -pPor_Vec=0h -pIsr_Vec=4h
PROCESSOR 16F18346
#include <xc.inc>
; PIC16F18346 Configuration Bit
config FEXTOSC = OFF, RSTOSC = HFINT1, CLKOUTEN = OFF
config CSWEN = ON , FCMEN = ON , MCLRE = ON
config PWRTE = OFF , WDTE = OFF , LPBOREN = OFF
config BOREN = OFF , BORV = LOW , PPS1WAY = OFF
config STVREN = ON , DEBUG = OFF , WRT = OFF
config LVP = ON , CP = OFF , CPD = OFF
;
; 電源ONリセット 開始番地 ----------------
PSECT Por_Vec,class=CODE,delta=2
Start:
GOTO Main
;
; 割り込み処理 開始番地 ---------------
PSECT Isr_Vec,class=CODE,delta=2
IsrVec:
BANKSEL PIR1
BTFSS TMR1IF ; Timer1からの割込みを確認
BRA RetInt ; Timer1からでないなら戻る
BCF TMR1IF ; 割込みフラッグをクリア
MOVLW 0x20 ; LED4(RC5)を反転 ------
MOVLB 0x2 ; LED(RC5)のビットをXOR
; XORWF LATC, F ; LED ON/OFF 反転
XORWF BANKMASK(LATC), F ; LED ON/OFF 反転
RetInt:
RETFIE
;
; メイン プログラム ------------------
Main:
BANKSEL TRISC
BCF TRISC5 ; RC5を出力に設定
MOVLW 0x1 ; T1CON = 0b00000001;
BANKSEL T1CON
MOVWF T1CON ; Fosc/4 Sync PreS 1/1
CLRF T1GCON ; ゲート機能は使用せず
BCF TMR1IF ; 割込みフラッグをクリア
BANKSEL PIE1
BSF TMR1IE ; TMR1IE 割込みを使用許可
BSF PEIE ; PEIE 周辺機能割込みの使用許可
BSF GIE ; GIE 全割込みの使用許可
Loop: BRA Loop ; 割込みを待つ
END Start