📄 receiveb.c
字号:
#include<reg52.h>
#define uchar unsigned char
uchar idata buf[10];
uchar CheckSum; //检验和
void main(void)
{
uchar i;
SCON = 0x50; //设置串行口: 方式 1, 8位UART, 允许接收
TMOD |= 0x20; //设置定时器T1, 方式 2, 8位自动重装
PCON =0x80; //设置SMOD=1
TL1 =0xF4; //波特率4800bit/s,初值
TH1 =0xF4;
TR1 = 1; //启动定时器T1
do
{
}while(RI==0);
RI=0;
while((SBUF^0xAB)!=0) //判断A机是否发出请求
SBUF=0xBA; //发送应答信号"BA"
while(TI==0); //等待发送结束
TI=0;
while(1)
{
CheckSum=0; //清校验和
for(i=0;i<10;i++)
{
while(RI==0);
RI=0;
buf[i]=SBUF; //接收一个数据
CheckSum+=buf[i]; //求校验和
}
while(RI==0);
RI=0; //接收A机校验和
if((SBUF^CheckSum)==0) //比较检验和
{
SBUF=0x00;
break;
} //校验和相同则发"00"
else
{
SBUF=0xEE; //出错发"EE",重新接收
while(TI==0);
TI=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -