C51单片机 串口打印printf重定向

作者 : admin 本文共1060个字,预计阅读时间需要3分钟 发布时间: 2024-06-9 共2人阅读

uart.c文件

#include "uart.h"

void UartInit(void)		//4800bps@11.0592MHz
{
	PCON |= 0x80;		//使能波特率倍速位SMOD
	SCON = 0x50;		//8位数据,可变波特率。使能接收
      
	TMOD &= 0x0F;		//清除定时器1模式位
	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
    
	TL1 = 0xF4;		//设定定时初值
	TH1 = 0xF4;		//设定定时器重装值
    
	ET1 = 0;		//禁止定时器1中断
    
	TR1 = 1;		//启动定时器1
    
    //配置串口中断
    EA=1;
    ES=1;
}

void UartSendByte(unsigned char byte)
{
    SBUF=byte;
    //检测是否发送完成(标志位)
    while(TI==0);//发送完成会置1
    TI=0;//需要手动软件复位

}

void UartSendString(unsigned char *string){
    while(*string!='
#include "uart.h"
void UartInit(void)		//4800bps@11.0592MHz
{
PCON |= 0x80;		//使能波特率倍速位SMOD
SCON = 0x50;		//8位数据,可变波特率。使能接收
TMOD &= 0x0F;		//清除定时器1模式位
TMOD |= 0x20;		//设定定时器1为8位自动重装方式
TL1 = 0xF4;		//设定定时初值
TH1 = 0xF4;		//设定定时器重装值
ET1 = 0;		//禁止定时器1中断
TR1 = 1;		//启动定时器1
//配置串口中断
EA=1;
ES=1;
}
void UartSendByte(unsigned char byte)
{
SBUF=byte;
//检测是否发送完成(标志位)
while(TI==0);//发送完成会置1
TI=0;//需要手动软件复位
}
void UartSendString(unsigned char *string){
while(*string!='\0') //指针的数据没到最后一位一直执行循环体
{    
UartSendByte(*string++); //发送指针指向的数据(字节byte)。指针自增,指向下一个数据
}
}
/*重写printf调用的putchar函数,重定向到串口输出*/
char putchar(char c){
//输出重定向到串口
UartSendByte(c);
return c;  //返回给函数的调用者printf
}
') //指针的数据没到最后一位一直执行循环体 { UartSendByte(*string++); //发送指针指向的数据(字节byte)。指针自增,指向下一个数据 } } /*重写printf调用的putchar函数,重定向到串口输出*/ char putchar(char c){ //输出重定向到串口 UartSendByte(c); return c; //返回给函数的调用者printf }

uart.h 

#ifndef __UART_H__
#define __UART_H__

#include 

void UartInit(void);		//4800bps@11.0592MHz
void UartSendByte(unsigned char byte);
void UartSendString(unsigned char *string);

#endif

main.c文件

#include 
#include 
//自定义的源文件
#include "uart.h"

void main()
{   
    /* 串口初始化 */
    UartInit();
    
    while(1)
    {
        /* 利用keil内置的宏来获取编译时的日期和时间,这两个宏是字符串形式,可以直接打印 */
        printf("Line:%s\r
",__LINE__); //行号
        printf("File:%s\r
",__FILE__); //文件名
        printf("Complie Data:%s\r
",__DATE__); //日期
        printf("Complie Time:%s\r
", __TIME__); //时间
    }
}

结果:显示打印信息(STC-ISP)

C51单片机 串口打印printf重定向插图

本站无任何商业行为
个人在线分享 » C51单片机 串口打印printf重定向
E-->