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

📄 serise.c

📁 两块51单片机通过串口相互通信 其中有握手协议
💻 C
字号:
#include "reg51.h"
#include "string.h"
#include "display.h"

#define rdy 0x06
#define busy 0x15
#define ok 0x01
#define succ 0x0f
#define err 0xf0

unsigned char data data_buffer[11]_at_ 0x60;
unsigned char rch=0x00;
unsigned int num=0;

void init_serialcomm(void)
{
    SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD  = 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
    PCON  = 0x80;       //SMOD=1; 
    TH1   = 250;       //Baud:4800  fosc=11.0592MHz 
    TL1   = 250;       //Enable Serial Interrupt 
    TR1   = 1;          // timer 1 run 
    EA    = 1;
	ES    = 0;
    RI    = 0;
}

//向串口发送一个字符 
void send_char_com(unsigned char sch)  
  {
    SBUF=sch;
    while(TI==0);
    TI=0;
   
  }
recieve_char_com(void)
  {
    while(!RI);
    rch=SBUF;
    RI=0;
    return rch;
  }

recievdata(void) interrupt 4 
  {
    data_buffer[num]=SBUF;
    RI=0;
	num++;
	if(num>=11)
	ES=0;
	return;
  }

main()
{
  unsigned int a=0x80,b=0,display=1,totle=0;
  unsigned int i,j,k,n;
  unsigned char com=0x00,test=0x00;
  init_serialcomm();  //初始化串口   
  while(com!=0x06)
  {com=recieve_char_com();}
  send_char_com(ok);
  ES=1; 
  delayms(1200);
  test=data_buffer[0];
  for(n=1;n<10;n++)
  test=test^data_buffer[n];
  if(test=data_buffer[10])
  send_char_com(succ);
  else
  send_char_com(err);


/*for(j=0;j<10;j++) //十六进制数转换为十进制 
{
  for(i=0;i<8;i++)
   {
     b=(data_buffer[j]&a);
     if(b==a)
      {
        for(k=0;k<7-i;k++)
          {
           display=display*2;
          }
        totle=totle+display;
        display=1;
        a=a>>1;
     }
    else
     {
       a=a>>1;
       continue;
     }
    }
  data_buffer[j]=totle;
  totle=0;
}

*/
 while(1)
 {
  for(i=0;i<11;i++)   
   {
     for(j=0;j<40;j++)
     {
	  counter(data_buffer[i]);
	 }
   }
 }
}

⌨️ 快捷键说明

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