学习使用AI8051U硬件I2C总线应用时遇到串口打印数据有问题特来请教!先谢了!
使用的示例代码为试验箱的第28#例程,该例程中串口相关代码摘录如下:
- // 串口初始化函数
- void UartInit(void)
- {
- P_SW1 &= ~S1_S1; // UART1切换到P3.0/P3.1
- P_SW1 &= ~S1_S0;
-
- SCON = 0x50; // 8位数据,可变波特率,允许接收
- AUXR |= (1<<6); // 定时器1时钟1T模式
- AUXR &= ~S1BRT; // 串口1选择定时器1为波特率发生器
- TL1 = TM;
- TH1 = TM >> 8;
- TR1 = 1; // 定时器1开始计时
- TI = 0; // 清除发送中断标志
- RI = 0; // 清除接收中断标志
-
- }
-
- // 串口发送字符函数
- void UartPutc(unsigned char dat)
- {
- SBUF = dat;
- while(TI == 0); // 等待发送完成
- TI = 0; // 清除标志
- }
-
- // printf重定向
- char putchar(char c)
- {
- UartPutc(c);
- return c;
- }
复制代码 我在主函数中有声明:u8 tus=0x18;
我在主循环中只加了两行代码如下:
printf("状态字:0x%02X\r\n", tus);
delay_ms(1000);
程序运行后在串口助手窗口看到的文本数据如下:[10:47:00.509]接收←状态字:0x185E
问题:为什么打印数据不是0x18而是185E。
|