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

📄 client.c

📁 主从式总线型SIO系统(多机双向通信)
💻 C
字号:
//***********从机1代码*******8

#include <reg51.h>
#include "Funtion_T.h"
#include "Clicent_Setting.h"

char TTemp;
int ss=2;
int num=1;
void delay_50ms()
{
 int s=5000;
 while(--s);
}
//************
void Serial_Init(void)	//串口初始化
{	
	                //SCON=0xf0;
	SCON = 0x50;			// 设定串行口工作方式 
	PCON =0x80;            // 波特率倍增 SMOD=1
	TMOD=0x20;
	TH1 = 0xf3;				// 6MHZ 波特率2400
	TL1 = 0xf3;
	TR1=1;
	ES=1;				  
}

//************
void Interrupt_Init(void)	//中断初始化
{
	EA=1;
	EX0=1;
	
}

//*************
void interrupt4(void) interrupt 4 using 2	  //串口中断触发
{
	EA=0;
	if(TI)
	 TI=0;
	if(RI)
	{
		RI=0;
		if(SBUF==STD1)  //如果接收到主机的地址码
		{
			SBUF=Address_Respond1;		//发送地址响应码
			while(!TI);		//必须
			TI=0;
			SCON=0xd0;		//并且把SCON中的SM2置0,允许响应数据中断			
		}

		if(SBUF==Clicent_Command1)		//如果接收到主机的启动的命令
		{	
			SBUF=Command_Respond1;		//发送响应码返回给主机
			while(!TI);		//必须
			TI=0;
		}

		if(SBUF==Clicent_Data_Command1)		 //如果接受到主机的发送转化结果的命令
		{
			SBUF=Data_Command_Respond1;//发送响应码
			while(!TI);	//必须
			TI=0;
		}
		if(SBUF==Clicent_Receive_Data1)
		{
		 SBUF=Data_Receive_Respone1;
		 while(!TI);	//必须
		 TI=0;

		while(!RI);		//接收数据 测试
		RI=0;
		TTemp=SBUF;
		P1=TTemp;

 		SCON=0xf0;	   //并且把SCON中的SM2置1

		}
		if(SBUF==Clicent_Send_Data1)			  //发送数据
		{

			SBUF=DS18B20_Data[0];	//发送温度数据
			while(!TI);
			TI=0;
			SBUF=DS18B20_Data[1];
			while(!TI);
			TI=0;
			SCON=0xf0;
		}
		
	}
	EA=1;
}

//***************
void DS18B20_Run(void)
{
 DS18B20_Read_Temperature();
}
//***************/
void main(void)
{

	P1=0;
	Interrupt_Init();	
	Serial_Init();
	
	while(1)
	{
	delay_50ms();	//延时50ms左右读一次温度,读得太多太快可能会出现乱数
	DS18B20_Run();
	delay_50ms();	//延时50ms左右读一次温度,读得太多太快可能会出现乱数
	}
}

⌨️ 快捷键说明

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