目次>9章 PIC18F1320編 > PORTBピン変化割込みを使う> ソース

PORTBピン変化割込みを使う(ソース)

更新日2009.1.11

以下のソースを取り込んで、アセンブル→PIC書き込み→実行して下さい。

; ========================== ここから ==============================
;	ファイル名	portb_chg.asm
;	作成日		2008.6.22
;	作成者		mit.ueno
;	バージョン	1.0
;
;	PIC		PIC18F1320
;	クロック	10MHz
;	概要
;		RB4のスイッチによるPORTB変化割込みでLEDを点滅
;		(スイッチのチャタリングキャンセルは行わない)
;		IPEN=0(PIC16互換割込み)で使用
;	使用ポート
;		RB0:LED
;		RB1:LED
;		RB4:プッシュボタンスイッチ
;
;
	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

; ******** リセットベクタ ***************************
	ORG	0x0000
	BRA	init

; ******** 割込みベクタ *****************************
	ORG	0x0008
	MOVFF	STATUS,STATUS_TEMP	;save STATUS
	MOVFF	WREG,WREG_TEMP		;save WREG
	MOVFF	BSR,BSR_TEMP		;save BSR

	BTFSC	PORTB,RB4	;スイッチON?(RB4=0?)
	BRA	int_90		; No
	MOVLW	0x03
	XORWF	PORTB,F		;RB0,1のLEDを点滅
int_90
	BCF	INTCON,RBIF	;ピン変化割込みフラグクリア

	MOVFF	BSR_TEMP,BSR		;restore BSR
	MOVFF	WREG_TEMP,WREG		;restore WREG
	MOVFF	STATUS_TEMP,STATUS	;restore STATUS
	RETFIE

; ******** 初期処理 *********************************
init
;	MOVLW	0xFC
	MOVLW	0x1C		;RB5-7を出力にした方が安定する
	MOVWF	TRISB		;RB0,1:Output(LED)
	MOVLW	0x7F
	MOVWF	ADCON1		;A/D未使用

	MOVLW	0x01
	MOVWF	PORTB

	MOVLW	0x88
	MOVWF	INTCON		;PORTBピン変化割込み許可,全割込み許可

; ******** メイン処理 *******************************
main
	BRA	main

	END
; ========================== ここまで ==============================