;倚天版遙控器控制顯示0123456789abcdef數(shù)據(jù)保持;***************************************************************************;*E-mail:
[email protected](51c51testweb)51單片機(jī)學(xué)習(xí)網(wǎng),自學(xué)單片機(jī)的網(wǎng)站*;*Createby:石學(xué)軍更多例程請(qǐng)登陸網(wǎng)站*;***************************************************************************org00hORG30HMOVP1,#0FFHMOVP2,#0FFHMOVP3,#0FFHSTART:JBP3.7,$;等待遙控信號(hào)出現(xiàn)SB:MOVR4,#8;8毫秒為
;倚天版遙控器控制顯示
0123456789abcdef數(shù)據(jù)保持
;***************************************************************************
;* E-mail:sxj1974@
163.com (
51c51 test web) 51單片機(jī)學(xué)習(xí)網(wǎng),自學(xué)單片機(jī)的網(wǎng)站 *
;* Create by :石學(xué)軍 更多例程請(qǐng)登陸網(wǎng)站 *
;***************************************************************************
org 00h
ORG 30H
MOVP1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
START:
JB P3.7,$ ;等待遙控信號(hào)出現(xiàn)
SB:
MOV R4,#8 ;8毫秒為高電平錯(cuò)誤
SBA:
MOV R5,#250
SBB:
JB P3.7,SXB1
DJNZ R5,SBB
DJNZ R4,SBA
MOV R4,#2
JMP SBC
SXB1:
MOV R5,#5
SXB2: ;去掉20US的尖峰干擾信號(hào)
JNB P3.7,SBB
DJNZ R5,SXB2
JMP START
SBC:
MOV R5,#250
SB1:
JB P3.7,
SB2;2
MS內(nèi)不為高電平錯(cuò)誤(監(jiān)測(cè)9MS的低電平引導(dǎo)碼)
DJNZ R5,SB1
DJNZ R4,SBC
JMP START
SB2: ;去掉20US的尖峰干擾信號(hào)
MOV R5,#5
SB2_A:
JNB P3.7,SB1
DJNZ R5,SB2_A
MOV R4,#3
SB2_1:
MOV R5,#250
SB3: ;監(jiān)測(cè)4.5MS高電平,如3MS內(nèi)出現(xiàn)低電平錯(cuò)誤
JNB P3.7,
SXCDJNZ R5,SB3
DJNZ R4,SB2_1
MOV R4,#2
JMP SB3_1
SXC: ;去掉20US的尖峰干擾信號(hào)
MOV R5,#5
SXC1:
JB P3.7,SB3
DJNZ R5,SXC1
JMP START
SB3_1: ;監(jiān)測(cè)4.5MS高電平,如5MS內(nèi)不為低電平錯(cuò)誤
MOV R5,#250
SB3_2:
JNB P3.7,SB4
DJNZ R5,SB3_2
DJNZ R4,SB3_1
JMP START
SB4: ;去掉20US的尖峰干擾信號(hào)
MOV R5,#5
SB4_1:
JB P3.7,SB3_2
DJNZ R5,SB4_1
MOV R1,#1
AH;設(shè)定1AH為起始RAM區(qū)
MOV R2,#4
PP: MOV R3,#8
JJJJ:
MOV R5,#250
JJJJ2: ;1MS內(nèi)不為低電平錯(cuò)誤
JB P3.7,JJJJ3
DJNZ R5,JJJJ2
JMP START
JJJJ3:
LCALL YS1 ;高電平開始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
MOV C,P3.7 ;將P3.7引腳此時(shí)的電平狀態(tài)0或1存入C中
JNC UUU ;如果為0就跳轉(zhuǎn)到UUU
MOV R5,#250
JJJJ4:
JNB P3.7,UUU
NOP
DJNZ R5,JJJJ4
JMP START
UUU: MOV A,@R1 ;將R1中地址的給A
RRC A ;將C中的值0或1移入A中的最低位
MOV @R1,A ;將A中的數(shù)暫時(shí)存放在R1中
DJNZ R3,JJJJ ;接收地址碼的高8位
INC R1 ;對(duì)R1中的值加1,換成下一個(gè)RAM
DJNZ R2,PP ;接收完16位地址碼和8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH/1CH/1DH的RAM中
;以下對(duì)代碼是否正確和定義進(jìn)行識(shí)別
MOV A,1AH ;比較高8位地址碼
XRL A,#00000000B ;判斷1AH的值是否等于00000000,相等的話A為0
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
MOV A,1BH ;比較低8位地址
XRL A,#
11111111B ;再判斷高8位地址是否正確