打印

红外解码程序中遇到的问题

[复制链接]
2552|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lpz110|  楼主 | 2010-11-23 23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我第一次写红外程序现在有个问题一直想不通,想咨询下21IC的牛人
我在网上参考了很多红外的程序,为什么这接收地址和数据码的时候,大家都是用865微秒的时间尺去判断信号此时的高低电平状态,延时865微秒后不管此时的数据是0还是1,该管脚的电平都是0啊,这样怎么能确定此时的数据的0还是1啊,,
    LCALL DL4737 ;延时4.74毫秒避开4.5毫秒的结果码
     MOV R7,#16;忽略前26位系统识别码

JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号
     LCALL DL865;高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态
     MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
     JNC UUUA;如果为0就跳转到UUUA
     LCALL DL1000;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUUA: DJNZ R7,JJJJA
     MOV R1,#22H ;设定22H为起始RAM区
     MOV R2,#2;接收从22H到23H的2个内存,用于存放操作码和操作反码
PP:  MOV R3,#8;每组数据为8位
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
     LCALL DL865;高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态
     MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
     JNC UUU;如果为0就跳转到UUU
     LCALL DL1000;检测到高电平1的话延时1毫秒等待脉冲高电平结束
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 ;接收完8位数据码和8位数据反码,存放在

相关帖子

沙发
月下狂想曲| | 2010-11-24 09:05 | 只看该作者
位0                                                                         位1

|------------|                                                       |------------|
|               |----————|                                     |               |----————---------
| 0.56ms   |                                                       | 0.56ms   |
|           1.125ms        |                                      |   2.25ms

使用特权

评论回复
板凳
XZL| | 2010-11-24 09:15 | 只看该作者
仔细分析发射波形就知道了

使用特权

评论回复
地板
apple| | 2010-11-24 09:25 | 只看该作者
首先要确定是什么格式,遥控器发码格式有很多,不同的格解码方法有可能是不一样的,所以865US也不好说明是什么原理,如果上面的程序用于解码NEC格式,可能是不行的。

使用特权

评论回复
5
lpz110|  楼主 | 2010-11-24 10:58 | 只看该作者
2# 月下狂想曲
是啊,但是你看啊 。延时865微秒后,当所要接收的数据是“0”的话那管脚也是低电平。如果接收的数据是“1”的话管脚也还是低电平。所以程序这样写那又是 什么意思
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
     LCALL DL865;高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态
     MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
     JNC UUU;如果为0就跳转到UUU
     LCALL DL1000;检测到高电平1的话延时1毫秒等待脉冲高电平结束
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 ;接收完8位数据码和8位数据反码,存放在

使用特权

评论回复
6
lyjian| | 2010-11-24 12:52 | 只看该作者
用这种纯软件延时的方法来解码,明显写这个程序的人本身也是一个菜鸟。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

28

帖子

1

粉丝