目次>9章 PIC18F1320編 > TMR0割込みを使う> ソース(16ビットモード)
TMR0割込みを使う(ソース)
− 16ビットモード −
更新日2008.12.21
以下のソースを取り込んで、アセンブル→PIC書き込み→実行して下さい。
; ========================== ここから ============================== ; ファイル名 tmr0_L_16.asm ; 作成日 2008.6.20 ; 作成者 mit.ueno ; バージョン 1.0 ; ; PIC PIC18F1320 ; クロック 10MHz ; 概要 ; TMR0割込み(16ビット)でLEDを1秒毎に点滅 ; IPEN=0(PIC16互換割込み)で使用 ; 使用ポート ; RB0:LED ; RB1:LED ; ; TMR0割込み(16ビットタイマ) ; clock 10MHz ; 命令 0.4uS ; presc 256 ; TMR0 55771(0D9DBh) ; 周期 0.4uS * 256 * (65536 - 55771) = 999.936mS ; ; 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 flag ENDC TMR0H_i EQU 0D9h TMR0L_i EQU 0DBh 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 TMR0H_i MOVWF TMR0H MOVLW TMR0L_i MOVWF TMR0L BCF INTCON,TMR0IF BSF flag,f_1S ;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 0x87 MOVWF T0CON ;TMR0 enable,16bit,presc256 MOVLW TMR0H_i MOVWF TMR0H MOVLW TMR0L_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 ; ========================== ここまで ==============================