目次>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
; ========================== ここまで ==============================