📄 demo.c
字号:
/* 串行通信中进行奇偶校验 */
void check_demo_send(unsigned char *buf)
{
unsigned char ecc = 0; // 该变量用于保存校验位
while(*buf == 0) // 检测到'\0'表示数据结束
{
TI = 0;
ecc = ecc^(*buf); // 计算校验和
SBUF = *buf;
while(!TI);
buf++;
}
SBUf = ecc; // 发送校验字节
while(!TI);
SBUF = 0x01; // 发送帧结束标志
while(!TI);
}
uchar check_demo_recv(unsigned char *buf)
{
unsigned char ecc = 0; // 该变量用于计算校验字节
while(1)
{
RI = 0; // 开始接收数据
while(!RI);
*buf= SBUF;
if(tmp = 0x01) // 如果帧结束,将缓冲区最后一个字节置0,表示数据结束
{
buf = 0;
break;
}
ecc = ecc^(*buf) // 计算校验字节
}
if(ecc != 0) // 如果计算的校验字节不为0,表示数据错误,程序返回0
return 0;
return 1; // 程序返回1表示接收数据正确
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -