30路遥控开关,按0-30个键分别点亮p0.0-p3.5的灯,32键全灭
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
上一篇:AT89C52单片机八路电压表C程序
下一篇:数码管秒表C程序
推荐阅读最新更新时间:2024-03-16 15:51