找回密码
 注册
关于网站域名变更的通知
查看: 580|回复: 1
打印 上一主题 下一主题

51单片机实现scanf和printf函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-22 12:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
51单片机实现scanf和printf函数
' Y+ M. v1 \- ]( u
) s" u2 n; u4 y; \. h( \
/ c, e+ p5 l- u' X0 _; A9 j
最开始学习C语言时,使用printf和scanf进行格式化输入输出十分方便。
学习单片机有很长时间了,之前要再屏幕上显示一个变量或者通过串口传出一些变量值观测的话,需要进行一系列的取余取整运算,很是麻烦。
最近又研究了一下keil中针对printf和scanf的实现机理,做了一些改动,实现了标准格式化输入输出,共大家参考。
1.printf函数在格式化输出时,向下调用了char putchar(char c);这个函数,在“stdio.h”里可以发现有这个函数,所以我们需要自己构造一个这样的函数,即通过串口putchar(),代码如下:
[cpp] view plain copychar putchar(char c)
{
hal_uart_putchar(c);
return c;
}
其中hal_uart_putchar(c);函数是我们比较熟悉的了,是51单片机通过串口发送一个字节的函数,具体代码如下:
[cpp] view plain copyvoid hal_uart_putchar(char i)
{
ES = 0;
TI = 0; //清空发送完中断请求标志位
SBUF = i; //将数据放入寄存器发送
while(TI == 0);//等待发送完毕,发送完毕 TI == 1
TI = 0; //清空发送完中断请求标志位
ES = 1;
}
有了这两个函数,在单片机启动后,首先进行串口初始化,接着就可以使用printf了……是不是很简单……
-------------------------------------------------------------------------------------------------------------------------------------
游客,如果您要查看本帖隐藏内容请回复
( V- v7 |5 ?9 r- i5 T) @( |( p

该用户从未签到

2#
发表于 2019-2-22 18:08 | 只看该作者
看看51单片机如何实现scanf和printf函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-12 18:47 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表