一、原理:
思路:
我们初学c语言时应该都用printf函数在计算机中打印过信息,而原本的printf函数是利用putchar函数向内部发送信息,如果我们修改一下putchar函数,向串口发送信息,就能实现printf函数在串口中打印信息。
为什么我们可以实现putchar函数的重定义(重映射)呢?
extern char putchar (char);
在"stdio.h"头文件中,将putchar函数用extern关键字修饰了,使它可以在其他文件被修改,即重映射
二、参考代码:(STC15F2K60S2)
#include <STC15F2K60S2.H>
#include <stdio.h>
void UartInit(void) ;
void main()
{
UartInit();
while(1)
{
printf("Hello World!\r\n");
}
}
void UartInit(void) //9600bps@12MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xC7; //设置定时初始值
TH1 = 0xFE; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
}
/*
重映射putchar函数
*/
char putchar (char c)
{
SBUF = c;
while(!TI);
TI = 0;
return c;
}