📄 function.c
字号:
#define FUNC_GLOBALS
#include <variable.H>
unsigned char Send_To_SndBuffer(unsigned char Port, unsigned char len, unsigned char xdata *buff)
{
struct Serial_snd xdata *Com;
unsigned char data i;
Com = Snd + Port;
if(Com->Tail < Com->Head) {
if(((unsigned int)Com->Tail + len) >= Com->Head)
return 0;
else {
for(i = 0; i < len; i++)
Com->mData[Com->Tail++]=buff[i];
return 1;
}
}
else if (((unsigned int)LEN_SND - Com->Tail + Com->Head) > len) {
for(i = 0; i < len; i++) {
Com->mData[Com->Tail++] = buff[i];
#if (LEN_SND !=256)
Com->Tail = Com->Tail % LEN_SND;
#endif
}
return 1;
}
else
return 0;
}
void MakeCrcTable(void)
{
unsigned char data j;
unsigned int data i, CRC;
for (i = 0; i< 256; i++) {
CRC = i;
for (j = 0; j<8; j++) {
if (CRC & 1)
CRC = (CRC >> 1) ^ 0xA001; // 0x8005
else
CRC >>=1;
}
crctable[i] = CRC;
}
}
void SendStart(unsigned char Port)
{
if (!Snd[Port].Sending) {
Snd[Port].Sending = 1;
switch(Port) {
case 0:
RS485SndDelTime = DELAYSEND;
TR = 1;
break;
case 1:
D_SER1 = Snd[1].mData[Snd[1].Head++];
Snd[1].Head = Snd[1].Head % LEN_SND;
IER1 = 0x03; // bit0: receive valid; bit1: send buffer empty
break;
case 2:
D_SER2 = Snd[2].mData[Snd[2].Head++];
Snd[2].Head = Snd[2].Head % LEN_SND;
IER2 = 0x03; // bit0: receive valid; bit1: send buffer empty
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -