打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机解码315M的pt2262编码的c51程序 ==转贴

这是一个用软件来解码pt2262信号的c51程序,经过测试是可以使用的,要注意接受模块要远离单片机的晶振 不然干扰太严重无法解码的 或者距离很近.

 

/*------------------------------------------------------------------------------ ;    Copyright (C) 2006  WangChanghong INTEGRATED PRODUCTS, INC. ;    All rights reserved. ;    MCU:AT89s52 ,晶体频率:12MHz :    作者:汪长洪 :    时间:2006年08月01日 ;    地点:威海 ;----------------------------315M无线遥控解码程序------------------------------*/  #include <AT89X52.H> #define uchar unsigned char #define uint unsigned int  /*---------------------------------变量列表------------------------------------*/ uchar  ReadCode[3],GetCode;  /*---------------------------------函数列表------------------------------------*/ void delay_200(void);       //200us精确延时 void delay_250(void);       //250us精确延时 void delay_131(void);       //131ms精确延时 void init(void);        //初始化子程序 void INT0_intrupt();       //中断处理子程序(解码程序)  /*-----------------------------主程序入口--------------------------------------*/ main() {   init();       while(1)     {          P2=~GetCode|0xf0;     } }  /*---------------------------------初始化子程序--------------------------------*/ void init(void) {     EA=1;                      //打开CPU总中断请求  EX0=1;                     //打开INT0中断请求     IT0=1;                     //设定INT0的触发方式为脉冲负边沿触发   }  /*-------------------------------200us精确延时---------------------------------*/ void delay_200(void)  {     uchar i,j;  for(i=0x05;i>0;i--)  for(j=0x12;j>0;j--); }  /*-------------------------------250us精确延时---------------------------------*/ void delay_250(void)  {     uchar i,j;  for(i=0x05;i>0;i--)  for(j=0x17;j>0;j--); }  /*-------------------------------131ms精确延时--------------------------------*/ void delay_131(void)  {     uchar i,j;  for(i=0xfe;i>0;i--)  for(j=0xfe;j>0;j--); }  /*-------------------------外部中断0子程序(解码程序)---------------------------*/ void INT0_intrupt(void) interrupt 0 using 1 {  uchar i,j;  bit BitState_2;                                             EX0=0;  //////////////////////////////找起始位//////////////////////////////////////////  for(i=0;i<50;i++);  if(P3_2==1)  goto kk;   while(P3_2==0);  for(i=0;i<50;i++);  if(P3_2==0)  goto kk;      delay_200();  if(P3_2==1)  goto kk;   for(i=15;i>0;i--)      //重复20次,检测在3750微秒内出现高电平就退出解码程序  {       delay_200();                       if(P3_2==1) goto kk;  }                                       while(P3_2==0);  ///////////////////////////////接收数据///////////////////////////////////////////        for(j=0;j<3;j++)                      {   for(i=0;i<8;i++)   {              delay_250();    BitState_2=P3_2;      ReadCode[j]=ReadCode[j]<<1;    ReadCode[j]=ReadCode[j]|BitState_2;     if(P3_2==1) while(P3_2==1);    while(P3_2==0);             }  } ////////////////////////////////校验及运算数据/////////////////////////////////////     for(i=0;i<3;i++)     {        if((~(ReadCode[i]|0x55))&((ReadCode[i]&0x55)<<1)!=0x00)   goto kk;    //校验     }      GetCode=0x00;     for(i=0;i<8;i++)     {       GetCode |=((ReadCode[2]>>i)&(ReadCode[2]>>(i+1))&0x01<<i);             //运算     } //////////////////////////////////////////////////////////////////////////////////     delay_131();  delay_131();  delay_131();     delay_131();   kk: EX0=1; } 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
51单片机的串口收发通信C语言程序
51单片机万能红外遥控解码程序
基于proteus的51单片机开发实例(12)-数码管显示按键次数
基于8952单片机的红外解码(TC9012F编码)
单片机
51单片机外部中断的C51编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服