标题:
单片机接受到一个红外信号后怎么复位
[打印本页]
作者:
茉莉星瞳
时间:
2021-12-15 11:40
标题:
单片机接受到一个红外信号后怎么复位
接受到一个信号后,这个信号一直存在,停不下来了
作者:
188610329
时间:
2021-12-15 13:08
接受到一个信号? 是一个低电平? 还是解析完成后的一个编码?
如果是解析完成后的一个编码, 那么和接收就没有任何关系了, 是你处理逻辑了.
通常解析完一个编码,会置一个标志,如: Resolution_End = 1;
然后,判断编码的程序, 是通过 if(Resolution_End == 1) 来对这个解析完的编码进行后续操作,完了之后 Resolution_End = 0; 就不会再次操作了, 这个 Uart 中断标志位 RI = 1, IF(RI) , RI =0 ,其实 是一个道理。
作者:
茉莉星瞳
时间:
2021-12-15 13:21
188610329 发表于 2021-12-15 13:08
接受到一个信号? 是一个低电平? 还是解析完成后的一个编码?
如果是解析完成后的一个编码, 那么和接收就 ...
就是做的个红外密码锁,通过解析红外遥控器键值来有具体操作,然后按下一个按键以后会一直有这个信号的处理程序在执行,这是读取键值的程序,该怎么改一下呢
void ReadIr() interrupt 0{ unsigned char j,k; unsigned int err; Time=0; DelayMs(70); if(IRIN==0) { err=1000; while((IRIN==0)&&(err>0)) { DelayMs(1); err--; } if(IRIN==1) { err=500; while((IRIN==1)&&(err>0)) { DelayMs(1); err--; } for(k=0;k<4;k++) { for(j=0;j<8;j++) { err=60; while((IRIN==0)&&(err>0)) { DelayMs(1); err--; } err=500; while((IRIN==1)&&(err>0)) { DelayMs(1);//0.14ms Time++; err--; if(Time>30) { EX0=1; return; } } IrValue[k]>>=1; if(Time>=8) { IrValue[k]|=0x80; } Time=0; } } } if(IrValue[2]!=~IrValue[3]) { return; } } }
作者:
13205495918
时间:
2021-12-15 15:37
你找找例程参考一下吧,一般是考虑标准位。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1