金牌会员
 
- 积分
- 1838
- 金钱
- 1838
- 注册时间
- 2014-12-4
- 在线时间
- 717 小时
|
发表于 2016-8-23 20:25:26
|
显示全部楼层
//首位交换
static unsigned char _HtoL_(unsigned char temp)
{
unsigned char nTemp = temp,i=0;
temp =0;
for(i=0;i<8;i++)
{
if(nTemp &(0x01<<i)) temp |=(0x80>>i);
}
return temp;
}
//处理红外键盘
//返回值:
// 0,没有任何按键按下
//其他,按下的按键键值.
u8 Remote_Scan(void)
{
u8 sta=0;
u8 t1,t2;
if(RmtSta&(1<<6))//得到一个按键的所有信息了
{
t1=RmtRec>>24; //得到地址码
t2=(RmtRec>>16)&0xff; //得到地址反码
if((t1==(u8)~t2)&&t1==REMOTE_ID)//检验遥控识别码(ID)及地址
{
t1=RmtRec>>8;
t2=RmtRec;
if (t1 == (u8)~t2)
{
sta = _HtoL_(t1);//键值正确
}
}
if((sta==0)||((RmtSta&0X80)==0))//按键数据错误/遥控已经没有按下了
{
RmtSta&=~(1<<6);//清除接收到有效按键标识
RmtCnt=0; //清除按键次数计数器
}
}
return sta;
}
把t1首位调换就对了, |
|