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