欢迎来到天天文库
浏览记录
ID:50427615
大小:76.00 KB
页数:7页
时间:2020-03-09
《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)&&(num7、==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)&&(num12、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
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)&&(num12、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
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
此文档下载收益归作者所有