发布网友 发布时间:2022-04-22 07:38
共2个回答
热心网友 时间:2022-06-17 21:29
IrValue[k]>>=1; //k表示第几组数据 这是把变量整体右移一位,由于是无符号最高位补0
if(Time>=8)//如果高电平出现大于565us,那么是1
{
IrValue[k]|=0x80; //变量最高位置一
}
Time=0;//用完时间要重新赋值
这样如果判断是1了就把最高位置一,0的话不用清零,因为右移的时候已经补0了
热心网友 时间:2022-06-17 21:29
比如来的8组数据是01011001,第一个数是0 那么,IrValue[k]>>1结果是0xxxxxxxx 第二次循环,是1的数据。先执行IrValue[k]>>1的结果是00xxxxxx,已经满足Time大于8,所以IrValue[k]|=0x80的结果是10xxxxxx,按程序的意思,只要是0的数据,就右移1,是1的数据就先右移1在高位置1.K循环后,IrValue[k]=10011010.根据你的提问,这个地方就判断是0了,当Time>8,之前的数组右移1位,高位在置1.判断为1.