- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用51单片机中断法解码pt2262无线遥控器.doc
用51单片机中断法解码pt2262无线遥控器/******************************************************************************************pt2262解码软件修正版使用了位操作代替前版本的位寻址,使用三个字节变量存储获取的数据,便于以后将地址和数据进行操作增加了两次数据比对的功能,降低误码的干扰2007.8.24接受模块的信号输出端接INT0中断口。。。P1.0,p1.1上接LED显示接受的情况。。。用pt2262无线遥控器解码测试通过。。。注意:使用的是4M的晶振以减少mcu对接受模块的干扰。。。程序开发:运行平台:51hei单片机开发板+315m无线模块,用杜邦线连接.使用时可能要改变检测的特征值,视遥控的中心频率而定,可以通过pt2262上的电阻改变*******************************************************************************************/
#include reg52.hunsigned int tmp,t1=0;unsigned char i9=0,t2;char *dataTMP;unsigned char dataTMP0,dataTMP1,dataTMP2,datacheck;unsigned? char bdata oeCON;sbit UD0=oeCON^0;sbit UD1=oeCON^1;sbit OC0=oeCON^2;sbit OC1=oeCON^3;sbit p10=P1^0;sbit p11=P1^1;sbit p32=P3^2;bit flagF=1,press;void up_down();void open_close();void delay(unsigned char);
void main(){?IT0=1;?EX0=1;?TMOD=0x09;?EA=1;?TR0=1;?P3=0xff;
?UD0=1;?UD1=0;?OC0=1;?OC1=0;?while(1)?{?p10=p32;?if(datacheck==0xff)?{??/**********编码解析后执行代码*******************
??***********************/?}???}/*************************************************************中断服务程序通过探头flagF的值判断是否接收到sync信号接收到的数据存入dataTMP的三个变量中连续按键的确认:?? 等待i9的值变为0;?延时?? 再次检测i9的值是否为0;?? 是0则认为按键中止。*************************************************************/int0() interrupt 0 {?tmp=TH0*256+TL0;?TH0=0x0;?TL0=0x0;?if(flagF)??{??if(tmp1295tmp1300)??{p11=~p11;flagF=0;}?}?else?{????if(i99) dataTMP=dataTMP0;??????????? else???{dataTMP=i917?(dataTMP1):(dataTMP2);}???(*dataTMP)=1;??if(tmp100tmp150)???(*dataTMP)=(*dataTMP)|0x01;??else if(!(tmp10tmp100))???{???flagF=1;???i9=0;????????}? ??if(i9==24)??{???if(datacheck!=dataTMP2)???datacheck=dataTMP2;???else???datacheck=0xff;??/*按键确认*/???}??i9++;?}}
/*******************延时函数? 时间:1-2s*******************/void delay(unsigned char k){unsigned char i;?for(i=0;ik;i++)for(tmp=0;tmp10300;tmp++);??}
文档评论(0)