|
在B站看到printf()重定向到单片机串口,网上下载示例,修改调试后在普中开发板上通过。确实好用,但要20多RAM,1K多代码。
#include <stdio.h>
#include<STC90C5xAD.h>
unsigned int j;
void UartInit();
//发送一个字节数据
void sendByte(unsigned char dat){
SBUF = dat; //写入发送缓冲寄存器
while(!TI); //等待发送完成,TI发送溢出标志位 置1
TI = 0; //对溢出标志位清零
}
/*void sendString(unsigned char *string){
while(*string!='\0'){ //指针的数据没到最后一位一直执行循环体
sendByte(*string++); //发送指针指向的数据(字节byte)
//指针自增,指向下一个数据
}
} */
/*
**重写printf调用的putchar函数,重定向到串口输出
**需要引入头文件<stdio.h>
*****/
char putchar(char c){
//输出重定向到串口
sendByte(c);
return c; //返回给函数的调用者printf
}
void main ()
{
UartInit();
while(1)
{
printf("普中科技有限公司\n\r");
for (j=0;j<3000;j++);
}
}
void UartInit(void) //4800bps@22.1MHz
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XE8; //计数器初始值设置,注意波特率是4800的
TL1=0XE8;
// ES=1; //打开接收中断
// EA=1; //打开总中断
TR1=1; //启动定时器1
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|