单片机串口通信问题
if(UART_buff=='1')LED1=0;if(UART_buff=='2')LED2=0;if(UART_buff=="12")LED12=0;如上,在串口助手...
if(UART_buff == '1')
LED1 = 0;
if(UART_buff == '2')
LED2= 0;
if(UART_buff == "12")
LED12= 0;
如上,在串口助手中发送12,会点亮LED2 ,而不是LED12,请问怎么解决 展开
LED1 = 0;
if(UART_buff == '2')
LED2= 0;
if(UART_buff == "12")
LED12= 0;
如上,在串口助手中发送12,会点亮LED2 ,而不是LED12,请问怎么解决 展开
5个回答
展开全部
if(UART_buff == "12")
LED12= 0;
这个在串口的发送的时候,它会先发送字符‘1’ ;然后在发送字符‘2’;它发了两次,
所以你发12的时候,他最后显示的是LED2.这就是原因;
定义一个“12”,在存储的时候它会存:如char A[2]={'1' , '2' };
解决办法:可以判断:
if(UART_buff == "3")
LED12= 0;
或者使用十六进制发送模式;
if(UART_buff == 0x01)
LED1 = 0;
if(UART_buff ==0x02)
LED2= 0;
if(UART_buff == 0x12)
LED12= 0;
LED12= 0;
这个在串口的发送的时候,它会先发送字符‘1’ ;然后在发送字符‘2’;它发了两次,
所以你发12的时候,他最后显示的是LED2.这就是原因;
定义一个“12”,在存储的时候它会存:如char A[2]={'1' , '2' };
解决办法:可以判断:
if(UART_buff == "3")
LED12= 0;
或者使用十六进制发送模式;
if(UART_buff == 0x01)
LED1 = 0;
if(UART_buff ==0x02)
LED2= 0;
if(UART_buff == 0x12)
LED12= 0;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单引号表示一个字符的asc码八位
双引号表示一个字符串,实际就是字符数组,=="12"会把数组的16位地址和uart_buff比较,那肯定错了.
串口发送时可以选发送字符方式或16进数方式...
双引号表示一个字符串,实际就是字符数组,=="12"会把数组的16位地址和uart_buff比较,那肯定错了.
串口发送时可以选发送字符方式或16进数方式...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机串口只有8位 你和表示了 “12”比较 你发12 当然只比较 最后一个2与 LED2相等了所以就亮了
if(UART_buff == "3") LED12= 0; 你发 3 LED12 就会亮的
if(UART_buff == "3") LED12= 0; 你发 3 LED12 就会亮的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(UART_buff == "12")
LED2= 0;
这样不可以吗?
LED2= 0;
这样不可以吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询