您当前的位置:五五电子网电子知识单片机-工控设备51单片机30路红外遥控开关程序 正文
30路红外遥控开关程序

30路红外遥控开关程序

点击数:7823 次   录入时间:03-04 11:55:23   整理:http://www.55dianzi.com   51单片机

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

[1] [2]  下一页


本文关键字:开关  程序  51单片机单片机-工控设备 - 51单片机

《30路红外遥控开关程序》相关文章>>>