⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receiver.c

📁 基于ST72324设计的汽车防盗器源程序
💻 C
字号:
/*######################################################################*/
#define __DEFINE_REGISTERS_STVD7_INCLUDE__
#include "ST72324BLK2.h"
#undef  __DEFINE_REGISTERS_STVD7_INCLUDE__
/*-----------------------------------------------------------------------*/
#define FlagLearn b4
extern BIT_CHAR Flag3;
extern unsigned char TempBuff0;
unsigned char  ReceiveCode,FlagRX,CodeLength;
unsigned int long CodeID0,CodeID1,ReceiveBuff;
unsigned char NLFOUT(unsigned int long code);
unsigned char Sample2Bit(unsigned int long code);
unsigned int long  DEncryKey= 0XC7E2DC58;
void Decode(void);
void Receive(void);
/*-----------------------------------------------------------------------*/
void Decode (void)
{
	unsigned int long RMKey;
	
	    //FlagRX&=~(StartingCheck+PositivePulse+F_Waiting+ContinueRX);
       CodeLength=32; 
			 RMKey=DEncryKey;
			 while(CodeLength--)
					{
						FlagRX=(unsigned char)(ReceiveBuff);
						ReceiveBuff>>=1;
						
						FlagRX+=NLFOUT(ReceiveBuff);
						FlagRX+=((unsigned char)RMKey);
						FlagRX+=(unsigned char)(ReceiveBuff>>16);
						FlagRX=(FlagRX&0X01);
						RMKey>>=1;
						if(FlagRX) ReceiveBuff|=0x80000000;
					}	
			 CodeLength=20;
   
}
/*------------------------------------------------------*/

unsigned char NLFOUT(unsigned int long code)
{
	unsigned char i=0,j;
	unsigned int long  temp=0x3e57ba6c;
	for(j=0;j<4;j++)
	{
	i|=((unsigned char)(code>>=6)&0x01);
	i<<=1;
  }
	i|=((unsigned char)(code>>=6)&0x01);
	temp>>=i;
	i=(unsigned char)temp;
  return (i);
}
/*------------------------------------------------------*/

unsigned char Sample2Bit(unsigned int long code)
{
	unsigned char i;
	i=((unsigned char)(code>>31)& 0x01)^((unsigned char)(code>>16)&0x01);
	return (i);
}	


/*------------------------------------------------------*/
void Receive(void)
{
     
//        if (TempBuff0<100)     /*200us ~800us*/  
          if (TempBuff0<70)     //560us 
             ReceiveBuff=((ReceiveBuff<<1)+1);
					else if (TempBuff0<175) /* if 800us~1400us ?*/
             ReceiveBuff=(ReceiveBuff<<1);
					else {CodeLength=20; FlagRX&=~EncrypCode;return;}
					     
					if(!(--CodeLength))  
						  { 
								if(FlagRX&EncrypCode)    //received code is encrypt code 
								  {
									 TBCR1=0;              //disable receive 	
								 	 FlagRX&=~EncrypCode;	
									 Decode();
									} 
							  else  
								  {
								ReceiveBuff&=0X00FFFFF;
							  CodeID0=0X1fdc; //for debug 
								if((ReceiveBuff==CodeID1)||(ReceiveBuff==CodeID0))  
									  {
									   CodeLength=32;
									   FlagRX|=EncrypCode;   //ready to receive encrypt code 
									  }
								else {CodeLength=20; FlagRX&=~EncrypCode; 	}
								  }
 							}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -