初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2020-10-18
- 在线时间
- 22 小时
|
40金钱
本帖最后由 卡洛尔员工 于 2021-1-16 00:18 编辑
这个里面的左移一位,但是NEC协议是低位先行,如果按照这个逻辑。假如:我发送的是POWER:162(1010 0010),低位先行,那么顺序发送就是 0100 0101。中断里面
判断出来这个第一位是0:先左移然后或上0,那么就是0; 然后判断出第二数据是1:原数据先左移再或上1,那么两次就是01;以此类推,最后就是0100 0101,这就完全不是
原来的数据1010 0010(162)了,反而是69了。有大手子能帮帮我看看吗,搞了3个小时就是没弄明白,怎么读出原来的数值的。
if(RmtSta&0X80)//接收到了引导码(分析上一次接收,只有接收到引导码才接受下面的)
{
//按照低位在前的规则
if(Dval>300&&Dval<800) //560为标准值,560us
{
RmtRec<<=1; //左移一位.
RmtRec|=0; //接收到0
}else if(Dval>1400&&Dval<1800) //1680为标准值,1680us
{
RmtRec<<=1; //左移一位.
RmtRec|=1; //接收到1
}else if(Dval>2200&&Dval<2600) //得到按键键值增加的信息 2500为标准值2.5ms
{
RmtCnt++; //按键次数增加1次
RmtSta&=0XF0; //清空计时器
}
}
else if(Dval>4200&&Dval<4700) //(否则就是接收引导码了)4500为标准值4.5ms
{
RmtSta|=1<<7; //标记成功接收到了引导码
RmtCnt=0; //清除按键次数计数器
}
|
|