NEC协议的遥控器参考代码.doc

NEC协议的遥控器参考代码.doc

ID:50427615

大小:76.00 KB

页数:7页

时间:2020-03-09

NEC协议的遥控器参考代码.doc_第1页
NEC协议的遥控器参考代码.doc_第2页
NEC协议的遥控器参考代码.doc_第3页
NEC协议的遥控器参考代码.doc_第4页
NEC协议的遥控器参考代码.doc_第5页
资源描述:

《NEC协议的遥控器参考代码.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、号。*****************************************************************************/#include#defineucharunsignedchar#defineuintunsignedint#defineN5000〃用于在while()中循环时超时跳出的数的上限,可小刀sbitnec.dat=P3A3;//ffMIO口,用到哪个自己改哪个ucharnec」d[2]二{0};//遥控器的编码号,第一个为原码,第二个为反码ucharnec_

3、data[2]二{0};//遥控器的命令号,第一个为原码,第二个为反码ucharnec_status二0;//遥控器的按键状态信息。0:无按键;1:—次按键;2:连续按键ucharnec_actflag二0;//用于带到主函数里的按键响应标志。0:不动作;上动作#ifndefNEC_INF_S_h#defineNEC」NF_S_hvoidnec_init();//W始化函数,注意一定要拉高,拉低就错误了voidnec_delay();//52时0.8ms左右,要求要非常精确,这是正确读数的关键voidnec_pulsedat();

4、〃读第2到第32个脉冲,第一个脉冲已判定voidnec_getdat();〃扫描式读遥控器的数据,可能有时会扫描不到#enchfvoidnec」nit()〃初始化函数,注意一定要拉高,拉低就错误了nec_dat=l;}voidnec_delay(W时0.8ms左右,要求要非常精确,这是正确读数的关键uchari;for(i=0;i<245;i++);/*voidnec_act()〃按键响应程序,根据自己需要写nec_getdat();〃先扫描一遍红外信号if(nec_actflag==lW果是正确的红外信号才处理,否则跳过if(n

5、ec_data[O]=二〜nec_data[l])〃验证所接收数据是否正确switch(nec_data[O])//自己写所需要的程序段case69〃点亮二极管,让蜂鸣器发声,什么都行,写在这里*/break;case70:厂以下都一样,对应的遥控器按键见图IT/break;case71:break;case68:break;case64:break;case67:break;case7:break;case21:break;case9:break;case22:break;case25:break;case13:break;ca

6、se12:break;case24:break;case94:break;case8:break;case28:break;case90:break;case66:break;case82:break;case74:break;}}nec_actflag=O;}}*/voidnec_pulsedat(W第2到第32个脉冲,第一^脉冲已判定{uchari=0;uintnum=0;for(i=l;i<32;i++)num二O;while((nec_dat二二0)&&(num

7、==l){if((i>二l)&&(i<=7))nec_id[0]=nec_id[0]

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

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

10、(0x01<<(i-16));讦((i>=24)&&(i<=31))nec_data[l]=nec_data[l]

11、(0x01<<(i-24));num=O;while((nec_dat==l)&&(num

12、f((i>“)&&(i<=7))necjd[0]=necjd[0]&(〜(OxOlv=8)&&(i<=15))necJd[1]=necjd[1]&(〜(OxOlvvi・8));if((i>=16)&&(i<=23))nec_d

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

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

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