📄 receiver.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 + -