新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用51单片机中断法解码pt2262无线遥控器

用51单片机中断法解码pt2262无线遥控器

作者:时间:2012-11-15来源:网络收藏

/***********************************************
解码软件修正版
使用了位操作代替前版本的位寻址,使用三个字节变量存储获取的数据,便于以后将地址和数据进行操作
增加了两次数据比对的功能,降低误码的干扰
2007.8.24
接受模块的信号输出端接INT0中断口。。。
P1.0,p1.1上接LED显示接受的情况。。。
解码测试通过。。。
注意:使用的是4M的晶振以减少mcu对接受模块的干扰。。。
程序开发:http://www.51hei.com
运行平台:51hei单片机开发板+315m无线模块,用杜邦线连接.
使用时可能要改变检测的特征值,视遥控的中心频率而定,可以通过上的电阻改变*********************************************/

#include reg52.h>
unsigned 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(tmp>1295tmp1300)
{p11=~p11;flagF=0;}
}
else
{
if(i99) dataTMP=dataTMP0;
else
{dataTMP=i917?(dataTMP1):(dataTMP2);}
(*dataTMP)=1;
if(tmp>100tmp150)
(*dataTMP)=(*dataTMP)|0x01;
else if(!(tmp>10tmp100))
{
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++);
}

红外遥控器相关文章:红外遥控器原理

万能遥控器相关文章:万能遥控器代码


51单片机相关文章:51单片机教程




评论


相关推荐

技术专区

关闭