标题:
PT2262 解码程序-C语言
[打印本页]
作者:
wudawei
时间:
2014-12-31 13:15
标题:
PT2262 解码程序-C语言
图为我实测的波形图,PT2262一次发射4组相同的编码,每组码之间用同步码分开,考虑到用A4纸打印,每行只有一组码,共四行,第五行是把同步码单独切出来,方便看。
/******************************************************************************************
项目名称: 意大利无线门铃
程序功能: PT2262解码程序
晶 振: 4 MHz
版 本: 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=(temp<<8)+TL0;
if (temp>6000 || temp<4000) //判断同步码的宽度
{
temp=TH0;
goto RemExit;
}
//同步码检测成功
for (i=0; i<3; i++) //解 3*8=24 位码
for (j=0; j<8; j++)
{
while (!RemPin); //等待高电平
TH0=0;
TL0=0;
TR0=1;
while (RemPin) //等待低电平
if (TF0==1) goto RemExit; //超时就退出
TR0=0;
temp=TH0;
temp=((temp<<8)+TL0);
// /*
if (temp>400 && temp<600)
{
receive[i]=receive[i]<<1;
receive[i]=receive[i]+1; //保存 1
}
else if (temp>100 && temp<234)
{
receive[i]=receive[i]<<1; //保存0
}
else goto RemExit;
}
temp=0;//在这里设置一个断点,运行到这里后看看receive里的三个字节数据就是解码的结果
RemExit:
{
TR0=0;
EA=1;
RemPin=1;
TF0=0;
return;
}
}
///*
main()
{
RemPin=1;
EA=1;
IT0=1; //设定INT0的触发方式为脉冲负边沿触发
EX0=1; //打开INT0中断请求
TMOD=0x01;
while (1);
//RemPin=1;
}
复制代码
作者:
追求是为真理
时间:
2015-10-17 10:25
顶楼主,不错
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1