请教各位老师:关于C51中printf()函数

[复制链接]
6892|12
 楼主| 冷漠 发表于 2010-3-21 20:12 | 显示全部楼层 |阅读模式
本帖最后由 冷漠 于 2010-3-21 20:18 编辑

刚接到一个主从多机通信任务,主站需要把一个数组内容
uchar   shuzu[ ]={5E,00,EF,00,DF,08,5E};
通过89s52串口发送到PC机(串口)。印板硬件都有了,像max232,9针插座什么的,关键是软件:书上写的分立语句虽然看懂,但都不是太简单。——老板只给了3天时间。

我能不能串口初始化以后用 printf ( )一条语句就完成?谁以前做过?  60分先谢了。如果能项目中标,将再次感谢。

PC机上是用的“串口调试助手”,也是现成的。
zgl7903 发表于 2010-3-21 22:57 | 显示全部楼层
看看 keil里的帮助 printf选中了F1
HWM 发表于 2010-3-21 23:04 | 显示全部楼层
还不如自编一段小程序更来得简单明了,执行效率也更高。
mohanwei 发表于 2010-3-22 12:16 | 显示全部楼层
printf可以直接发16进制码的……

printf("\x5E\x00\xEF\x00\xDF\x08\x5E");
mohanwei 发表于 2010-3-22 12:17 | 显示全部楼层
没看到中间有0,有0就不一定行了,你可能需要试一下……
学海泛舟 发表于 2010-3-26 21:03 | 显示全部楼层
围观~~~~~~~~
原野之狼 发表于 2010-3-26 22:20 | 显示全部楼层
坐等冷漠大侠给出结果
ejack 发表于 2010-3-26 22:53 | 显示全部楼层
uchar   shuzu[ ]={5E,00,EF,00,DF,08,5E};

这行编译不会报错???
古道热肠 发表于 2010-3-27 00:19 | 显示全部楼层
试试下面这写法:
printf("%02X,%02X,%02X,%02X,%02X",(uint)shuzu[0],(uint)shuzu[1],(uint)shuzu[2],(uint)shuzu[3],(uint)shuzu[4]);
古道热肠 发表于 2010-3-27 00:21 | 显示全部楼层
%默认是对应后面的整形变量。
hgjinwei 发表于 2010-3-27 09:28 | 显示全部楼层
这个貌似关键点不在"printf",而是在通信吧?
 楼主| 冷漠 发表于 2010-3-27 11:18 | 显示全部楼层
本帖最后由 冷漠 于 2010-3-27 11:21 编辑

LS说的对,主要是模拟调试时如果能显示在屏幕上,就相当于实际能通过串口发送出去。

古道热肠和mohanwei的方法已记录下了,感谢!

这几天老板催命,下星期研究实验一下。

我觉得好像可以像字符串输出那样来输出数组(16进制数据串),例如:printf(shuzu);做软件的人,应该想到、做到这一点呀。还是别人已经做了,是我不会用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

921

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部