⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppcomun.c

📁 51常用子程序-4.0M.zip
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define TR 1
uchar idata buf[10];
uchar pf;
void init(void)
{TMOD=0X20;                    /*定时方式2*/
TH1=0XE8;                      /*波特率*/
TL1=0XE8;
PCON=0X00;
TR1=1;
SCON=0X50;
}
void send(uchar idata *d)
{uchar i;
 do{SBUF=0XAA;                 /*发送联络信号*/
    while(TI==0);TI=0;         /*等待发送出去*/
    while(RI==0);RI=0;         /*等待B机回答*/
    }while((SBUF^0xbb)!=0);    /*B机未准备好,继续联络*/
 do{pf=0;                          /*清校验和*/
    for(i=0;i<16;i++)              
       {SBUF=d[i];                 
        pf+=d[i];                  /*求校验和*/
        while(TI==0);TI=0;         
        }
    SBUF=pf;                       /*发送校验和,并等待B机回答*/
    while(TI==0);TI=0;
    while(RI==0);RI=0;
   }while(SBUF!=0);                /*回答出错,重发*/
}
void receive(uchar idata *d)
{ uchar i;
  do{while(RI==0);RI=0;}
  while((SBUF^0xaa)!=0);           /*判断A机有无请求*/
  SBUF=0xbb;                       /*发应答信号*/
  while(TI==0);TI=0;
  while(1)
      {pf=0;                       /*清校验和*/
       for(i=0;i<16;i++)
          {while(RI==0);RI=0;
           d[i]=SBUF;
           pf+=d[i];               /*求检验和*/
          }
       while(RI==0);RI=0;          /*接收A机校验和*/
       if((SBUF^pf)==0)            /*比较校验和*/    
         {SBUF=0x00;break;}        /*相同发“00”*/
       else{SBUF=0xff;             /*出错发“FF”,重新接收*/
            while(TI==0);TI=0;
           }
      }
}
void main(void)
{
 init();
 if(TR==0){send(buf);}
 else{receive(buf);}
}
    
    
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -