迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1837|回复: 3

【提问】Printf打印多个变量数值不对如何解决?

[复制链接]

1

主题

3

回帖

721

积分

高级会员

Rank: 4

积分
721
QQ
发表于 2020-10-20 12:40:40 | 显示全部楼层 |阅读模式
本帖最后由 yj695834706 于 2020-10-20 12:41 编辑

本人已实现串口2的打印并重定向了printf函数,但是在开发的过程中发现,Printf函数打印单个变量的时候打印的数值是正确的,


打印的是控件的地址,从0x1300-0x1370,但是如果打印语句写成多变量的打印,数据就不对了,请问是什么问题?





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

3

回帖

721

积分

高级会员

Rank: 4

积分
721
QQ
 楼主| 发表于 2020-10-20 13:39:57 | 显示全部楼层
经过自己的一番尝试,找到了解决问题的方法,还是自己的基础功底不扎实

51单片机与标准C有区别:

KEIL里扩展出了b,h,l来对输入字节宽的设专置:
(1)b  八位
(2)h  十六位
(3)l   三十二位

在Keil C51中用printf输出一个单字节变量时要使用%bd,如

unsigned char counter;

printf("Current count: %bd\n", counter);

而在标准C语言中都是使用%d:

printf("Current count: %d\n", counter);

下面是自己测试的截图:
T5L中的C51代码如下:

打印用的%d


串口打印的数据错误,实际应为 D12500


将%d改成%bd以后显示正确


串口打印的数据为:D12500





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

15

回帖

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2020-10-20 16:38:45 | 显示全部楼层
楼主厉害了。是的,多尝试,多操作经常会解决很多问题。666
回复

使用道具 举报

0

主题

2

回帖

105

积分

注册会员

Rank: 2

积分
105
发表于 2024-7-23 14:58:16 | 显示全部楼层
楼主厉害了。鼓捣两天了,显示正常,就是打印不正常,我总以为是数据类型的原因,原来这个,感谢感谢
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-9-21 06:27 , Processed in 0.031016 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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