?? 30路遙控開關.txt
字號:
可以用此外接驅動后控制30路開關!
org 00h
ORG 30H
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
START:
JB P3.7,$ ;等待遙控信號出現
SB:
MOV R4,#8 ;8毫秒為高電平錯誤
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的尖峰干擾信號
JNB P3.7,SBB
DJNZ R5,SXB2
JMP START
SBC:
MOV R5,#250
SB1:
JB P3.7,SB2 ;2MS內不為高電平錯誤(監測9MS的低電平引導碼)
DJNZ R5,SB1
DJNZ R4,SBC
JMP START
SB2: ;去掉20US的尖峰干擾信號
MOV R5,#5
SB2_A:
JNB P3.7,SB1
DJNZ R5,SB2_A
MOV R4,#3
SB2_1:
MOV R5,#250
SB3: ;監測4.5MS高電平,如3MS內出現低電平錯誤
JNB P3.7,SXC
DJNZ R5,SB3
DJNZ R4,SB2_1
MOV R4,#2
JMP SB3_1
SXC: ;去掉20US的尖峰干擾信號
MOV R5,#5
SXC1:
JB P3.7,SB3
DJNZ R5,SXC1
JMP START
SB3_1: ;監測4.5MS高電平,如5MS內不為低電平錯誤
MOV R5,#250
SB3_2:
JNB P3.7,SB4
DJNZ R5,SB3_2
DJNZ R4,SB3_1
JMP START
SB4: ;去掉20US的尖峰干擾信號
MOV R5,#5
SB4_1:
JB P3.7,SB3_2
DJNZ R5,SB4_1
MOV R1,#1AH ;設定1AH為起始RAM區
MOV R2,#4
PP: MOV R3,#8
JJJJ:
MOV R5,#250
JJJJ2: ;1MS內不為低電平錯誤
JB P3.7,JJJJ3
DJNZ R5,JJJJ2
JMP START
JJJJ3:
LCALL YS1 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
MOV C,P3.7 ;將P3.7引腳此時的電平狀態0或1存入C中
JNC UUU ;如果為0就跳轉到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中的數暫時存放在R1中
DJNZ R3,JJJJ ;接收地址碼的高8位
INC R1 ;對R1中的值加1,換成下一個RAM
DJNZ R2,PP ;接收完16位地址碼和8位數據碼和8位數據反碼,存放在1AH/1BH/1CH/1DH的RAM中
;以下對代碼是否正確和定義進行識別
MOV A,1AH ;比較高8位地址碼
XRL A,#00000000B ;判斷1AH的值是否等于00000000,相等的話A為0
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
MOV A,1BH ;比較低8位地址
XRL A,#11111111B ;再判斷高8位地址是否正確
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
LCALL YS3
MOV A,1CH ;比較數據碼和數據反碼是否正確?
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無效丟棄,核對數據是否準確
JNZ EXIT ;如果不相等說明解碼失敗退出解碼程序
LCALL YS3
AJMP BIJIAO
;判斷在118毫秒內是否有連發碼
AA: MOV R1,#25
XX: ACALL YS2
JNB P3.7,HH ;跳轉到判斷連發代碼是否正確的程序段
DJNZ R1,XX
EXIT: ;對所有端口清零
AJMP START
;連發碼判斷程序段-----------
HH: MOV R6,#4
S: ACALL YS1 ;調用882微秒延時子程序
JB P3.7,EXIT ;延時882微秒后判斷P3.7腳是否出現高電平如果有就退出解碼程序
DJNZ R6, S ;重復4次,目的是確認連發碼的低電平信號波形
JNB P3.7, $ ;等待高電?
LCALL YS3
AJMP AA
BIJIAO: MOV A,1CH ;按鍵數值判斷執
CJNE A,#10h,TT1
clr p0.0
TT1: CJNE A,#03h,T2
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.1
T2: CJNE A,#01h,T3
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.2
T3: CJNE A,#06h,T4
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.3
T4: CJNE A,#09h,T5
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.4
T5: CJNE A,#1dh,T6
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.5
T6: CJNE A,#1fh,T7
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.6
T7: CJNE A,#0dh,T8
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p0.7
T8: CJNE A,#19h,t9
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.0
T9: CJNE A,#1bh,t10
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.1
T10: CJNE A,#11h,t11
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.2
T11: CJNE A,#15h,t12
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.3
T12: CJNE A,#17h,t13
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.4
T13: CJNE A,#12h,t14
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.5
T14: CJNE A,#16h,t15
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.6
T15: CJNE A,#4ch,t16
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p1.7
T16: CJNE A,#40h,t17
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.0
T17: CJNE A,#48h,t18
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.1
T18: CJNE A,#04h,t19
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.2
T19: CJNE A,#00h,t20
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.3
T20: CJNE A,#02h,t21
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.4
T21: CJNE A,#05h,t22
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.5
T22: CJNE A,#54h,t23
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.6
T23: CJNE A,#4dh,t24
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p2.7
T24: CJNE A,#0ah,t25
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.0
T25: CJNE A,#1eh,t26
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.1
T26: CJNE A,#0eh,t27
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.2
T27: CJNE A,#1ah,t28
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.3
T28: CJNE A,#1ch,t29
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.4
T29: CJNE A,#14h,t31
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
clr p3.5
T31: CJNE A,#0ch,t32
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
t32: AJMP AA
YS1: MOV R4,#20 ;延時子程序1,精確延時882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延時子程序2,精確延時4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2 ;延時程序3,精確延時1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -