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

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!='\0') //指针的数据没到最后一位一直执行循环体
    {    
        UartSendByte(*string++); //发送指针指向的数据(字节byte)。指针自增,指向下一个数据
	}
}

/*重写printf调用的putchar函数,重定向到串口输出*/
char putchar(char c){
	//输出重定向到串口
	UartSendByte(c);
	return c;  //返回给函数的调用者printf
}

uart.h 

#ifndef __UART_H__
#define __UART_H__

#include <REGX52.H>

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

#endif

main.c文件

#include <REGX52.H>
#include <stdio.h>
//自定义的源文件
#include "uart.h"

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

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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 01:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 01:24:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 01:24:02       82 阅读
  4. Python语言-面向对象

    2024-06-12 01:24:02       91 阅读

热门阅读

  1. 2 程序的灵魂—算法-2.2 简单算法举例-【例 2.1】

    2024-06-12 01:24:02       33 阅读
  2. 大数据—数据分析概论

    2024-06-12 01:24:02       30 阅读
  3. 数据结构-哈希表

    2024-06-12 01:24:02       36 阅读
  4. C++的预处理器

    2024-06-12 01:24:02       36 阅读
  5. 数据结构篇其六-串

    2024-06-12 01:24:02       36 阅读
  6. Web前端评价:深入剖析与全面审视

    2024-06-12 01:24:02       33 阅读
  7. 云计算——武汉理工期末复习

    2024-06-12 01:24:02       31 阅读
  8. python将一个图片雕刻镂空成二维码

    2024-06-12 01:24:02       34 阅读
  9. Redis缓存技术详解与实战

    2024-06-12 01:24:02       29 阅读