女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)中為什么很少出現(xiàn)printf的身影

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2024-12-03 10:46 ? 次閱讀

51單片機(jī)中為什么很少出現(xiàn) printf 的身影?是用不了嗎?

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

平時(shí)我們?cè)?a href="http://www.asorrir.com/v/tag/527/" target="_blank">操作系統(tǒng)上寫(xiě)C語(yǔ)言代碼,使用 printf 可以把數(shù)據(jù)寫(xiě)到標(biāo)準(zhǔn)輸出流:

#include 


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


    return 0;
}

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

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

但是51單片機(jī)屬于裸機(jī)開(kāi)發(fā),沒(méi)有所謂的標(biāo)準(zhǔn)輸出流,他能跟外部交互的,只有串口。

51單片機(jī)用的開(kāi)發(fā)語(yǔ)言是C語(yǔ)言,雖然跟標(biāo)準(zhǔn)C有點(diǎn)區(qū)別,但是 printf 函數(shù)還是可以用的,只要修改 printf 的輸出方式,讓他從串口輸出,也能在電腦上看到輸出信息。

printf 函數(shù)把數(shù)據(jù)格式化后,最終調(diào)用 putchar 函數(shù)把數(shù)據(jù)寫(xiě)出,所以我們要做的,就是實(shí)現(xiàn) putchar 函數(shù)。

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

這些操作都跟串口相關(guān),不去詳細(xì)介紹。

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

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

首先 printf 實(shí)現(xiàn)起來(lái)比較復(fù)雜,要考慮到多種輸出格式,還要額外開(kāi)辟存儲(chǔ)空間。

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

51單片機(jī)資源和性能都有限,使用 printf 開(kāi)銷(xiāo)比較大。

其次,51 編譯器對(duì) printf 的處理,跟我們經(jīng)常使用的也有差距。

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

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

實(shí)際上結(jié)果是 256,一個(gè)字節(jié)的 char 類(lèi)型,轉(zhuǎn)換成兩個(gè)字節(jié)的 int,前面補(bǔ)0,由于 51 是大端存儲(chǔ),輸出的時(shí)候反了。

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

再比如兩個(gè) char 類(lèi)型,一個(gè) 0x01 一個(gè) 0x02,同時(shí)輸出的話(huà),第二個(gè)變量變成了 0。編譯器對(duì)參數(shù)入棧的處理也不太一樣。

基于種種原因,在 51 中很少用 printf,調(diào)試的話(huà),可以借助開(kāi)發(fā)工具,也可以使用一些日志相關(guān)的庫(kù),都比 printf 要好用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    277

    文章

    5710

    瀏覽量

    126581
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4371

    瀏覽量

    64204
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    14086

原文標(biāo)題:51單片機(jī)為什么不用printf

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【經(jīng)驗(yàn)分享】單片機(jī)如何實(shí)現(xiàn)printf輸出log?

    你在真實(shí)的項(xiàng)目工程開(kāi)發(fā),有考慮過(guò)在類(lèi)似C51單片機(jī)實(shí)現(xiàn)printf輸出log嗎?本文給出一種參考實(shí)現(xiàn)
    的頭像 發(fā)表于 12-08 08:42 ?3955次閱讀

    STC51單片機(jī)printf函數(shù)的用法和注意事項(xiàng)詳細(xì)說(shuō)明

    今天用STC51系列的單片機(jī)寫(xiě)程序遇到一個(gè)問(wèn)題,就是Printf函數(shù)的用法,并在這個(gè)上面頗費(fèi)周折,才弄清楚用法和注意事項(xiàng)!
    發(fā)表于 04-17 17:27 ?5次下載
    STC<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>printf</b>函數(shù)的用法和注意事項(xiàng)詳細(xì)說(shuō)明

    51單片機(jī)C51語(yǔ)言的scanf和printf是如何使用的詳細(xì)程序說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)C語(yǔ)言的scanf和printf是如何使用的詳細(xì)程序說(shuō)明。
    發(fā)表于 08-26 17:30 ?26次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>C<b class='flag-5'>51</b>語(yǔ)言的scanf和<b class='flag-5'>printf</b>是如何使用的詳細(xì)程序說(shuō)明

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

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

    如何在Keil中使用51單片機(jī)進(jìn)行printf串口輸出

    最近有同學(xué)在51單片機(jī)的學(xué)習(xí)過(guò)程困擾如何使用單片機(jī)串口在上位機(jī)串口助手上輸出顯示的問(wèn)題,其實(shí)很多開(kāi)發(fā)環(huán)境都支持使用C語(yǔ)言里面最常用的
    發(fā)表于 08-13 17:32 ?15次下載
    如何在Keil中使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>printf</b>串口輸出

    如何使用單片機(jī)系統(tǒng)重寫(xiě)printf函數(shù)

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用單片機(jī)系統(tǒng)重寫(xiě)printf函數(shù)。
    發(fā)表于 07-23 17:37 ?1次下載
    如何使用<b class='flag-5'>單片機(jī)</b>系統(tǒng)重寫(xiě)<b class='flag-5'>printf</b>函數(shù)

    單片機(jī)printf的移植過(guò)程資料免費(fèi)下載

    大都是51單片機(jī)的,說(shuō)的是在51單片機(jī)編譯軟件庫(kù)中有自帶printf函數(shù),也有自己實(shí)現(xiàn)一個(gè)自己的prin
    發(fā)表于 07-19 17:37 ?2次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>printf</b>的移植過(guò)程資料免費(fèi)下載

    什么是51單片機(jī)?又該如何自學(xué)51單片機(jī)

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

    51單片機(jī)是什么?應(yīng)該如何學(xué)習(xí)51單片機(jī)

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

    51單片機(jī)(一)—— 51單片機(jī)簡(jiǎn)介

    一、51單片機(jī)標(biāo)識(shí)信息 通常我們所說(shuō)的51單片機(jī)是指以51內(nèi)核擴(kuò)展出的單片機(jī)。生產(chǎn)
    發(fā)表于 11-11 18:06 ?245次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>(一)—— <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>簡(jiǎn)介

    51單片機(jī)(3)-------單片機(jī)的種類(lèi)

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

    單片機(jī)printf函數(shù)的重映射

    單片機(jī)printf函數(shù)的重映射一、源自于:大俠有話(huà)說(shuō)1.如果你在學(xué)習(xí)單片機(jī)之前學(xué)過(guò)C語(yǔ)言,那么一定知道printf這個(gè)函數(shù).它最最好用的功
    發(fā)表于 11-15 20:51 ?11次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>中</b><b class='flag-5'>printf</b>函數(shù)的重映射

    51單片機(jī)串口通信調(diào)試printf函數(shù)重定向輸出打印

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

    C51/C52單片機(jī)printf打印出來(lái)的值是原來(lái)值的256倍

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

    stm32單片機(jī)串口使用printf及u3_printf

    無(wú)論是在51單片機(jī)還是在stm32,默認(rèn)printf串口都是串口一。使用printf的時(shí)候頭文件為&amp;quot;stdio.h&amp;quot;,但是一些
    發(fā)表于 12-27 19:24 ?1次下載
    stm32<b class='flag-5'>單片機(jī)</b>串口使用<b class='flag-5'>printf</b>及u3_<b class='flag-5'>printf</b>