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

📄 485通信程序.c

📁 单片机数据通讯典型应用(光盘内容)
💻 C
字号:
/************************************接收字节子程序返回值:串口接收到的字节************************************/uchar Receive_Data(void){	RI=0;	while(!RI)	{	   WDI=0;WDI=1;//清看门狗	}	RI=0;	ACC=SBUF;	return ACC;}/*********************************************** 串口发送一个字节函数入口参数: 待发送数据************************************************/void Send_Data(uchar Serial_data){  	TI=0;	SBUF=Serial_data;	while(!TI)	{		WDI=0;WDI=1;//清看门狗	}	TI=0;}/************************************************接收一帧数据子程序入口参数:数组s,用于存储收到的数据返回值:若接收正确,返回真值;否则返回假**************************************************/bit Receive_One(uchar *s){	uchar CS=0x00,Serial_Data;	uchar i;	WDI=0;WDI=1;//清看门狗	RI=0;	Serial_Data=SBUF;	if(Serial_Data!=0xf1)		return 0;	do{		Serial_Data=Receive_Data();	}while(Serial_Data==0xf1);	if(Serial_Data!=0x68)		return 0;	CS+=0x68;	s[0]=Receive_Data();//发送来的数据长度也存储,便于转发	CS+=s[0];	WDI=0;WDI=1;//清看门狗	for(i=1;i<=*s;i++)	{		WDI=0;WDI=1;//清看门狗		*(s+i)=Receive_Data();		CS+=*(s+i);	}	if(CS!=Receive_Data())		return 0;	if(Receive_Data()!=0xfa)		return 0;	if(s[2]!=Address)///判断是否是本检测分机地址号		return 0;	return 1;}/***********************************************               串口接收中断子程序功能: 接收来自PC机的数据包************************************************/void RXD_Int(void) interrupt 4 using 1{	if(RI)		CY=Receive_One(Data_Buffer);	if(CY)	{		Command_Send=true;	}}/***********************************************               串口发送一帧数据子程序入口参数:待发送的数据帧,保存在数组s中************************************************/void Send_One(uchar *s){	uchar CS=0x68;	uchar i;		WDI=0;WDI=1;//清看门狗	CTR_485=1;	Send_Data(0xf1);	Send_Data(0xf1);	Send_Data(0x68);	Send_Data(s[0]);	CS=CS+s[0];	for(i=1;i<=s[0];i++)	{		WDI=0;WDI=1;//清看门狗		Send_Data(s[i]);		CS=CS+s[i];	}	Send_Data(CS);	Send_Data(0xfa);	CTR_485=0;}/***********************************************               命令处理子程序收到PC机的命令后,形成数据帧并向PC发送入口参数:采集到的环境湿度值************************************************/void Send_RH(uchar RH){	uchar dat[10];		dat[0]=4;	dat[1]=0x5a;	dat[2]=Address;	dat[3]=RH;	Send_One(dat);}

⌨️ 快捷键说明

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