30路红外遥控开关程序

发布者:technology1最新更新时间:2018-01-07 来源: eefocus关键字:30路  红外遥控开关 手机看文章 扫描二维码
随时随地手机看文章

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 


关键字:30路  红外遥控开关 引用地址:30路红外遥控开关程序

上一篇:AT89C52单片机八路电压表C程序
下一篇:数码管秒表C程序

推荐阅读最新更新时间:2024-03-16 15:51

英飞特推出90-305Vac输入 144W系列四输出恒流LED驱动器
中国杭州 – 2013年5月15日,英飞特电子(杭州)股份有限公司宣布推出144W四路输出恒流驱动器,即EUC-144QxxxDT(ST)。此系列有6个不同的型号,输出电流范围为700-1400mA。每个型号都提供了89-91%的满载效率。这些产品能够在输入电压范围为90-305Vac的情况下工作,并提供高功率因数校正(输入电压110V情况下为0.99,输入电压220V情况下为0.95)。此外,此系列产品已获得UL, CUL, Class 2, CE,SELV和FCC等标准认证。 EUC-144QxxxDT(ST)系列驱动器的多路输出特性 (每路36W)有效降低了LED模组的输入电压,使其能够满足安全电压如Class 2 或者
[电源管理]
英飞特推出90-<font color='red'>30</font>5Vac输入 144W系列四<font color='red'>路</font>输出恒流LED驱动器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved