1)赤外線受信プログラムのフローチャートを示す.
2)アセンブラプログラムを示す.
;*************************************
; 赤外線受信テストプログラム
; snagai4500
;*************************************
; LED-RECV.ASM
LIST P=PIC16F84A;
INCLUDE P16F84.INC;
MEM_1 EQU 0CH
MEM_2 EQU 0DH
MEM_3 EQU 0DH
MEM_4 EQU 0FH
ORG 0
;*****************************
;メインルーチン
;*****************************
MAIN
BSF STATUS,RP0
CLRF TRISB
MOVLW 01H
MOVWF TRISA
BCF OPTION_REG,7
BCF STATUS,RP0
LOOP
CLRF PORTA
CLRF PORTB
CLRF MEM_4
BTFSC PORTA,0 ;スタートビット待ち
GOTO LOOP
CALL TIM04 ;400μs待って
BTFSC PORTA,0 ;再度スタートビットを確認
GOTO LOOP ;じゃなかったらLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSS PORTA,0 ;デバイスコード(1ビット目)確認1か?
GOTO LOOP ;NoならLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;デバイスコード(2ビット目)確認0か?
GOTO LOOP ;NoならLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;スイッチコード(1ビット目)確認0か?
GOTO B0 ;No(1)ならB0へ
BSF MEM_4,3 ;0ならMEM_4の3ビット目に1をセット
B0
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;スイッチコード(2ビット目)確認0か?
GOTO B1 ;No(1)ならB1へ
BSF MEM_4,2 ;0ならMEM_4の2ビット目に1をセット
B1
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;スイッチコード(3ビット目)確認0か?
GOTO B2 ;No(1)ならB2へ
BSF MEM_4,1 ;0ならMEM_4の1ビット目に1をセット
B2
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;スイッチコード(4ビット目)確認0か?
GOTO B3 ;No(1)ならB3へ
BSF MEM_4,0 ;0ならMEM_4の0ビット目に1をセット
B3
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;ストップビット(1ビット目)確認0か?
GOTO LOOP ;確認できずLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSS PORTA,0 ;ストップビット(2ビット目)確認1か?
GOTO LOOP ;確認できずLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;ストップビット(3ビット目)確認0か?
GOTO LOOP ;確認できずLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSS PORTA,0 ;ストップビット(4ビット目)確認1か?
GOTO LOOP ;確認できずLOOPへ
CALL TIM02
CALL TIM04 ;600μs待って
BTFSC PORTA,0 ;ストップビット(5ビット目)確認0か?
GOTO LOOP ;確認できずLOOPへ
;*****************************************
DECFSZ MEM_4,1 ;スイッチコードが0001?
GOTO C0 ;じゃないならC0へ
GOTO Label0
C0
DECFSZ MEM_4,1 ;スイッチコードが0010?
GOTO LOOP
GOTO Label1
Label0
;スイッチコードが0001の時の処理を書く
;処理終わり
GOTO LOOP
Label1
;スイッチコードが0010のときの処理を書く
;処理終わり
GOTO LOOP
;*****************************
;200μs (クロック 10MHz)
;*****************************
TIM02
MOVLW 07CH
MOVWF MEM_1
TIMLP1 NOP
DECFSZ MEM_1,F
GOTO TIMLP1
RETURN
TIM04
MOVLW 0F9H
MOVWF MEM_2
TIMLP2 NOP
DECFSZ MEM_2,F
GOTO TIMLP2
RETURN
TIM100
MOVLW 0F9H
MOVWF MEM_3
TIMLP3 CALL TIM04
DECFSZ MEM_3,F
GOTO TIMLP3
RETURN
END