[通用8051核FLASH系列]

【HC89S003P套件试用】printf()的使用之最简方法!

[复制链接]
887|1
手机看帖
扫描二维码
随时随地手机跟帖
hayden0|  楼主 | 2019-3-22 14:05 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方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陷入死循环而无输出!

20190322135555.png
PS:你也可以零SCON=0x12给TI置1

以上做完就可以愉快的使用printf函数了!
QQ截图20190322135740.png

串口助手结果:

QQ截图20190322135909.png

HC89S003是有两个串口的,实验过程中发现此种简单使用printf方法是不支持UART2的,因为这样printf是使用的系统提供的putchar函数,而此函数只默认使用的是串口1,它用的寄存器TI和SUBF都是串口1的。

所以下一篇我将记录我重定向putchar让003的UART1和UART2都支持printf函数!

qgbgzp| | 2019-7-1 15:16 | 显示全部楼层
本帖最后由 qgbgzp 于 2019-7-1 15:51 编辑

可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

279

帖子

2

粉丝