目次>9章 PIC18F1320編 > TMR0割込みを使う> ソース(8ビットモード)
TMR0割込みを使う(ソース)
− 8ビットモード −
更新日2008.12.21
以下のソースを取り込んで、アセンブル→PIC書き込み→実行して下さい。
; ========================== ここから ============================== ; ファイル名 tmr0_L_08.asm ; 作成日 2008.6.20 ; 作成者 mit.ueno ; バージョン 1.0 ; ; PIC PIC18F1320 ; クロック 10MHz ; 概要 ; TMR0割込み(8ビット)でLEDを1秒毎に点滅 ; IPEN=0(PIC16互換割込み)で使用 ; 使用ポート ; RB0:LED ; RB1:LED ; ; TMR0割込み(8ビットタイマ) ; clock 10MHz ; 命令 0.4uS ; presc 256 ; TMR0L 128 ; 周期 0.4uS * 256 * 128 = 13.1mS ; 1秒 1000 / 13.1 = 76 (TMR0割込み76回で1秒) ; ; LIST P=18F1320 INCLUDE P18F1320.INC CONFIG OSC = HS ; ******** GPR *********************************** CBLOCK 0x080 WREG_TEMP ;WREG save area STATUS_TEMP ;STATUS save area BSR_TEMP ;BSR save area ENDC CBLOCK 0x000 CNT1S flag ENDC CNT1S_i EQU d'76' TMR0_i EQU d'128' f_1S EQU 0 ; ******** リセットベクタ *************************** ORG 0x0000 GOTO init ; ******** 割込みベクタ ***************************** ORG 0x0008 MOVFF STATUS,STATUS_TEMP ;save STATUS MOVFF WREG,WREG_TEMP ;save WREG MOVFF BSR,BSR_TEMP ;save BSR MOVLW TMR0_i MOVWF TMR0L BCF INTCON,TMR0IF DECFSZ CNT1S ;1秒カウンタ−1 GOTO LP_int90 BSF flag,f_1S ;1秒経過フラグセット MOVLW CNT1S_i MOVWF CNT1S ;1秒カウンタ初期化 LP_int90 MOVFF BSR_TEMP,BSR ;restore BSR MOVFF WREG_TEMP,WREG ;restore WREG MOVFF STATUS_TEMP,STATUS ;restore STATUS RETFIE ; ******** 初期処理 ********************************* init MOVLW 0xFC MOVWF TRISB ;RB0,1:Output(LED) MOVLW 0x7F MOVWF ADCON1 ;A/D未使用 MOVLW 0x01 MOVWF PORTB CLRF flag MOVLW CNT1S_i MOVWF CNT1S ;1秒カウンタ初期化 MOVLW 0xC7 MOVWF T0CON ;TMR0 enable,8bit,presc256 MOVLW TMR0_i MOVWF TMR0L BSF INTCON,TMR0IE ;TMR0割込み許可 BSF INTCON,GIE ;全割込み許可 ; ******** メイン処理 ******************************* main BTFSS flag,f_1S ;1秒経過フラグセット? GOTO main ; No BCF flag,f_1S ;1秒経過フラグクリア MOVLW 0x03 XORWF PORTB,F ;RB0,1のLEDを交互に点滅 GOTO main END ; ========================== ここまで ==============================