📄 client.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 + -