点对点通信 (从单片机).c

来自「在keilc和proteus下进行点对点通信的开发模拟」· C语言 代码 · 共 80 行

C
80
字号
#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 + =
减小字号Ctrl + -
显示快捷键?