; ***************************************************************
; リスト Timer 0
; LED点灯プログラム
; ***************************************************************
	LIST		P=PIC16F18346	;  使用するPICを指定
	INCLUDE		"P16F18346.INC"	;  読み込む設定ファイルを指定

 __CONFIG _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT1 & _CLKOUTEN_OFF &
          _CSWEN_OFF & _FCMEN_OFF
 __CONFIG _CONFIG2, _MCLRE_ON & _PWRTE_OFF & _WDTE_OFF & _LPBOREN_OFF &
          _BOREN_OFF & _BORV_LOW & _PPS1WAY_OFF & _STVREN_ON & _DEBUG_OFF
 __CONFIG _CONFIG3, _WRT_OFF & _LVP_ON
 __CONFIG _CONFIG4, _CP_OFF & _CPD_OFF

; ***************************************************************
       ORG    0
START  MOVLB  0x1
       BCF    TRISC, 0x5    ; RC5を出力に設定
       BCF    TRISA, 0x5    ; RA5を出力に設定

       MOVLB 0x2            ; 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
       MOVLB  0x0            ; BANK 2 に設定
       MOVWF  T0CON1         ; T0 設定
       MOVLW 0x90            ; T0ON 16bit Post 1/1
       MOVWF T0CON0          ; T0 設定
       MOVLW 0x1C            ; TMR0をRC5に出力
       MOVLB 0x1D            ; BANK 1D に設定
       MOVWF RC5PPS          ; RC5PPS 設定

LOOP   MOVLB 0x0
       BTFSS PIR0, TMR0IF     ; Timer0カウントアップを待つ
       GOTO LOOP
       BCF PIR0, TMR0IF       ; TMR0IF=0;

       ; LED4(RA5)を反転 ------------------
       MOVLB 0x2             ; Bank 2 選択
       MOVLW 0x20            ; LED(RA5)のビット
       XORWF LATA, F         ; LED ON/OFF 反転
       GOTO LOOP             ; LOOPに戻る

ENDPGM MOVLP 0x0

    END