pt2262解码程序-c语言含实测波形图-read.doc
文本预览下载声明
PT2262?解码程序-C语言(含实测波形图)/blog/user1/8920/archives/2007/21552.html
图为我实测的波形图,PT2262一次发射4组相同的编码,每组码之间用同步码分开,考虑到用A4纸打印,每行只有一组码,共四行,第五行是把同步码单独切出来,方便看。
/******************************************************************************************
??????? 项目名称:?????? 意大利无线门铃??????? 程序功能:?????? PT2262解码程序??????? 晶??? 振:?????? 4 MHz??????? 作??? 者:????? 123mcu? ??????? 电子邮箱:????? 123mcu@163.com??????? QQ????? :?????? 104076687??????? 日??? 期:?????? 2007-03-19??????? 版??? 本:?????? V1.0
??????? ??????? PT2262震荡电阻为4.7M,如电阻不一样需改一下程序时间??????? 本程序是用来做无线收发所用,如果用于红外发光管请将震荡电阻改为430K-470K??????? 当然程序里的时间也要改哦??????? 我的连接方法是将PT2262的数据输出端经过三极管反向后直接接到AT89C2051的P3.2,??????? PT2262与AT89C2051同一个5V电源??????? PT2262是两个脉冲代表一位,我解码是将每个脉冲当成一位,宽的为1,窄的为0,??????? 这样就是24位,解码结果放在receive[3]里??????? 本程序刚刚写完,用仿真器试解码结果没有问题,还没有接高频发射线路试,??????? 先把它贴上来再说。??????? *******************************************************************************/
#i nclude reg51.h
sbit RemPin? =?? P3^2? ;
unsigned char receive[3];
void RemIn(void) interrupt 0 using 1{??? unsigned char i,j;??? unsigned int temp;
?EA=0;?TH0=0;? ?TL0=0; ? ?while (!RemPin); //等待高电平??? TR0=1;??? while (RemPin)? //等待低电平??????? if (TF0==1)? goto RemExit;??//超时就退出;??? TR0=0;??? temp=TH0;??? temp=(temp8)+TL0;??? if (temp6000 || temp4000)?? //判断同步码的宽度??? {??????? temp=TH0;??goto RemExit;??? }//同步码检测成功??? for (i=0; i3; i++) //解 3*8=24 位码 ??? for (j=0; j8; j++)??? {??????? while (!RemPin);? //等待高电平??????? TH0=0;? ??TL0=0; ??TR0=1;??????? while (RemPin)? //等待低电平??????????? if (TF0==1)?goto RemExit;?//超时就退出??TR0=0;??????? temp=TH0;??????? temp=((temp8)+TL0);? //????? /*??????? if (temp400 temp600)??????? {??????????? receive[i]=receive[i]1;??????????? receive[i]=receive[i]+1; //保存 1??????? }??????? else if (temp100 temp234)??????????? {??????????????? receive[i]=receive[i]1;?? //保存0??????????? }??????????? else goto RemExit;??? }??? temp=0;//在这里设置一个断点,运行到这里后看看receive里的三个字节数据就是解码的结果??? RemExit:??? {?
显示全部