单片机串口通信:从串口接收多位数据保存到数组,发送多位数据到串口的代码

   日期:2021-03-31     浏览:177    评论:0    
核心提示:单片机串口通信中,接收多位数据到数组,发送多位数据的代码// 下面的代码用于:单片机的串口何上位机的串口进行通信,上位机发送的数据是“abcd”就开灯,如果是“abde”就关灯。/*************************************************************************************** 串口通信实验 *实现现象:下载程序后打开串口调试助手,将波特率设置为9600,选择发送的数

单片机串口通信中,接收多位数据到数组,发送多位数据的代码

// 下面的代码用于:单片机的串口何上位机的串口进行通信,上位机发送的数据是“abcd”就开灯,如果是“abde”就关灯。


#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include "string.h"			//用与字符串比较

sbit led=P2^0;		//定义灯对应的引脚

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

u8 receiveData[4];			//全局变量,用于接收串口数据
u8 usart_receive_flag=0;	//全局变量,用于判断4位数据是否接收完
u16 i=0;					//接收数据的序号自增


void UsartInit()
{ 
	SCON=0x50;			//设置为工作方式1
	TMOD=0x20;			//设置计数器工作方式2
	//PCON=0x80; //波特率加倍
	TH1=0xfd;				//计数器初始值设置,注意波特率是9600的
	TL1=0xfd;
	ES=1;						//打开接收中断
	EA=1;						//打开总中断
	TR1=1;					//打开计数器
}

//串口发送字符
void SendChar(char Char)
{ 
    SBUF=Char;
		while(!TI);
		TI=0;
}

//串口发送字符串
void SendString(char *p)
{ 
    while(*p!='\0')
    { 
			SendChar(*p);
			p++;
    }
}


void main()
{ 	
	UsartInit();  // 串口初始化
	while(1)
	{ 
		
		
		
		if(usart_receive_flag==1&&(strcmp("abcd",receiveData)==0))			//如果接收完数据,并且比较数组符合
		{ 
			led=0;					//开灯
			//strcpy(receiveData,"\0");
			SendString("abcd have received!---\n");			//提示对方串口收到数据
			usart_receive_flag=0;												//将数据接收完4位的标志位清0,用于下次判断是否接收完4位
			receiveData[0]='\0';												//我这里对数据清空了
		}
		else if(usart_receive_flag==1&&(strcmp("abce",receiveData)==0))
		{ 
			led=1;					//关灯
			//strcpy(receiveData,"\0");
			SendString("abce have received!---\n");	
			usart_receive_flag=0;
			receiveData[0]='\0';
		}
	}		
}


void Usart() interrupt 4
{ 

		if(RI)										//如果是串口接收到一帧数据,就会产生中断,RI标志变为1
		{ 
			RI = 0;									//手动将标志置0,方便下次判断
			receiveData[i++]=SBUF;	//出去接收到的数据
							
			if(i==4)								//4位数据接收完
			{ 
				i=0;
				usart_receive_flag=1;		//标志位用于,只有当4位数据接收完,主函数才进行数据比较
			}
		}
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服