51单片机 红外控制程序中 if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; }是什么意思
答案:3 悬赏:70 手机版
解决时间 2021-12-02 02:13
- 提问者网友:记得曾经
- 2021-12-01 09:59
51单片机 红外控制程序中 if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; }是什么意思
最佳答案
- 五星知识达人网友:街头电车
- 2021-12-01 10:15
红外解码,先有引导码9ms高电平4.5ms低电平,然后是用户正码,用户反码,按键正码,按键反码,IRCOM[2]是一个4位数组,用来存放红外接受码的,IRCOM[0]是用来存放用户正码IRCOM[1]用户反码、IRCOM[2]按键正码、IRCOM[3]按键反码,你程序里面:
if (IRCOM[2]!=取反IRCOM[3]) //判断如果按键正码不等于取反按键反码
{
EX0=1; //打开外部中断0
return; //跳出结束
}
IRCOM[0]用户正码、IRCOM[1]用户反码,0和1是用来区别不同遥控器的,市场上面遥控器很多,都是用用户码来区别不同遥控器的,希望我的回答对你有帮助!
if (IRCOM[2]!=取反IRCOM[3]) //判断如果按键正码不等于取反按键反码
{
EX0=1; //打开外部中断0
return; //跳出结束
}
IRCOM[0]用户正码、IRCOM[1]用户反码,0和1是用来区别不同遥控器的,市场上面遥控器很多,都是用用户码来区别不同遥控器的,希望我的回答对你有帮助!
全部回答
- 1楼网友:由着我着迷
- 2021-12-01 12:11
0为用户码,1为用户码或者用户反码(看具体遥控器的资料),2和3为数据正反码;2和3比较是为了纠错;0和1要不要比较就看你的要求了,用户码就是为了确认这个遥控器是不是你指定的,不让别家的遥控器和你的通用。
- 2楼网友:过活
- 2021-12-01 11:46
应该是接到的数据,正反码吧,因为红外线可能受干扰,需要校验 一般会采取发两个字节,这两个字节的值是反码关系,接受如果发现不是就认为数据出错。。。。。EX0的作用就不知道了,也许是某个IO,猜测而已,你如果把源码发出来可能分析一下,凭空写个这东西很难知道干啥的。。。追问EX0那我懂,我也猜是这种作用,但是怎么只有2,3比较呢,0,1怎么没有。。。把上面的一百度就能出来所有程序
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