找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 984|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机printf函数源代码怎么找

[复制链接]
跳转到指定楼层
楼主
ID:748096 发表于 2022-12-2 22:37 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过STDIO.H文件,找到头文件函数声明,但是源文件C代码找不到

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-12-3 00:53 | 只看该作者
源码在库文件里面,商业秘密怎么可能让你知道?

开源免费的SDCC里面有printf源码,在lib\src目录下面。
回复

使用道具 举报

板凳
ID:77589 发表于 2022-12-5 15:57 | 只看该作者
精神可嘉!但,没有必要!!!!!
回复

使用道具 举报

地板
ID:155507 发表于 2022-12-5 18:30 | 只看该作者
我先在知道想要在51单片机使用printf有两种办法,一种是用库自己的printf,一种是写自己的printf,不过都很简单,

自己写printf。


  1. void sendstring(unsigned char *string)//这个是字符串发送函数
  2. {
  3.         while(*string!='\0')   //判断是否到字符串的尾端
  4.         {
  5.                 sendbyte(*string);
  6.                 string++;
  7.         }
  8. }
  9. void uart_printf(char *fmt,...)//这个是我们的printf函数
  10. {
  11.         va_list ap;//typedef char *va_list; va_list是char型的指针

  12.         char xdata string[1024];//访问外部RAM 两字节对齐

  13.         va_start(ap,fmt);//这个函数的功能是,找到第一个可变形参的地址,并把地址赋给ap
  14.         vsprintf(string,fmt,ap);//其实这个函数才是核心函数,没研究。。。
  15.         sendstring(string);//这个函数就是发送字符串函数,通过上一个函数,就把该提取的东西都提取了
  16.         va_end(ap);//结束函数
  17. }
复制代码
回复

使用道具 举报

5#
ID:401564 发表于 2022-12-5 20:59 | 只看该作者
当初刚刚学C语言的时候还能找到,现在找不到了,网上找了,你自己看一下就明白了printf是通过putchar函数发送的,所以,printf并没有跟8051有关的语句
在putchar函数中是使用串口进行发送的,你可以通过更改putchar还更改printf的功能
https://www.cnblogs.com/jqdy/p/12255620.html?ivk_sa=1024320u
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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