OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8607|回复: 2

红外处理问题 急

[复制链接]

154

主题

263

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2012-6-29
在线时间
39 小时
发表于 2012-8-17 15:41:51 | 显示全部楼层 |阅读模式
//处理红外接收 
/*-------------------------协议--------------------------
开始拉低9ms,接着是一个4.5ms的高脉冲,通知器件开始传送数据了
接着是发送4个8位二进制码,第一二个是遥控识别码(REMOTE_ID),第一个为
正码(0),第二个为反码(255),接着两个数据是键值,第一个为正码
第二个为反码.发送完后40ms,遥控再发送一个9ms低,2ms高的脉冲,
表示按键的次数,出现一次则证明只按下了一次,如果出现多次,则可
以认为是持续按下该键.
---------------------------------------------------------*/  
//外部中断服务程序   
void EXTI1_IRQHandler(void)
{      
 u8 res=0;
    u8 OK=0;
    u8 RODATA=0;     
 while(1)
    {       
        if(RDATA)//有高脉冲出现
        {
            res=Pulse_Width_Check();//获得此次高脉冲宽度      
            if(res==250)break;//非有用信号
            if(res>=200&&res<250)OK=1; //获得前导位(4.5ms)
            else if(res>=85&&res<200)  //按键次数加一(2ms)
            {               
                Remote_Rdy=1;//接受到数据
                Remote_Cnt++;//按键次数增加
                break;
            }
            else if(res>=50&&res<85)RODATA=1;//1.5ms
            else if(res>=10&&res<50)RODATA=0;//500us
            if(OK)
            {
                Remote_Odr<<=1;
                Remote_Odr+=RODATA;
                Remote_Cnt=0; //按键次数清零
            }  
        }          
    }       
 EXTI_ClearITPendingBit(EXTI_Line1);  //清除EXTI1线路挂起位        
}

这是配套的代码
 Remote_Odr<<=1;   Remote_Odr+=RODATA; 这两句是什么意思

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-8-5
在线时间
0 小时
发表于 2012-8-17 16:06:23 | 显示全部楼层
移位,逐位逐位写入数据,一共写入32位,4个byte,到时在读出来
我要…一步…一步…向前走…
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-17 16:36:18 | 显示全部楼层
楼上正解.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 05:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表