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

📄 master.c

📁 利用51单片机实现串口多机通信的实验程序
💻 C
字号:
#include<reg51.h>
sbit RE_DE P1^0;
#define COUNT 10
#define Slaver_NUM 10
unsigned char bdata flag;
sbit time_over_flag=flag^0;
unsigned char buffer[COUNT];
unsigned char point;
unsigned char Slave_AD[Slave_NUM];
unsigned char ADD_num;
unsigned char idata count_10ms;.

//  UART_init()串口初始化函数

void UART_init()
{
SCON=0xF8;//设置串口工作方式为3,打开接收允许,TB8=1
TMOD=0x21;
TR=1;     //启动timer1计数
ES=1;
PS=1;

TH1=0xFA; //定时高   波特率:4800bps
TL1=0xFA;//定时低

ET1=0;   //T1中断禁止
}

// timer0_init() 初始化T0

void timer0_init()
{
time_over_flag=0;
count_10ms=0;
ADD_num=0;
TL0=0x0F0;
TH0=0x0D8;
ET0=1;    //T0中断允许
}


//com_interrup()串口接收中断处理函数


com_interrup(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
if(RI)
{RI=0;
 RECEIVR_buffer=SBUF;
 if(point==0)
 {
  if(RECEIVE_buffer=0xFE)
  {
  buffer[point++]=RECEIVR_buffer;
  }
 else
  { 
  point=0;
  }
 }
 else if(point>0&&point<10)
 {
  buffer[point++]=RECEIVR_buffer;
 }
 else if(point==10)
 {
  if(RECEIVR_buffer==0xEF)
  {
   buffer[point]=RECEIVR_buffer;
   Slave_AD[ADD_num++]=buffer[2];
  }
 }
  else{point=0}
 else{point=0}
 if(TI)
	 {
	 TI=0;
	 }
}

//timer0_interrup()T0中断服务程序


timer0_interrup(void) interrupt 1 using 2
	{
	count_10ms++;
	if(count_10ms==50)
		{
		ET0=0;//T0中断关闭
		TR0=0;//停止T0
		timer_over_flag=1;
		count_10ms=0x00;
		}
	else
		{
		TL0=0x0F0;
		TH0=0x0D8;
		}
	}


//COM_send()串口发送函数

void COM_send(void)
	{
	RE_DE=1;
	for(point=0;point<=10,TI=1;point++)
		{
		SBUF=buffer[point];
		TI=0;
		}
	RE_DE=0;
	}

	//write_buffer()写发送缓冲区数据

void write_buffer(unsigned char slaver_add)
	{
	unsigned char i;
	TB8=1;
	buffer[0]=0xFE;
	buffer[1]=slaver_add;
	for(i=2;i<9;i++)
		{
		buffer[i]=send_data[i-2];
		}
	buffer[9]=0xEF;
	}


//主函数
void main(void)
	{
	unsigned i=0;
	UART_init();
	timer0_init();
	EA=1;
	do
	{
		write_buffer(i++);
		COM_send();
		timer0_init();
	}
	while (time_over_flag&&i<10);
	}

⌨️ 快捷键说明

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