准备蓝桥杯国赛的时候刷到往届真题,其中有一个使用串口来接收字符串指令的要求。当时没写出来,就把它单独拎出来解决。写了一两天终于是写出了一个简短易懂的程序。
拟定题目要求
*使用串口收发数据。接收两个指令:指令一:ST\r\n,指令二:PARE\r\n
当串口接收到指令一则回复当前DS18B20的温度值(小数点后保留两位)和超声波距离值。格式:$距离值,温度值\r\n.
接收到指令二回复当前设置的温度参数和距离参数,格式:#距离参数,温度参数\r\n.
51串口的配置啥的我就不说了,重点讲解如何处理接受的字符串,以及如何发送字符串数据。
串口发送字符串
#include“stc15f2k60s2.h”
#include<stdio.h>
//一个串口发送数据的函数,把数据给SBUF等待发送完成即可。
void SendDat(unsigned char data)
{
SBUF=data;
while(TI==0);
TI=0;
}
//因为回传数据,建议使用printf函数,毕竟简单又实用,不用白不用。
//要想让printf打印数据给串口,需要改变它打印的方向,即重定向
//printf打印数据调用的是c库函数putchar
char putchar(char ch)
{
SendDat(ch);//打印数据到SBUF
return ch;
}
对接收字符指令进行处理
void Usart() interrupt 4