找回密码
 立即注册
查看: 351|回复: 4

请教AI8051U串口打印多了两位数据的问题

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:747
  • 最近打卡:2026-07-03 20:10:40

51

主题

200

回帖

2663

积分

金牌会员

积分
2663
发表于 2025-12-10 11:57:07 | 显示全部楼层 |阅读模式
学习使用AI8051U硬件I2C总线应用时遇到串口打印数据有问题特来请教!先谢了!

使用的示例代码为试验箱的第28#例程,该例程中串口相关代码摘录如下:
  1. // 串口初始化函数
  2. void UartInit(void)
  3. {
  4.     P_SW1 &= ~S1_S1;      // UART1切换到P3.0/P3.1
  5.     P_SW1 &= ~S1_S0;
  6.     SCON = 0x50;          // 8位数据,可变波特率,允许接收
  7.     AUXR |= (1<<6);       // 定时器1时钟1T模式
  8.     AUXR &= ~S1BRT;       // 串口1选择定时器1为波特率发生器
  9.     TL1 = TM;
  10.     TH1 = TM >> 8;
  11.     TR1 = 1;              // 定时器1开始计时
  12.     TI = 0;               // 清除发送中断标志
  13.     RI = 0;               // 清除接收中断标志
  14. }
  15. // 串口发送字符函数
  16. void UartPutc(unsigned char dat)
  17. {
  18.     SBUF = dat;
  19.     while(TI == 0);       // 等待发送完成
  20.     TI = 0;               // 清除标志
  21. }
  22. // printf重定向
  23. char putchar(char c)
  24. {
  25.     UartPutc(c);
  26.     return c;
  27. }
复制代码
我在主函数中有声明:u8 tus=0x18;
我在主循环中只加了两行代码如下:

printf("状态字:0x%02X\r\n", tus);
delay_ms(1000);

程序运行后在串口助手窗口看到的文本数据如下:[10:47:00.509]接收←状态字:0x185E
问题:为什么打印数据不是0x18而是185E。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:727
  • 最近打卡:2026-06-26 17:48:25
已绑定手机

95

主题

7373

回帖

1万

积分

超级版主

积分
13944
发表于 2025-12-10 13:30:01 | 显示全部楼层
改成0x%02bX试试
51编译器和251编译器不一样
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:747
  • 最近打卡:2026-07-03 20:10:40

51

主题

200

回帖

2663

积分

金牌会员

积分
2663
发表于 2025-12-10 19:33:51 | 显示全部楼层
Debu*** 发表于 2025-12-10 13:30
改成0x%02bX试试
51编译器和251编译器不一样

多谢你的指点,采用你给的打印格式真的可以实现0x18的打印输出,只是这个后加的“b”的含义我不明白,如果得空时希望能说一下,看到你的答案之前我发现如果打印变量定义为16位值u16 tus=0x18;可以得到正确的输出0x18,如果在打印输出中强制转换一下变量也可以输出正确答案:printf("状态字:0x%02X\r\n", (u16)tus);,最后再次感谢你的热心指点。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2025-12-11 09:06:00 | 显示全部楼层
乐此*** 发表于 2025-12-10 19:33
多谢你的指点,采用你给的打印格式真的可以实现0x18的打印输出,只是这个后加的“b”的含义我不明白,如 ...

可参考这个帖子介绍:
printf函数 的 格式参数; USB接口 使用 printf 打印数据
https://www.stcaimcu.com/thread-6864-1-1.html
(出处: 国芯人工智能技术交流网站)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:747
  • 最近打卡:2026-07-03 20:10:40

51

主题

200

回帖

2663

积分

金牌会员

积分
2663
发表于 2025-12-11 10:15:06 | 显示全部楼层
乘风*** 发表于 2025-12-11 09:06
可参考这个帖子介绍:
printf函数 的 格式参数; USB接口 使用 printf 打印数据
https://www.stcaimcu.co ...

多谢,这个帖子说的透彻,明白了,再谢!
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 11:56 , Processed in 0.072788 second(s), 62 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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