標(biāo)題: 請高手指教:hei51開發(fā)板無線解碼 [打印本頁]

作者: lspcdzx2012    時間: 2012-7-19 12:16
標(biāo)題: 請高手指教:hei51開發(fā)板無線解碼

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define time_value() {TH0=0x00; TL0=0x00;}
sbit io=P3^2; //無線接口
sbit P14=P1^4; //開LED燈
sbit P26=P2^6; //關(guān)數(shù)碼管
sbit P27=P2^7;
sbit P24=P2^4; //關(guān)點陣
uchar flag,flag_rev;
uint time0[25];
uint time1[25];
uchar disp_dat[3];
void init(void)
{
 IT0=1; //INT0
 EX0=1;
 EA=1;

 TMOD=0x01;
 time_value();
 TR0=0;

 P26=0;
 P24=0;
 P27=0;
 P14=0;
}
void int0_srv() interrupt 0
{
 TR0=1;
 flag=1;
 flag_rev=1;
 EA=0;
}
void main()
{   
 uchar value;
 uchar i,j;
 init(); 
 loop:
 if(flag_rev)
 {
  flag_rev=0;
  time_value();
  while(!io); //0   
  time0[0]=TH0*256+TL0;
  time_value();
  while(io);//1
  time1[0]=TH0*256+TL0;//同步碼  
  if((time1[0]+time0[0])>10000)
  {   
   for(i=1;i<25;i++)
   {
    time_value();
    while(!io);    
    time0=TH0*256+TL0;
    time_value();
    while(io);
    time1=TH0*256+TL0;       
   }
   TR0=0;
   for(i=0;i<3;i++)
   {
    value=0;
    for(j=1;j<9;j++)
    {
     value=value<<1;     
     if(time0[8*i+j]>700)//
     //if(time0[8*i+j]>time1[8*i+j])
     {
      value=value|0x01;
     }      
    }
    disp_dat=value;
   }
   //EA=1;
  }
  EA=1;
 } 
 while(1)
 {
  if(flag)
  {
   flag=0;
   goto loop;
  }
  //P0=disp_dat[2];
  switch(~disp_dat[2])
  {
   case 0x03:P0=0xfe;break;
      case 0x0c:P0=0xfd;break;
   case 0x30:P0=0xfb;break;
   case 0xc0:P0=0xf7;break;
   default:break;
  }
 }
}


作者: lspcdzx2012    時間: 2012-7-19 12:21
本程序解碼正常,我是想看看更好的解碼方法
作者: zzh2118    時間: 2020-10-13 12:00
這個程序 接收模塊是要加反向的吧




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1