📄 compression.txt
字号:
void RXalgorithm(void)
{
static short RXI1;
static short RXI2;
static unsigned char output_byte;
static unsigned char output_byte_mask;
static unsigned char last_three_outputs;
bit EAstate;
USHORT value;
if(INIT_RX_ALGORITHM)
{
RXI1 = 0;
RXI2 = 0;
output_byte = 0;
output_byte_mask = 0x80;
last_three_outputs = 1;
INIT_RX_ALGORITHM = 0;
}
EAstate=EA;
EA = 0;
value.S = ADCRXFIFO_Pull();
EA = EAstate;
last_three_outputs<<=1;
if (((short)value.S - (RXI1>>I1_TIMECONST)) > 0)
{
output_byte |= output_byte_mask;
last_three_outputs |= 0x01;
}
if ( ((last_three_outputs & 0x07) == 0x07) ||
((last_three_outputs & 0x07) == 0x00))
{
RXI2 += DELTAMAX;
}
else
{
if (RXI2 != 0)
RXI2 -= DELTAMAX;
}
if ((last_three_outputs & 0x01) == 1)
{
RXI1 += ((RXI2>>I2_TIMECONST) + DELTAMIN);
}
else
RXI1 -= ((RXI2>>I2_TIMECONST) + DELTAMIN);
if (output_byte_mask == 1)
{
output_byte_mask = 0x80;
EAstate=EA;
EA = 0;
UTXFIFO_Push(output_byte);
EA = EAstate;
if ((UART_MODE == TX_MODE) && !(TX_IN_PROGRESS) &&
!(TRANSITION_IN_PROGRESS) &&
(UTXFIFO.COUNT >= DATA_BYTES_PER_TRANSMISSION))
{
TX_IN_PROGRESS = 1;
TI0 = 1;
}
output_byte = 0;
}
else
{
output_byte_mask >>= 1;
EA = EAstate;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -