程序:
#include <stdio.h>
#include <STC8H.H>
int MY_putchar(int c) {
while (!TI);
TI = 0;
SBUF = c;
return c;
}
使用串口1:
void Uart1_Init(void) //2000000bps@40MHz
{
P3M0 = 0x00; P3M1 = 0x00;
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xFB; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
TI = 1;
}
void main(void)
{
Uart1_Init();
while(1)
{
printf("AA"r\n);
}
}
这程序串口printf可以正常输出AA字符,
注释掉:
//int MY_putchar(int c) {
//while (!TI); // 等待发送完成
//TI = 0; // 清除发送标志
//SBUF = c; // 将字符写入串口缓冲区
//return c; // 返回字符
//}
后串口printf不输出,为什么??
我其他地方没有任何改动,也没有定义putchar(定义会报错),而是定义的MY_putchar,,,为什么串口可以正常输出???
这是如何关联到我定义的MY_putchar的?