51单片机通过中断接收命令

想通过上位机发送命令来控制单片机,通过接收中断把命令放入接收缓存,再判断缓存里是哪个命令。

想要实现这个操作,第一需要把正确的命令存入缓存,我的命令是以两个@@开始,以#结束,下面是命令接收代码: 

unsigned char rx_EN=0;//这里需要定义一个串口接收标志,用于判断包头包尾

void UART1_int (void) interrupt UART1_VECTOR
		{
			 if(RI)
				 {
						unsigned char res;
						RI = 0;
						res= SBUF;
						if(res=='@')
							 {
								RX1_Buffer[RX1_Cnt] = res;
								RX1_Cnt=1;
								if( RX1_Buffer[RX1_Cnt-1]=='@' && RX1_Buffer[RX1_Cnt]=='@' && RX1_Cnt<2)
										{//这里的意思是接收到两个@符号,判断为包头
										 rx_EN=1;
										}
								}
					 if(rx_EN==1)
							 {
								RX1_Buffer[RX1_Cnt++] = res;
								if(RX1_Buffer[RX1_Cnt-1] == '#')
									{//判断包尾
									
									 uart_cmd_flag=1;//值标志位
										rx_EN=0;
									}
							 }
					 if(RX1_Cnt >= UART1_BUF_LENGTH)
							 {//防止溢出
								 RX1_Cnt = 0;
								 rx_EN=0;
							 }
				}
		 if(TI)
			 {
				TI = 0;
				B_TX1_Busy = 0;
			 }
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老赵aaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值