;
; 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