色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

51單片機中為什么很少出現printf的身影

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-12-03 10:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

51單片機中為什么很少出現 printf 的身影?是用不了嗎?

不是的,51單片機可以用 printf,只是不建議使用。

平時我們在操作系統上寫C語言代碼,使用 printf 可以把數據寫到標準輸出流:

#include 


int main()
{
    printf("helloworld
");


    return 0;
}

然后在屏幕上就能看到它的輸出。

8f6d5bbe-afbb-11ef-93f3-92fbcf53809c.png

但是51單片機屬于裸機開發,沒有所謂的標準輸出流,他能跟外部交互的,只有串口。

51單片機用的開發語言是C語言,雖然跟標準C有點區別,但是 printf 函數還是可以用的,只要修改 printf 的輸出方式,讓他從串口輸出,也能在電腦上看到輸出信息。

printf 函數把數據格式化后,最終調用 putchar 函數把數據寫出,所以我們要做的,就是實現 putchar 函數。

int putchar(char c) {
SBUF = ch;     // 將數據發送到SBUF寄存器
    while (!TI);   // 等待發送完成
    TI = 0;        // 清除發送中斷標志
    
    return c;
}

這些操作都跟串口相關,不去詳細介紹。

使用的時候,包含 stdio.h 頭文件,語法跟我們以前使用的一樣。

那為什么不建議在 51 單片機中使用 printf,有這么幾個原因。

首先 printf 實現起來比較復雜,要考慮到多種輸出格式,還要額外開辟存儲空間。

8f79c53e-afbb-11ef-93f3-92fbcf53809c.png

51單片機資源和性能都有限,使用 printf 開銷比較大。

其次,51 編譯器對 printf 的處理,跟我們經常使用的也有差距。

比如定義一個 char 類型的變量,初始化成 0x01,使用 %u 輸出,雖然類型不一樣,應該不影響它輸出 1。

void main()
{
    unsigned char num1 = 0x01;
    
    printf("%u", num1);
}

實際上結果是 256,一個字節的 char 類型,轉換成兩個字節的 int,前面補0,由于 51 是大端存儲,輸出的時候反了。

void main()
{
    unsigned char num1 = 0x01;
    unsigned char num2 = 0x02;
    
printf("%u%u", num1, num2);
}

再比如兩個 char 類型,一個 0x01 一個 0x02,同時輸出的話,第二個變量變成了 0。編譯器對參數入棧的處理也不太一樣。

基于種種原因,在 51 中很少用 printf,調試的話,可以借助開發工具,也可以使用一些日志相關的庫,都比 printf 要好用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 51單片機
    +關注

    關注

    277

    文章

    5711

    瀏覽量

    127558
  • 函數
    +關注

    關注

    3

    文章

    4383

    瀏覽量

    65029
  • Printf
    +關注

    關注

    0

    文章

    84

    瀏覽量

    14265

原文標題:51單片機為什么不用printf

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【經驗分享】單片機如何實現printf輸出log?

    你在真實的項目工程開發,有考慮過在類似C51單片機實現printf輸出log嗎?本文給出一種參考實現
    的頭像 發表于 12-08 08:42 ?4175次閱讀

    STC51單片機printf函數的用法和注意事項詳細說明

    今天用STC51系列的單片機寫程序遇到一個問題,就是Printf函數的用法,并在這個上面頗費周折,才弄清楚用法和注意事項!
    發表于 04-17 17:27 ?5次下載
    STC<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>printf</b>函數的用法和注意事項詳細說明

    51單片機C51語言的scanf和printf是如何使用的詳細程序說明

    本文檔的主要內容詳細介紹的是51單片機C語言的scanf和printf是如何使用的詳細程序說明。
    發表于 08-26 17:30 ?26次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>C<b class='flag-5'>51</b>語言的scanf和<b class='flag-5'>printf</b>是如何使用的詳細程序說明

    51單片機串口通訊需要注意的寄存器及51單片機使用PRINTF的示例程序

    本文檔的主要內容詳細介紹的是51單片機進行串口通訊需要注意的寄存器及51單片機使用PRINTF的示例程序的詳細資料概述。
    發表于 08-14 17:32 ?2次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>串口通訊需要注意的寄存器及<b class='flag-5'>51</b><b class='flag-5'>單片機</b>使用<b class='flag-5'>PRINTF</b>的示例程序

    如何在Keil中使用51單片機進行printf串口輸出

    最近有同學在51單片機的學習過程困擾如何使用單片機串口在上位串口助手上輸出顯示的問題,其實很多開發環境都支持使用C語言里面最常用的
    發表于 08-13 17:32 ?15次下載
    如何在Keil中使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行<b class='flag-5'>printf</b>串口輸出

    如何使用單片機系統重寫printf函數

    本文檔的主要內容詳細介紹的是如何使用單片機系統重寫printf函數。
    發表于 07-23 17:37 ?1次下載
    如何使用<b class='flag-5'>單片機</b>系統重寫<b class='flag-5'>printf</b>函數

    單片機printf的移植過程資料免費下載

    大都是51單片機的,說的是在51單片機編譯軟件庫中有自帶printf函數,也有自己實現一個自己的prin
    發表于 07-19 17:37 ?2次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>printf</b>的移植過程資料免費下載

    什么是51單片機?又該如何自學51單片機

    51 單片機是目前使用最多的單片機之一,那么什么是 51 單片機呢?作為新手,又該如何自學 51
    的頭像 發表于 11-03 21:14 ?8355次閱讀

    51單片機是什么?應該如何學習51單片機

    51 單片機是目前使用最多的單片機之一,那么什么是 51 單片機呢?作為新手,又該如何自學 51
    發表于 12-23 07:57 ?73次下載

    51單片機(一)—— 51單片機簡介

    一、51單片機標識信息 通常我們所說的51單片機是指以51內核擴展出的單片機。生產
    發表于 11-11 18:06 ?245次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>(一)—— <b class='flag-5'>51</b><b class='flag-5'>單片機</b>簡介

    51單片機(3)-------單片機的種類

    格低性能;PIC單片機,性能穩定常用于工業應用;AVR單片機(如AT89C51),過氣了(早年渠道出現問題,缺貨,公司棄用);ARM Cortex-M系列
    發表于 11-15 12:06 ?21次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>(3)-------<b class='flag-5'>單片機</b>的種類

    單片機printf函數的重映射

    單片機printf函數的重映射一、源自于:大俠有話說1.如果你在學習單片機之前學過C語言,那么一定知道printf這個函數.它最最好用的功
    發表于 11-15 20:51 ?11次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>中</b><b class='flag-5'>printf</b>函數的重映射

    51單片機串口通信調試printf函數重定向輸出打印

    51單片機串口通信以及printf調試串行通信1.串口初始化串口工作方式波特率設置通過軟件直接生成串口初始化代碼2.輸出到串口3.發送字符串到串口4.printf重定向到串口5.補充
    發表于 11-20 16:36 ?16次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>串口通信調試<b class='flag-5'>printf</b>函數重定向輸出打印

    C51/C52單片機printf打印出來的值是原來值的256倍

    開發環境(藍色粗體字為特別注意內容)1,開發板:89C52RC。2,開發環境:Keil uv5在51單片機的KEIL程序,使用printf("Voltage0:%d\r\n"
    發表于 11-23 17:21 ?8次下載
    C<b class='flag-5'>51</b>/C52<b class='flag-5'>單片機</b><b class='flag-5'>printf</b>打印出來的值是原來值的256倍

    stm32單片機串口使用printf及u3_printf

    無論是在51單片機還是在stm32,默認printf串口都是串口一。使用printf的時候頭文件為&amp;quot;stdio.h&amp;quot;,但是一些
    發表于 12-27 19:24 ?1次下載
    stm32<b class='flag-5'>單片機</b>串口使用<b class='flag-5'>printf</b>及u3_<b class='flag-5'>printf</b>
    主站蜘蛛池模板: 扒开老师大腿猛进AAA片邪恶 | 一本道久在线综合道 | 天堂网久久 | 泡妞高手在都市完整版视频免费 | 三叶草成人| 浓毛BWBWBWBWBW日本 | 国产成人免费视频 | 熟女久久久久久久久久久 | 撅高 自己扒开 调教 | 成人影院久久久久久影院 | 日韩视频中文在线一区 | 国产精品igao视频网网址 | 黄色片中文 | 国产成人拍精品视频网 | 精品无码国产AV一区二区三区 | 校花被扒衣吸乳羞羞漫画 | 九九热精品视频在线观看 | 亚洲欧美日韩中字视频三区 | 亚洲乱码中文字幕久久孕妇黑人 | 妈妈的朋友5在线观看免费完整版中文 | 灰原哀被啪漫画禁漫 | qvod 电影 | 诱人的女邻居9中文观看 | 成人影院午夜久久影院 | 国产精品成人影院 | 东日韩二三区 | 丰满的寡妇hd高清在线观看 | 亚洲精品一二三区-久久 | 寻找最美乡村教师颁奖晚会 | 18禁黄久久久AAA片 | 国产电影一区二区三区 | 国产精品美女久久久久浪潮AV | 亚洲成片在线看 | 欧美牲交A欧美牲交VDO | JIZZ幻女大全| 精品少妇高潮蜜臀涩涩AV | 日韩欧美国产免费看清风阁 | 中文字幕永久在线 | 国产亚洲视频在线播放香蕉 | 亚洲一区免费香蕉在线 | 久久人人玩人妻潮喷内射人人 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品