;
; File:     main.s        ==== Timer 0 ====
; Target:   PIC16F18346
; Date:     2021-11-01
; Compiler: pic-as(v2.32)
; IDE:      MPLABX v5.50
;
; LED:      RC5
;
; MPLAB X 設定の追加:
;     project properties ダイアログ pic-as Global Options の
;     Additional options 行に以下の一文を追加する
;        -Wl,-DCODE=2 -Wl,-pPor_Vec=0h
;
    PROCESSOR 16F18346
    PAGEWIDTH   132
    RADIX       DEC
;
#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,global,class=CODE,delta=2
    global  resetVec
resetVec:
    PAGESEL Start
    goto    Start
;
; Main application code
;
    PSECT   MainCode,global,class=CODE,delta=2
Start:
       BANKSEL TRISA         ; BANK 1 に設定
       BCF     TRISC, 0x5    ; RC5を出力に設定
       BCF     TRISA, 0x5    ; RA5を出力に設定

       BANKSEL LATA          ; BANK 2 に設定
       BCF     LATA, 0x5        ; LED4(RA5)をOFF
;    // --------------------------------------------
;    // Timer0 は、Fosc/4を16bitモードでカウント
;    // カウントアップ(262mS)でTMR0IFが「1」になる
;    // TMR0IFを常時モニタしLED(RC0)を反転
;    // また、PPS機能を使いTMR0出力をRC5に出力する
;    // --------------------------------------------

       MOVLW   0x40            ; Fosc/4 Sync PreS 1/1
       BANKSEL T0CON1
       MOVWF   T0CON1          ; T0 設定
       MOVLW   0x90            ; T0ON 16bit Post 1/1
       MOVWF   T0CON0          ; T0 設定
       MOVLW   0x1C            ; TMR0をRC5に出力
       BANKSEL RC5PPS
       MOVWF   RC5PPS          ; RC5PPS 設定

LOOP:
       BANKSEL PIR0
       ; Timer0カウントアップを待つ
       BTFSS PIR0, PIR0_TMR0IF_POSITION
       bra   LOOP
       BCF   PIR0, PIR0_TMR0IF_POSITION     ; TMR0IF=0;

       ; LED4(RA5)を反転 ------------------
       MOVLW   0x20            ; LED(RA5)のビット
       BANKSEL LATA
       XORWF   LATA, F         ; LED ON/OFF 反転
       bra     LOOP            ; LOOPに戻る
;
; 電源ONリセット 開始番地の宣言
;
    END     resetVec