;  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