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

QQ登錄

只需一步,快速開始

搜索
查看: 7794|回復(fù): 28
收起左側(cè)

51單片機(jī)printf函數(shù)的使用

  [復(fù)制鏈接]
ID:568114 發(fā)表于 2021-2-16 14:48 | 顯示全部樓層 |閱讀模式
為了參加藍(lán)橋杯的比賽學(xué)習(xí)51單片機(jī),突發(fā)奇想51單片機(jī)能不能使用printf函數(shù),總結(jié)整理希望大家能用到
#include "STC15F2K60S2.H"
#include "stdio.h"
void delay();
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;               
        AUXR |= 0x40;               
        AUXR &= 0xFE;               
        TMOD &= 0x0F;               
        TL1 = 0xE0;               
        TH1 = 0xFE;               
        ET1 = 0;               
        TR1 = 1;               
}
void main()
{
        UartInit();
        while(1)
        {
                TI=1;
          printf("hello world\r\n");
                delay();
        }
}
void delay()
{
        unsigned int i,j;
        for(i=0;i<2000;i++);
        for(j=0;j<3000;j++);
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:371606 發(fā)表于 2021-2-17 10:38 來自手機(jī) | 顯示全部樓層
實(shí)測(cè)可行嗎
回復(fù)

使用道具 舉報(bào)

ID:884588 發(fā)表于 2021-2-26 10:10 | 顯示全部樓層
可以往顯示屏上輸出嗎???
回復(fù)

使用道具 舉報(bào)

ID:568114 發(fā)表于 2021-3-4 15:38 | 顯示全部樓層
刀妹 發(fā)表于 2021-2-17 10:38
實(shí)測(cè)可行嗎

可行
回復(fù)

使用道具 舉報(bào)

ID:568114 發(fā)表于 2021-3-4 15:39 | 顯示全部樓層
  5.1_phantom 發(fā)表于 2021-2-26 10:10
可以往顯示屏上輸出嗎???

串口屏?
回復(fù)

使用道具 舉報(bào)

ID:696335 發(fā)表于 2021-3-25 17:14 | 顯示全部樓層
波特率是多少了?
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2021-3-26 08:15 | 顯示全部樓層
51單片機(jī)可用printf函數(shù)啊,誰說不能用
回復(fù)

使用道具 舉報(bào)

ID:304608 發(fā)表于 2021-3-26 09:43 | 顯示全部樓層
求解,不做重映射 為什么就可以直接使用?
回復(fù)

使用道具 舉報(bào)

ID:499770 發(fā)表于 2021-3-26 09:58 | 顯示全部樓層
        while(1)
        {
                TI=1;
          printf("hello world\r\n");
                delay();
        }

剛開始學(xué)C語言,請(qǐng)問這句“TI=1;”,是什么作用?
回復(fù)

使用道具 舉報(bào)

ID:440403 發(fā)表于 2021-3-26 10:37 | 顯示全部樓層
把pringf里面的putchar 換成 串口發(fā)送對(duì)吧
回復(fù)

使用道具 舉報(bào)

ID:468878 發(fā)表于 2021-3-26 16:54 | 顯示全部樓層
直接可以用的,不過這個(gè)PRINTF好占程序空間。
回復(fù)

使用道具 舉報(bào)

ID:199471 發(fā)表于 2021-3-26 17:14 | 顯示全部樓層
講的很基礎(chǔ),很容易懂,挺好的。
回復(fù)

使用道具 舉報(bào)

ID:656213 發(fā)表于 2021-10-5 09:22 | 顯示全部樓層
我直接拷貝程序,編譯報(bào)錯(cuò)是咋回事?
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2021-10-5 10:46 | 顯示全部樓層
jiahz2019 發(fā)表于 2021-10-5 09:22
我直接拷貝程序,編譯報(bào)錯(cuò)是咋回事?

因?yàn)槟阌玫筋^文件stc15f2k60s2.h,而你未添加STC單片機(jī)的頭文件庫(kù)
回復(fù)

使用道具 舉報(bào)

ID:969848 發(fā)表于 2021-10-5 15:09 | 顯示全部樓層
可以往顯示屏上輸出嗎???
回復(fù)

使用道具 舉報(bào)

