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

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

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2025-12-18 10:39:19

51

主题

198

回帖

2741

积分

金牌会员

积分
2741
发表于 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
  • 打卡总天数:647
  • 最近打卡:2025-12-18 07:29:35
已绑定手机

93

主题

6940

回帖

1万

积分

超级版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2025-12-18 10:39:19

51

主题

198

回帖

2741

积分

金牌会员

积分
2741
发表于 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);,最后再次感谢你的热心指点。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:586
  • 最近打卡:2025-12-18 09:02:22
已绑定手机

49

主题

2369

回帖

8422

积分

论坛元老

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2025-12-18 10:39:19

51

主题

198

回帖

2741

积分

金牌会员

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-18 17:30 , Processed in 0.114958 second(s), 62 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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