; ; デジタル 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