ID:908826 發(fā)表于 2021-10-15 09:03 | 顯示全部樓層
liuwang2051 發(fā)表于 2021-3-26 09:58
while(1)
        {
                TI=1;

應(yīng)該是接受標(biāo)志位置一
回復(fù)

使用道具 舉報(bào)

ID:908826 發(fā)表于 2021-10-15 09:05 | 顯示全部樓層
liuwang2051 發(fā)表于 2021-3-26 09:58
while(1)
        {
                TI=1;

我說錯(cuò)了,是發(fā)送標(biāo)志位
回復(fù)

使用道具 舉報(bào)

ID:331263 發(fā)表于 2021-10-16 00:11 | 顯示全部樓層
可以,我正在用,要配置中斷
回復(fù)

使用道具 舉報(bào)

ID:285175 發(fā)表于 2021-10-20 15:52 | 顯示全部樓層
liuwang2051 發(fā)表于 2021-3-26 09:58
while(1)
        {
                TI=1;

定時(shí)器標(biāo)志位,數(shù)據(jù)手冊(cè)有解釋
回復(fù)

使用道具 舉報(bào)

ID:285175 發(fā)表于 2021-10-20 15:54 | 顯示全部樓層
printf到哪里了?
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-13 22:30 | 顯示全部樓層
可以用呀!只是沒電腦上開發(fā)EXE程序的C好用,有很多條件限制,
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2021-12-14 10:09 | 顯示全部樓層
keil的安裝目錄中有例程,可以直接拿來用。并且keil的幫助文件有很詳細(xì)的說明和更適合實(shí)際工程的。
  1. /*------------------------------------------------------------------------------
  2. HELLO.C

  3. Copyright 1995-2005 Keil Software, Inc.
  4. ------------------------------------------------------------------------------*/

  5. #include <REG52.H>                /* special function register declarations   */
  6.                                   /* for the intended 8051 derivative         */

  7. #include <stdio.h>                /* prototype declarations for I/O functions */


  8. #ifdef MONITOR51                         /* Debugging with Monitor-51 needs   */
  9. char code reserve [3] _at_ 0x23;         /* space for serial interrupt if     */
  10. #endif                                   /* Stop Exection with Serial Intr.   */
  11.                                          /* is enabled                        */


  12. /*------------------------------------------------
  13. The main C function.  Program execution starts
  14. here after stack initialization.
  15. ------------------------------------------------*/
  16. void main (void) {

  17. /*------------------------------------------------
  18. Setup the serial port for 1200 baud at 16MHz.
  19. ------------------------------------------------*/
  20. #ifndef MONITOR51
  21.     SCON  = 0x50;                        /* SCON: mode 1, 8-bit UART, enable rcvr      */
  22.     TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
  23.     TH1   = 221;                /* TH1:  reload value for 1200 baud @ 16MHz   */
  24.     TR1   = 1;                  /* TR1:  timer 1 run                          */
  25.     TI    = 1;                  /* TI:   set TI to send first char of UART    */
  26. #endif

  27. /*------------------------------------------------
  28. Note that an embedded program never exits (because
  29. there is no operating system to return to).  It
  30. must loop and execute forever.
  31. ------------------------------------------------*/
  32.   while (1) {
  33.     P1 ^= 0x01;                         /* Toggle P1.0 each time we print */
  34.     printf ("Hello World\n");   /* Print "Hello World" */
  35.   }
  36. }


復(fù)制代碼
代碼。
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2021-12-14 10:19 | 顯示全部樓層
屏幕截圖 2021-12-14 101641.jpg
keil幫助文件中使用串口中斷和緩存的代碼。
回復(fù)

使用道具 舉報(bào)

ID:578842 發(fā)表于 2021-12-14 11:09 | 顯示全部樓層
51單片機(jī)包含#include "stdio.h",printf打印到串口,經(jīng)常用
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-15 23:21 | 顯示全部樓層
liuwang2051 發(fā)表于 2021-3-26 09:58
while(1)
        {
                TI=1;

串口發(fā)送中斷標(biāo)致位,如果發(fā)送成功,TI位等于1
回復(fù)

使用道具 舉報(bào)

ID:388477 發(fā)表于 2022-8-11 17:05 | 顯示全部樓層
datouyuan 發(fā)表于 2021-12-14 10:09
keil的安裝目錄中有例程,可以直接拿來用。并且keil的幫助文件有很詳細(xì)的說明和更適合實(shí)際工程的。代碼。

真給力!
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2022-8-12 06:32 | 顯示全部樓層
我只發(fā)現(xiàn)這函數(shù)只能用在串口上,而且沒有電腦上的C程序好用
回復(fù)

使用道具 舉報(bào)

ID:514317 發(fā)表于 2022-8-12 09:58 | 顯示全部樓層
printf本來就可以用   輸出到串口    但是用到接收函數(shù)就復(fù)雜很多了
回復(fù)

使用道具 舉報(bào)

ID:1041297 發(fā)表于 2022-8-12 17:04 | 顯示全部樓層
liuwang2051 發(fā)表于 2021-3-26 09:58
while(1)
        {
                TI=1;

發(fā)送標(biāo)志位TI,當(dāng)發(fā)送完成后TI==1
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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