51单片机Keil C51下使用printf输出到串口,为何初始化了串口之后就可以使用了?

使用的51单片机是C8051F340,编译环境是KeiluVision4仅仅在对串口进行初始化后,发现就可以使用printf函数直接将内容输出到串口了,这是为什么呢?串口... 使用的51单片机是C8051F340,编译环境是Keil uVision4
仅仅在对串口进行初始化后,发现就可以使用printf函数直接将内容输出到串口了,这是为什么呢?

串口初始化代码如下:
void UART0_Create(void)
{
P0MDOUT |= (1 << 4);//P0.4为串口输出脚,设该管脚为输出
XBR0 |= (1 << 0);//UART0连到P0.4(TX0) P0.5(RX0)引脚
XBR1 |= (1 << 6); //使能交叉开关

SCON0 = 0x10; // SCON0: 波特率可设置的8位串口
// 忽略停止位逻辑电平
// 接收使能
// 第九位是0位
// 清除发送和接收中断标志

CKCON |= (1 << 3);//定时器1使用系统时钟
TH1 = (256-UART0_PCLK/2/UART0_BAUDRATE);
TL1 = TH1;
TMOD &= ~0xf0;//TMOD: 定时器1工作为8位自动重装载模式
TMOD |= 0x20;
TR1 = 1;//开启定时器1
TI0 = 1;//Indicate TX0 ready
}

main函数如下:

#include <stdio.h>

void main(void)
{
UART0_Create();
printf("Hello World!\n");

}

请问printf是如何自动找到单片机的串口,并将内容输出的?
展开
 我来答
lonemeone
2020-05-12
知道答主
回答量:5
采纳率:0%
帮助的人:3947
展开全部
因为是这样的,在Keil\C51\LIB目录下有个putchar.c文件,printf函数会调用该文件中的
putchar函数,putchar里面的使用的寄存器都是标准51的(如TI,SBUF),它
们的地址是固定的,由此可知printf函数只针对串口0。

如果想让printf函数支持串口1或串口2。。。那么修改putchar函数的寄存器即可,比如SBUF改为SBUF1。但是能不能用printf函数对串口0,串口1。。。都适用呢

或者重定义putchar函数。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
lyx010909
2014-07-13 · 超过20用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:52.4万
展开全部
加了串口初始化程序后的printf函数能用的真正关键在于TI0先拉高了(TI0=1),因为第一次运行到printf函数的时候,如果前面没有TI0=1,那么程序指针PC就一直在这条语句上判断,也就死在这里等待。所以要使用printf,开头必须要先置TI0(传统51为TI)为1。
详见
http://wenku.baidu.com/link?url=av9rridiaYoRfjr-Wty7ynDQw2tQ8qsv4kUQDQW_vZavfxFg7cp5eFehO80pnwsj8pvRSnWaQFWajG2vpa8HKVY8vVeWbmaAeUmtaj8ONsm
望采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cc21aee
推荐于2018-03-08 · TA获得超过2044个赞
知道小有建树答主
回答量:1273
采纳率:100%
帮助的人:1222万
展开全部
单片机C对标准C进行了一些扩充、删减和更改优化,因为keil里的单片机c
把printf函数重定义到串口了,这是单片机C与标准C的差别之一。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenguanglin3
2014-07-13 · 超过24用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:18.9万
展开全部
他有默认的串口吧,刚好你的这一串口可用,所以就输出了。一般都要在设备管理器中找到可用串口然后对应设置的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式