選擇分類:當前分類——當前分類
本站推薦:
紅外線遙控器解碼程序
文章長度[1469] 加入時間[2006/7/1] 更新時間[2024/8/8 11:16:21] 級別[3] [評論] [收藏]

ORG 0000H
AJMP MAIN
ORG 0003H ;外部中斷INT0入口地址
AJMP INT ;轉中斷服務子程序
MAIN: MOV SP,#40H
MOV P1,#00H
SETB EA ;開CPU中斷
SETB IT0 ;設定INT0觸發方式
SETB EX0 ;INT0請求中斷

DSP: MOV R2,#9 ;將遙控器鍵值轉化成A(0~9)
MOV DPTR,#TAB1
VV: MOV A,R2
MOVC A,@A+DPTR
XRL A,1CH
JZ ABC
DJNZ R2,VV
ABC: MOV A,R2

MOV DPTR,#TAB ;將A的值通過數碼管顯示出來
MOVC A,@A+DPTR
RX1: MOV P1,A
CLR P0.1
AJMP DSP

INT: CLR EA
MOV R6,#10
SB: ACALL YS1
JB P3.2,EXIT
DJNZ R6, SB
JNB P3.2, $ ;等待高電平避開9毫秒低電平引導脈沖
ACALL YS2 ;延時4。74毫秒判斷是否連發
JB P3.2,EXIT
CPL P0.0

MOV R1,#1AH ;將32位代碼分別放在1AH/1BH/1CH/1DH中
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.2,$
LCALL YS1
MOV C,P3.2
JNC UUU
JB P3.2,$
UUU: MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJJJ
INC R1
DJNZ R2,PP

MOV P2,1CH
MOV A,1AH ;進行代碼識別
XRL A,#0 ;判斷1AH的值是否等于00000000
JNZ EXI ;如果不同則無效將1CH清零
CLR P0.1
MOV A,1BH
XRL A,#11110111B ;再判斷高8位地址是否正確
JNZ EXI
MOV A,1CH
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無效丟棄核對數據是否準確
JNZ EXI
AJMP EXIT
EXI: MOV 1CH,#0
EXIT: SETB EA ;允許中斷
RETI

YS1: MOV R4,#20 ;精確延時882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;精確延時4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
TAB: DB 60H,7DH,0D0H,58H,4DH
DB 4AH,42H,7CH,40H,48H
TAB1:DB 0CH,09H,1DH,1FH,0DH
DB 19H,1BH,11H,15H,17H
END
;TAB LED數碼管顯示表 TAB1遙控器鍵值表
1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
91嫩草黄片动漫版