找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1678|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)printf函數(shù)源代碼怎么找

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:748096 發(fā)表于 2022-12-2 22:37 來自手機(jī) | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
通過STDIO.H文件,找到頭文件函數(shù)聲明,但是源文件C代碼找不到

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2022-12-3 00:53 | 只看該作者
源碼在庫文件里面,商業(yè)秘密怎么可能讓你知道?

開源免費(fèi)的SDCC里面有printf源碼,在lib\src目錄下面。
回復(fù)

使用道具 舉報(bào)

板凳
ID:77589 發(fā)表于 2022-12-5 15:57 | 只看該作者
精神可嘉!但,沒有必要!。。。
回復(fù)

使用道具 舉報(bào)

地板
ID:155507 發(fā)表于 2022-12-5 18:30 | 只看該作者
我先在知道想要在51單片機(jī)使用printf有兩種辦法,一種是用庫自己的printf,一種是寫自己的printf,不過都很簡(jiǎn)單,

自己寫printf。


  1. void sendstring(unsigned char *string)//這個(gè)是字符串發(fā)送函數(shù)
  2. {
  3.         while(*string!='\0')   //判斷是否到字符串的尾端
  4.         {
  5.                 sendbyte(*string);
  6.                 string++;
  7.         }
  8. }
  9. void uart_printf(char *fmt,...)//這個(gè)是我們的printf函數(shù)
  10. {
  11.         va_list ap;//typedef char *va_list; va_list是char型的指針

  12.         char xdata string[1024];//訪問外部RAM 兩字節(jié)對(duì)齊

  13.         va_start(ap,fmt);//這個(gè)函數(shù)的功能是,找到第一個(gè)可變形參的地址,并把地址賦給ap
  14.         vsprintf(string,fmt,ap);//其實(shí)這個(gè)函數(shù)才是核心函數(shù),沒研究。。。
  15.         sendstring(string);//這個(gè)函數(shù)就是發(fā)送字符串函數(shù),通過上一個(gè)函數(shù),就把該提取的東西都提取了
  16.         va_end(ap);//結(jié)束函數(shù)
  17. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:401564 發(fā)表于 2022-12-5 20:59 | 只看該作者
當(dāng)初剛剛學(xué)C語言的時(shí)候還能找到,現(xiàn)在找不到了,網(wǎng)上找了,你自己看一下就明白了printf是通過putchar函數(shù)發(fā)送的,所以,printf并沒有跟8051有關(guān)的語句
在putchar函數(shù)中是使用串口進(jìn)行發(fā)送的,你可以通過更改putchar還更改printf的功能
https://www.cnblogs.com/jqdy/p/12255620.html?ivk_sa=1024320u
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表