您现在的位置: 主页 > MCU > 单片机技术应用 > 30路红外遥控开关程序 -
本文所属标签:
为本文创立个标签吧:

30路红外遥控开关程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
30路遥控开关,按0-30个键分别点亮p0.0-p3.5的灯,32键全灭 org00hORG30HMOVP1,#0FFHMOVP2,#0FFHMOVP3,#0FFHSTART:JBP3.7,$;等待遥控信号出现SB:MOVR4,#8;8毫秒为高电平错误SBA:MOVR5,#250SBB:JBP3.7,SXB

30路遥控开关,按0-30个键分别点亮p0.0-p3.5的灯,32键全灭

本文引用地址: http://www.21ic.com/app/mcu/201806/764908.htm

org00h
ORG30H
MOVP1,#0FFH
MOVP2,#0FFH


MOVP3,#0FFH
START:


JBP3.7,$;等待遥控信号出现
SB:
MOVR4,#8;8毫秒为高电平错误
SBA:
MOVR5,#250
SBB:
JBP3.7,SXB1
DJNZR5,SBB
DJNZR4,SBA
MOVR4,#2
JMPSBC
SXB1:
MOVR5,#5
SXB2:;去掉20US的尖峰干扰信号
JNBP3.7,SBB
DJNZR5,SXB2
JMPSTART
SBC:
MOVR5,#250
SB1:
JBP3.7,SB2;2MS内不为高电平错误(监测9MS的低电平引导码)
DJNZR5,SB1
DJNZR4,SBC
JMPSTART
SB2:;去掉20US的尖峰干扰信号
MOVR5,#5
SB2_A:
JNBP3.7,SB1
DJNZR5,SB2_A
MOVR4,#3
SB2_1:
MOVR5,#250
SB3:;监测4.5MS高电平,如3MS内出现低电平错误
JNBP3.7,SXC
DJNZR5,SB3
DJNZR4,SB2_1
MOVR4,#2
JMPSB3_1
SXC:;去掉20US的尖峰干扰信号
MOVR5,#5
SXC1:
JBP3.7,SB3
DJNZR5,SXC1
JMPSTART
SB3_1:;监测4.5MS高电平,如5MS内不为低电平错误
MOVR5,#250
SB3_2:
JNBP3.7,SB4
DJNZR5,SB3_2
DJNZR4,SB3_1
JMPSTART
SB4:;去掉20US的尖峰干扰信号
MOVR5,#5
SB4_1:
JBP3.7,SB3_2
DJNZR5,SB4_1
MOVR1,#1AH;设定1AH为起始RAM区
MOVR2,#4
PP:MOVR3,#8
JJJJ:
MOVR5,#250
JJJJ2:;1MS内不为低电平错误
JBP3.7,JJJJ3
DJNZR5,JJJJ2
JMPSTART
JJJJ3:
LCALLYS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOVC,P3.7;将P3.7引脚此时的电平状态0或1存入C中
JNCUUU;如果为0就跳转到UUU
MOVR5,#250
JJJJ4:
JNBP3.7,UUU
NOP
DJNZR5,JJJJ4
JMPSTART
UUU:MOVA,@R1;将R1中地址的给A
RRCA;将C中的值0或1移入A中的最低位
MOV@R1,A;将A中的数暂时存放在R1中
DJNZR3,JJJJ;接收地址码的高8位
INCR1;对R1中的值加1,换成下一个RAM
DJNZR2,PP;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
;以下对代码是否正确和定义进行识别
MOVA,1AH;比较高8位地址码
XRLA,#00000000B;判断1AH的值是否等于00000000,相等的话A为0
JNZEXIT;如果不相等说明解码失败退出解码程序
MOVA,1BH;比较低8位地址
XRLA,#11111111B;再判断高8位地址是否正确
JNZEXIT;如果不相等说明解码失败退出解码程序
LCALLYS3
MOVA,1CH;比较数据码和数据反码是否正确?
CPLA
XRLA,1DH;将1CH的值取反后和1DH比较不同则无效丢弃,核对数据是否准确
JNZEXIT;如果不相等说明解码失败退出解码程序
LCALLYS3
AJMPBIJIAO
;判断在118毫秒内是否有连发码
AA:MOVR1,#25
XX:ACALLYS2
JNBP3.7,HH;跳转到判断连发代码是否正确的程序段
DJNZR1,XX
EXIT:;对所有端口清零

AJMPSTART
;连发码判断程序段-----------
HH:MOVR6,#4
S:ACALLYS1;调用882微秒延时子程序
JBP3.7,EXIT;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序
DJNZR6,S;重复4次,目的是确认连发码的低电平信号波形
JNBP3.7,$;等待高电?
LCALLYS3
AJMPAA

BIJIAO:MOVA,1CH;按键数值判断执
CJNEA,#10h,TT1
clrp0.0
TT1:CJNEA,#03h,T2
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.1
T2:CJNEA,#01h,T3
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.2
T3:CJNEA,#06h,T4
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.3
T4:CJNEA,#09h,T5
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.4
T5:CJNEA,#1dh,T6
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.5
T6:CJNEA,#1fh,T7
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.6
T7:CJNEA,#0dh,T8
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp0.7
T8:CJNEA,#19h,t9
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.0
T9:CJNEA,#1bh,t10
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.1
T10:CJNEA,#11h,t11
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.2
T11:CJNEA,#15h,t12
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.3
T12:CJNEA,#17h,t13
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.4
T13:CJNEA,#12h,t14
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.5
T14:CJNEA,#16h,t15
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.6
T15:CJNEA,#4ch,t16
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp1.7
T16:CJNEA,#40h,t17
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.0
T17:CJNEA,#48h,t18
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.1
T18:CJNEA,#04h,t19
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.2
T19:CJNEA,#00h,t20
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.3
T20:CJNEA,#02h,t21
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.4
T21:CJNEA,#05h,t22
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.5
T22:CJNEA,#54h,t23
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.6
T23:CJNEA,#4dh,t24
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp2.7
T24:CJNEA,#0ah,t25
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.0
T25:CJNEA,#1eh,t26
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.1
T26:CJNEA,#0eh,t27
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.2
T27:CJNEA,#1ah,t28
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.3
T28:CJNEA,#1ch,t29
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.4
T29:CJNEA,#14h,t31
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

clrp3.5
T31:CJNEA,#0ch,t32
MOVp0,#0ffh
MOVp1,#0ffh
MOVp2,#0ffh
MOVp3,#0ffh

t32:AJMPAA
YS1:MOVR4,#20;延时子程序1,精确延时882微秒
D1:MOVR5,#20
DJNZR5,$
DJNZR4,D1
RET
YS2:MOVR4,#10;延时子程序2,精确延时4740微秒
D2:MOVR5,#235
DJNZR5,$
DJNZR4,D2
RET
YS3:MOVR4,#2;延时程序3,精确延时1000微秒
D3:MOVR5,#248
DJNZR5,$
DJNZR4,D3
RET
END



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 30路红外遥控开关程序 -
 

"30路红外遥控开关程序 -"的相关文章

网站地图

围观()