最精间的PT2262解码程序

来源:本站
导读:目前正在解读《最精间的PT2262解码程序》的相关信息,《最精间的PT2262解码程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《最精间的PT2262解码程序》的详细说明。
简介:在这里和大家分享一下最精间的PT2262解码程序。

我看过很多PT2262软件解码程序,都是用定时器测量脉冲宽度。占用系统太多资源。我自己编写的程序不用定时器,不用中断,代码最少。发射端为PT22623.3M的电阻接收端为M8内部1MRC振荡。解码成功后输出D口显示。编译软件为ICCAVR。

最精间的PT2262解码程序

(原文件名:2272.JPG)

#include<iom8v.h>

#include<macros.h>

voiddelay_ms(void)//毫秒延时

{

unsignedinti;

for(i=0;i<140;i++)

{

}

}

voiddelay_nms(unsignedintn)//延时周期

{

unsignedinti;

for(i=0;i<n;i++)

{

delay_ms();

}

}

voidspaz(void)//响蜂鸣器

{

PORTC|=(1<<5);

delay_nms(50);

PORTC&=~(1<<5);

}

unsignedlongdecode(void)//无线解码

{

unsignedlongDATA;//记录数据

unsignedcharcount,i;//暂时计数

/*一共接收三字节*/

DATA=0;//

for(count=0;count<24;count++)//开始收集

{

/*测量高电平宽度*/

i=0;//宽度计数

while(PINC&(1<<4))//高位计数

{

asm("nop");//

i++;//计数增加

if(i>192)gotoend;//限时解码

}

/*分辨出电平高低*/

DATA*=2;//数据左移

if(i<64)//分辨高低

{

if(!((56>i)&(i>24)))gotoend;//电平合法

DATA+=0;//记低电平

}

else

{

if(!((168>i)&(i>72)))gotoend;//电平合法

DATA+=1;//记高电平

}

/*测量低电平宽度*/

while(!(PINC&(1<<4)))//低位计数

{

asm("nop");//

i++;//计数增加

if(i>224)gotoend;//限时解码

}

/*低电平是否过窄*/

if(i<96)gotoend;//对比宽度

}

/*解码成功返结果*/

returnDATA;//成功返回

/*有误码结束解码*/

end:

return0;//误码结束

}

voidmain(void)

{

unsignedlongDATA;//

unsignedcharD[3];//

signedchari;//

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];//输出显示

}

}

}

}

提醒:《最精间的PT2262解码程序》最后刷新时间 2024-03-14 01:00:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《最精间的PT2262解码程序》该内容的真实性请自行鉴别。