嵌入式设计应用
PT2262/2272 是一种CMOS 工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编马识别最常用的芯片之PT2262/2272 最多可有12 位(A0-A11) 三态地址端管脚(悬一。空,接高电平,接低电平),任意组合可提供531441地址码,PT226
2 最多可有6 位(D0-D5) 数据端管脚,设定的地址码和数据码从17脚串行输出。PT2262/2272 必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。随着人们对操作的要求越来越高,PT2262/22 72 的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥衫卜PT2262/2272的缺陷,这就是PT2262 软件解码。
我看过很多PT2262软件解码程序,都是用定时器测量脉冲宽度。占用系统太多资源。我自己编写的程序不用定时器,不用中断,代码最少。发射端为PT2262 3.3M 的电阻接收端为M8 内部1M RC振荡。解码成功后输出D口显示。编译软件为ICCAVR。
#include 《iom8v.h》
#include 《macros.h》
void delay_ms(void) //毫秒延时
{
unsigned int i;
for (i=0;i《140;i++)
{
}
}
void delay_nms(unsigned int n) //延时周期
{
unsigned int i;
for (i=0;i《n;i++)
{
delay_ms();
}
}
void spaz(void) //响蜂鸣器
{
PORTC|=(1《《5);
delay_nms(50);
PORTC&=~(1《《5);
}
unsigned long decode(void) //无线解码
{
unsigned long DATA; //记录数据
unsigned char count,i; //暂时计数
/*一共接收三字节*/
DATA=0; //
for (count=0;count《24;count++) //开始收集
{
/*测量高电平宽度*
/ i=0; //宽度计数
while (PINC&(1《《4)) //高位计数
{
asm(“nop”); //
i++; //计数增加
if (i》192) goto end; //限时解码
}
/*分辨出电平高低*/
DATA*=2; //数据左移
if (i《64) //分辨高低
{
if (!((56》i)&(i》24))) goto end
; //电平合法DATA+=0; //记低电平
}
else
{
if (!((168》i)&(i》72))) goto end; //电平合法
DATA+=1; //记高电平
}
/*测量低电平宽度*/
while (!(PINC&(1《《4))) //低位计数
{
asm(“nop”); //
i++; //计数增加
if (i》224) goto end; //限时解码
}
/*低电平是否过窄*/
if (i《96) goto end; //对比宽度
}
/*解码成功返结果*/
return DATA; //成功返回
/*有误码结束解码*/
end:
return 0; //误码结束
}
void main(void)
{
unsigned long DATA; //
unsigned char D[3]; //
signed char i; //
DDRB =0B00000000; //定义输入
PORTB=0B11111111; //上拉使能
DDRC =0B11101111; //输入通道
PORTC=0B11011111; //上拉选择
DDRD =0B11111111; //定义输出
PORTD=0B00000000; //输出显示
while (1)
{
DATA =decode(); //解码程序
if (DATA》0) //
{
spaz(); //解码成功
for (i=2;i》=0;i--) //数据转换
{ D[i]=DATA; //
DATA》》=8; //
}
i=0; //转换完毕
while (1) //输出显示
{
if (!(PINB&(1《《0))) //按键检查
{
delay_nms(20); //防误处理
if (!(PINB&(1《《0))) //
{
i++; //显示值加
spaz();
}
while (!(PINB&(1《《0))) //按键弹起
{
delay_nms(20); //防误处理
}
}
if (i》2) break; /
PORTD=D[i]; //输出显示
}
}
}
}
全部0条评论
快来发表一下你的评论吧 !