蓝桥杯单片机 ——接收字符、字符串

这篇具有很好参考价值的文章主要介绍了蓝桥杯单片机 ——接收字符、字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1定时器中断方法 (完整代码在文末!!)

 2.定时的方法(推荐):蓝桥杯单片机第十四届第三次模拟题_让我来瞅一瞅的博客-CSDN博客

  • 定时器0——定时功能

       判断接受数据是否完成 

  • 定时器1——串口功能

          接受、发送数据

一、主机接收下位机(client)-———发送的字符、字符串

//====================接受函数===================================
void ServiceUart() interrupt 4 
{
	if(RI==1)
	{
		RI=0;
		client[R_I++]=SBUF;
	}
}

二、定时器0定时、判断数据是否完成接受

   if(TF0==1)   //10ms溢出接受字符、字符串完成
	  {
			TF0=0;    
			if(R_I !=6)  //R_I计数超过或者少于6  “return” 
			{
				for(i=0;i<7;i++)
				client[i++]=0;  //数组置0
			 }
      }

三、判断接受到的字符、字符串

if((client[0]=='r')&&(client[1]=='e')&&(client[2]=='t')&&(client[3]=='u')&& (client[4]=='r')&&(client[5]=='n')) 
  {  
   Sendstring("点赞收藏老穆雷\r\n"); } //向下位机发送字符串
  }

 完整代码

#include <STC15F2K60S2.H>
unsigned char client[6]; //接受数据的数组长度为6   "return"
unsigned char R_I=0;      //接受计数{接受到了第几个}
unsigned char clientflag=0;  //接受字符完成标志
unsigned char i;
//====================初始化函数===========================
void Timer0Init()		//10ms@12.000MHz(没有中断、只定时溢出、16位不自动重装)
{

	AUXR &= 0x7F;			//定时器时钟12T模式
	TMOD &= 0xF0;			//设置定时器模式
	TMOD |= 0x01;			//设置定时器模式
	TL0 = 0xF0;				//设置定时初始值
	TH0 = 0xD8;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;				//定时器0开始计时
}
void Inituart()//串口1定时器1,16位自动重装
{
	Timer0Init();
	SCON = 0x50;	//8位数据,可变波特率
	AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12T
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设定定时器1为16位自动重装方式
	TL1 = 0xE6;		//设定定时初值
	TH1 = 0xFF;		//设定定时初值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
	EA=1;ES=1;
}
//=======================发送函数=============================
void SendByte(unsigned char dat)
{
	SBUF=dat;
	while(TI==0);
	TI=0;
}
void Sendstring( unsigned char *str)
{
	while(*str !='\0')
	{
		SendByte(*str++);
	}
}
//====================接受函数===================================
void ServiceUart() interrupt 4 
{
	if(RI==1)
	{
		RI=0;
		client[R_I++]=SBUF;
	}
}
//==================主函数===================================
void main()
{
	Inituart();
	Timer0Init();	
	while(1)
	{
	   if(TF0==1)   //10ms溢出接受字符、字符串完成
	  {
			  TF0=0;    
			if(R_I !=6)  //R_I计数超过或者少于6  “return” 
			{
				for(i=0;i<7;i++)
				client[i++]=0;  //数组置0
			 }
		else        //R_I计数刚好等于6
		{
			client[R_I]='\0';  //在return第6位放置‘\0’表示字符串结束
	    
            if((client[0]=='r')&&(client[1]=='e')&&(client[2]=='t')&&(client[3]=='u')&& 
            (client[4]=='r')&&(client[5]=='n')) //判断接受的字符串
			 {
              Sendstring("点赞收藏老穆雷\r\n"); } //向下位机发送字符串
	         }
			R_I=0;  //计数置0
        }
    }
}

 蓝桥杯单片机 ——接收字符、字符串

常见问题 

1.接受、发送 均为文本模式

2.直接发送数据

