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

📄 ppcomun.c

📁 51单片机双机通讯程序
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define TR 1						  //发送接收差别值
uchar idata buf[10];
uchar pf;

void init(void)						 //串口初始化
{
 	TMOD=0X20;						 //T/C1定时器1,定时方式2
	TH1=0xe8;						 //设定波特率1200
	TL1=0xe8;
	PCON=0x00;
	TR1=1;							 //启动T/C1
	SCON=0x50;						 //串行口工作于方式1
}

void send(uchar idata*d)
{
 	uchar i;
	do{
	  	SBUF=0xaa;					 //A机发送联络信号aa
	  	while(TI==0);				 //TI为0说明不发送,在这里等待发送
		TI=0;						 //发送完毕则清发送标准
		while(RI==0);				 //等待B机回答
		RI=0;						 //回答完毕则清回答标准
	  }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;
	   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);

	  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;
		if((SBUF^pf)==0)
		{
		 	SBUF=0X00;break ;
		}
		else
		{
		 	SBUF=0XFF;
			while(TI==0);TI=0;
		}

	  }
}

void main(void)
{
 	init();
	if(TI==0)
	{
	 send(buf);
	}
	else
	{
	 receive(buf);
	}
}

⌨️ 快捷键说明

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