NEC协议的红外遥控程序(任意IO口).doc

NEC协议的红外遥控程序(任意IO口).doc

ID:55209731

大小:63.50 KB

页数:5页

时间:2020-05-03

NEC协议的红外遥控程序(任意IO口).doc_第1页
NEC协议的红外遥控程序(任意IO口).doc_第2页
NEC协议的红外遥控程序(任意IO口).doc_第3页
NEC协议的红外遥控程序(任意IO口).doc_第4页
NEC协议的红外遥控程序(任意IO口).doc_第5页
资源描述:

《NEC协议的红外遥控程序(任意IO口).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/****************************************************************************NEC_INF_S.h用于NEC协议的遥控器与51单片机结合的驱动程序,可用任意IO口,不占用中断资源。用户码8位,分布于2-17个脉冲;按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码,并且接收数据时低位在前,高位在后。主控器为51单片机,晶振频率为11.0592MHz。注意:由于未用中断,所以信号的接收是靠查询方式的,可能会漏掉若干

2、次红外信号。*****************************************************************************/#include#defineucharunsignedchar#defineuintunsignedint#defineN5000//用于在while()中循环时超时跳出的数的上限,可小刀sbitnec_dat=P3^3;//任意IO口,用到哪个自己改哪个ucharnec_id[2]={0};//遥控器的编码号,

3、第一个为原码,第二个为反码ucharnec_data[2]={0};//遥控器的命令号,第一个为原码,第二个为反码ucharnec_status=0;//遥控器的按键状态信息。0:无按键;1:一次按键;2:连续按键ucharnec_actflag=0;//用于带到主函数里的按键响应标志。0:不动作;1:动作#ifndefNEC_INF_S_h#defineNEC_INF_S_hvoidnec_init();//初始化函数,注意一定要拉高,拉低就错误了voidnec_delay();//延时0.8m

4、s左右,要求要非常精确,这是正确读数的关键voidnec_pulsedat();//读第2到第32个脉冲,第一个脉冲已判定voidnec_getdat();//扫描式读遥控器的数据,可能有时会扫描不到#endifvoidnec_init()//初始化函数,注意一定要拉高,拉低就错误了{nec_dat=1;}voidnec_delay()//延时0.8ms左右,要求要非常精确,这是正确读数的关键{uchari;for(i=0;i<245;i++);}/*voidnec_act()//按键响应程序,根

5、据自己需要写{nec_getdat();//先扫描一遍红外信号if(nec_actflag==1)//如果是正确的红外信号才处理,否则跳过{if(nec_data[0]==~nec_data[1])//验证所接收数据是否正确{switch(nec_data[0])//自己写所需要的程序段{case69:/*点亮二极管,让蜂鸣器发声,什么都行,写在这里*/break;case70:/*以下都一样,对应的遥控器按键见图1-1*/break;case71:break;case68:break;case6

6、4:break;case67:break;case7:break;case21:break;case9:break;case22:break;case25:break;case13:break;case12:break;case24:break;case94:break;case8:break;case28:break;case90:break;case66:break;case82:break;case74:break;}}nec_actflag=0;}}*/voidnec_pulsedat()

7、//读第2到第32个脉冲,第一个脉冲已判定{uchari=0;uintnum=0;for(i=1;i<32;i++){num=0;while((nec_dat==0)&&(num=1)&&(i<=7))nec_id[0]=nec_id[0]

8、(0x01<=8)&&(i<=15))nec_id[1]=nec_id[1]

9、(0x01<<(i-8));if((i>=16)&&(i<=23))nec_

10、data[0]=nec_data[0]

11、(0x01<<(i-16));if((i>=24)&&(i<=31))nec_data[1]=nec_data[1]

12、(0x01<<(i-24));num=0;while((nec_dat==1)&&(num=1)&&(i<=7))nec_id[0]=nec_id[0]&(~(0x01<=8)&&(i<=15))nec_id[1]=nec_id[1]&(~(0x01<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。