本帖最后由 芯圣电子官方QQ 于 2023-7-25 10:37 编辑
在学习C语言的时候printf函数就是我们的得力助手,用来调试程序打印Debug信息非常好用,为了方便以后的调试使用,所以今天抽空实现printf的使用。
先来个简版的printf使用方法:
1、保证自定义串口发送能够发送字符这是前提
2、引用系统标准输入输出库“#include <stdio.h> ”
3、在串口初始化程序里令TI=1;
结束,此刻你就可以轻松使用串口1打印字符串了
其实前两步是基本条件,后一步才是关键,那么是什么原理呢?
接下来讲一下为甚么要是发送标志位TI=1;
使用printf通过stdio头文件引用,而printf函数的核心函数就是putchar函数
打开keil安装目录下 keil/c51/lib/putchar.c你会发现putchar函数使用了一句代码“while (!TI);”
如果初始化的时候不使TI置1,虽然进入了printf函数但是一直会等待TI置1陷入死循环而无输出!
PS:你也可以零SCON=0x12给TI置1
以上做完就可以愉快的使用printf函数了!
串口助手结果:
HC89S003是有两个串口的,实验过程中发现此种简单使用printf方法是不支持UART2的,因为这样printf是使用的系统提供的putchar函数,而此函数只默认使用的是串口1,它用的寄存器TI和SUBF都是串口1的。
所以下一篇我将记录我重定向putchar让003的UART1和UART2都支持printf函数!
|