使用的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是如何自动找到单片机的串口,并将内容输出的?