3.怎么判断下位机发出的回车

 if((client[0]=='\r')  '\r'为回车

4.怎么判断单个字符

unsigned char client[6]; //接受数据的数组”return为6个字符

数组位置为 0、1、2、3、4、5、6“ "第6位放置‘\0’表示字符串结束

unsigned char client[1]; //接受数据的数组”为1个字符

数组位置为 0、1“ "第1位放置‘\0’表示字符接受

5.下位机的命令需要区分大小写

5.常见题型

蓝桥杯单片机 ——接收字符、字符串

蓝桥杯单片机 ——接收字符、字符串文章来源地址https://www.toymoban.com/news/detail-415976.html

到了这里,关于蓝桥杯单片机 ——接收字符、字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ARM_uart_发送接收字符 and 发送接收字符串

    ARM_uart_发送接收字符 and 发送接收字符串

      include/uart4.h   src/yart4.c   main.c  hal_put_char(hal_get_char()+1); hal_put_string( hal_get_string());  please input 到下一行 结果就是    

    2024年02月13日
    浏览(7)
  • SpringCloudStreamkafka接收jsonarray字符串失败

    kafka作为消息队列,作为前端设备数据到后端消费的渠道,也被多个不同微服务消费 一个服务与前端边缘计算设备建立socket消息,接收实时交通事件推送,再将事件发送到kafka里面。此处使用的是Spring Kafka,普通的将事件列表数据转化为字符串后发送 事件信息,需要入库和实

    2024年02月07日
    浏览(8)
  • c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

    c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

         单片机一般采用中断方式接受数据,这样便于及时处理 其中发送数据段采用的是查询方式,接收端采用了中断方式, 要注意的地方有: 在中断处理函数int_0()内,处理数据前要先关闭中断,否则中断可能会不断传过来, EA=0; 然后退出中断处理函数前恢复中断处理能力:

    2024年02月13日
    浏览(48)
  • 蓝桥杯 java 重复字符串

    2024年01月18日
    浏览(11)
  • 蓝桥杯单片机客观题之数电学习(深夜学习——单片机)

    蓝桥杯单片机客观题之数电学习(深夜学习——单片机)

    1、数字:\\\'0\\\'——0x30 2、字母:\\\'a\\\'——0x61;\\\'A\\\'——0x41 1、首位不变 2、从左到右,加上每一对相邻的二进制编码位,从而得到下一个格雷码位,舍去进位  1、首位不变 2、新生成的二进制码加上下一位格雷码得到下一位二进制码 1、小数部分的转换方法应该是先得到的是高位,后

    2023年04月09日
    浏览(43)
  • (蓝桥杯每日一题)字符串排序

    (蓝桥杯每日一题)字符串排序

    本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如,LANQIAO 排列后为AAILNOQ 又如, GOODGOODSTUDYDAYDAYUP 排后为AADDDDDGGOOOOPSTUUYYY 请问对于以下字符串,排列之后字符串是什么? WHERETHEREISA

    2024年01月21日
    浏览(17)
  • 【蓝桥杯算法题】字符串匹配算法

    这段代码实现了一个过滤字符串中非字母字符的功能,并统计字母个数。 首先,在主函数中,定义一个长度为100的字符数组str,用fgets函数从标准输入获取用户输入的字符串。 然后调用filterLetters函数,利用指针p1和p2遍历字符串中的每个字符,判断是否为字母字符, 若是,则

    2024年02月08日
    浏览(12)
  • 蓝桥杯单片机(三)矩阵按键

    蓝桥杯单片机(三)矩阵按键

    上章说了独立按键 蓝桥杯单片机(二)独立按键 这章说一下矩阵按键 所谓矩阵按键,就是每一个按键的两端都同时由单片机的IO口进行控制,如原理图所示,上图要想使用矩阵按键,就需要使用跳线帽将排针2引脚和1引脚连接在一起。 连接好了以后,这四排四列就可以看成四列

    2024年02月11日
    浏览(15)
  • 蓝桥杯单片机(六)PWM

    蓝桥杯单片机(六)PWM

    本文内出现的函数在其他文章有讲: 蓝桥杯单片机(一)流水灯 蓝桥杯单片机(二)独立按键 蓝桥杯单片机(四)动态数码管 蓝桥杯单片机(五)定时器 如图所示,有三列方波在图中,所谓PWM,就是指上述图中的方波,波形在高电平和低电平不断变化,只不过PWM的占空比可变,上图就

    2023年04月14日
    浏览(11)
  • 蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    1.填空题 (2)不同的地址范围: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.选择题 (3)模电——》多级放大电路 (6)DS18B20 (7)模电——》二极管  (8)单片机      

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包