|
- unsigned int Ir_Get_Low(void)
- {
- TL0=0;
- TH0=0;
- TR0=1;
- while(!Ir_Pin && (TH0&0x80)==0);
-
- TR0=0;
- return TH0*256+TL0;
- }
- unsigned int Ir_Get_High(void)
- {
- TL0=0;
- TH0=0;
- TR0=1;
- while(Ir_Pin && (TH0&0x80)==0);
- TR0=0;
- return TH0*256+TL0;
- }
- void IR_Process(void)
- {
- unsigned int temp;
- char i,j;
- do{
- init();
- restart:
- while(Ir_Pin);
- temp=Ir_Get_Low();
- if(tempc(9500)) continue;//引导脉冲低电平9000
- temp=Ir_Get_High();
- [color=#FF0000] if(temp
- if(tempc(5000)) continue;//引导脉冲高电平4500
- for(i=0;i<4;i++) //4个字节
- {
- for(j=0;j<8;j++) //每个字节8位
- {
- temp=Ir_Get_Low();
- if(tempc(800)) goto restart;
- temp=Ir_Get_High();
- if(tempc(2000)) goto restart;
- Ir_Buf[i]>>=1;
- if(temp>c(1120)) Ir_Buf[i]|=0x80;
- }
- }
复制代码
上面修改了一下,大侠给看看对吗?能不能实现
引用 7 楼 galle 的回复:
利用标志,自己设一个判断解码位置的标志!解完头码后,判断是4.5ms的电平还是2.25ms的电平,就可以判断重复码了;
|
|