;
; デジタル I/O LED On/Off
; File: main.s
; 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 data
;
PSECT MainData,global,class=RAM,space=1,delta=1,noexec
global count_1,count_2
count_1: DS 1 ;遅延 count
count_2: DS 1 ;遅延 count
;
; Main application code
;
PSECT MainCode,global,class=CODE,delta=2
;
; 遅延関数 256 x 256 (789 ms)
;
Count64k:
BANKSEL count_1
clrf BANKMASK(count_1)
clrf BANKMASK(count_2)
Count64kLoop:
decfsz BANKMASK(count_1),F
bra Count64kLoop
decfsz BANKMASK(count_2),F
bra Count64kLoop
return
;
; PORTC RC5 を出力に設定する
; RC5を Count64k (789ms) 毎に 反転させる
;
Start:
BANKSEL TRISC
bcf BANKMASK(TRISC),5 ; PORTC RC5 output
banksel ANSELC ; 入力ピンを全てデジタル I/O
clrf ANSELC
loop:
BANKSEL PORTC
bsf BANKMASK(PORTC),PORTC_RC5_POSITION ; PORTC bit RC5 HIGH
call Count64k ; 遅延 789 ms
bcf BANKMASK(PORTC),PORTC_RC5_POSITION ; PORTC bit RC5 LOW
call Count64k ; 遅延 789 ms
bra loop ; Loopに戻る
;
; 電源ONリセット 開始番地の宣言
;
END resetVec