📄 点对点通信 (从单片机).c
字号:
#include<reg51.h>
unsigned char data Rdata[10];
unsigned char data cnt=0,sum=0,CM;
unsigned char data linksignal,resendsignal;
void delay1s(void)
{
unsigned char i,j,k;
for(k=100;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
TH1=0xf4;
TL1=0xf4;
EA=0;
TR1=1;
TMOD=0x20;
PCON=0x00;
SCON=0x50;
//等待从单片机联系信号0xE0,并返回应答信号0xE1
do
{
while(RI==0);
RI=0;
linksignal=SBUF;
}
while(linksignal!=0xE0);
SBUF=0xE1;
while(TI==0);
TI=0;
//从单片机接收数据,并验证校验和
do
{
do
{
while(RI==0);
RI=0;
Rdata[cnt]=SBUF;
sum=sum+Rdata[cnt];
cnt++;
}
while(cnt<10);
while(RI==0);
RI=0;
CM=SBUF;
if(sum!=CM)
{
resendsignal=1;
}
else
{
resendsignal=0;
}
SBUF=resendsignal;
while(TI==0);
TI=0;
if(resendsignal==1)
{
sum=0;
cnt=0;
}
}
while(resendsignal==1);
while(1)
{
for(cnt=0;cnt<10;cnt++)
{
P2=Rdata[cnt];
delay1s();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -