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

📄 serise.c

📁 两块51单片机通过串口相互通信 其中有握手协议
💻 C
字号:

#include "reg51.h"
#include "string.h"
#include "intrins.h" 
#include "display.h"

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

unsigned char sentdata[11]={0xcc,0x3d,0x12,0x4e,0x3f,0x55,0x16,0x37,0x3a,0x29,0x00};
unsigned char re=0x00;

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:9600  fosc=11.0592MHz 
    TL1   = 250;       //Enable Serial Interrupt 
    TR1   = 1;          // timer 1 run 
    EA=1;
    ES=0;
    TI=1;
}
void sent_char_com(unsigned char ch) 
{   
    SBUF=ch;
    while(!TI)
	;
    TI=0;    
}

reciev_char_com(void)
  {
    while(!RI);
    re=SBUF;
    RI=0;
	return re;
  }

/*void send_string_com(unsigned char *str,unsigned int num)
{
    unsigned int k=0;
    for(k=0;k<num;k++)
    sent_char_com(*(str + k));    
}

*/
main()
{ 
  int i,n;
  unsigned char com=0x00;
  init_serialcomm();//初始化串口
  sentdata[10]=sentdata[0];
  for(n=1;n<10;n++)
  {sentdata[10]=sentdata[10]^sentdata[n];} 
  sent_char_com(rdy);
  while(com!=ok)
  {
    com=reciev_char_com();
  }
  
  delayms(100);
do
 {
  for(i=0;i<11;i++)
    {
      sent_char_com(sentdata[i]);
      delayms(100);
    } 
 }while(reciev_char_com()==0xf0);

 while(1)
 counter(re);
  
}

⌨️ 快捷键说明

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