蓝桥杯决赛04——串口进阶

蓝桥杯决赛04——串口进阶,第1张

有了上一节的基础,我们已经能够通过串口发送或者接受一个字符,但是在比赛中肯定不会只让你仅仅发送接受一个字符,所以这一篇就介绍一下如何一次接受或者是发送多个字符。

1.接收

在比赛中通常有这样的需求,当上位机发送一定的字符串后,单片机开始向上位机发送数据,因此我们需要实现的是,接受一串字符串,并进行判断,然后再执行一定的 *** 作,我们先看一下代码。

unsigned char code passwsd[] = "AAASSS";
	if(RI){
		  	RI = 0;
			if(passwsd[i] == SBUF ) i++;			 	
			else i = 0;	
	}
 	if(i >=6 ) {	
	send(word, strlen(word)); // 发送字符串的函数,下面会介绍
	  i = 0;	}

应该很容易看懂,判断流程:
1. 接受到第一位数据,判断是否正确,如果正确开始判断下一位,如果不正确重新从第一位开始判断
2. 开始判断第二位数据,和第一位数据的判断方式相同
3. 如果每一位都正确,那么不就是实现了吗,然后执行相关的 *** 作。

2.接收

其实和发送的流程一样,每一次发送一位数据,那么一个字符串分成一位位一位位的发送就行了。

void send(unsigned char *dat,unsigned int len){
		while(len--){
		SBUF = *dat;
		while(!TI);
	   	dat++;
		}
}

这里需要考察一下c语言学的好不好, 传入的是字符串的首地址,和字符串的长度,dat++ 表示指向下一个字节的地址,然后通过以上的代码我们是不是就实现了发送一定长度的字符串对吧。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/875478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存