標(biāo)題: 51單片機(jī)printf函數(shù)源代碼怎么找 [打印本頁]

作者: 滄興電子    時間: 2022-12-2 22:37
標(biāo)題: 51單片機(jī)printf函數(shù)源代碼怎么找
通過STDIO.H文件,找到頭文件函數(shù)聲明,但是源文件C代碼找不到


作者: Hephaestus    時間: 2022-12-3 00:53
源碼在庫文件里面,商業(yè)秘密怎么可能讓你知道?

開源免費的SDCC里面有printf源碼,在lib\src目錄下面。
作者: Longan.Wang    時間: 2022-12-5 15:57
精神可嘉!但,沒有必要!!。!
作者: angmall    時間: 2022-12-5 18:30
我先在知道想要在51單片機(jī)使用printf有兩種辦法,一種是用庫自己的printf,一種是寫自己的printf,不過都很簡單,

自己寫printf。


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

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

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

作者: Y_G_G    時間: 2022-12-5 20:59
當(dāng)初剛剛學(xué)C語言的時候還能找到,現(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





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1