找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1150|回复: 3
收起左侧

单片机串口程序显示问题

[复制链接]
ID:708768 发表于 2020-10-22 11:49 | 显示全部楼层 |阅读模式
程序内容是从串口接收一串数据,然后存储到一个字符数组里,之后把这个数组发送显示到串口助手上,我的问题是:整个数组在串口助手上显示没有问题,但是我单取数组中的某个元素显示到串口助手上就不对了,我找不到是哪里的问题
  1. if(revdata[0]=='@')
  2. {for(i=0;i<12;i++)
  3.   {str[i]=revdata[i]}
  4. }
  5. for(i=0;i<revdata;i++)
  6.   {revdata[i]=0;}
  7.    revdata=0;
  8. usart_puts(str);  //串口助手显示@21*2*20*20#
  9. for(i=0;i<2;i++)
  10. {a[i]=str[i+1];}
  11. usart_puts(a); //串口助手显示21
  12. usart_puts(a[0]);//串口助手十六进制显示28 06,但我以为十六进制下会显示的是32
复制代码


回复

使用道具 举报

ID:827243 发表于 2020-10-22 16:31 | 显示全部楼层
usart_puts的参数是指针,以0结尾的字符数组,usart_puts(a[0])是不对的
回复

使用道具 举报

ID:693038 发表于 2020-10-22 18:50 | 显示全部楼层
板凳有理,还有
for(i=0;i<revdata;i++)
  {revdata[i]=0;}
这里这样处理的目的是啥呢,接收数组清零?这样的方式对吗?一不小心就内存溢出了吧
回复

使用道具 举报

ID:708768 发表于 2020-10-23 13:19 | 显示全部楼层
daemondong 发表于 2020-10-22 16:31
usart_puts的参数是指针,以0结尾的字符数组,usart_puts(a[0])是不对的

嗯,这个问题解决了。然后我还有一个问题,我取地址a[1]发给串口助手得到的是1,但是我用if语句判断,是不对的,if(a[1]==0x31){lcd_disp(&quot;a&quot;);},按理说应该显示a,但没有,是我哪里有没搞对吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表