日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 概述進(jìn)行C/C++開發(fā)的時(shí)候我們都會(huì)需要打印調(diào)試信息,打印調(diào)試信息時(shí)我們習(xí)慣使用printf函數(shù),但是在Keil C51環(huán)境下,由于我們的程序是下載到單片機(jī)里,使用printf函數(shù)時(shí)不能直接打印到串口上,這個(gè)時(shí)候就需要我們對

 概述

進(jìn)行C/C++開發(fā)的時(shí)候我們都會(huì)需要打印調(diào)試信息,打印調(diào)試信息時(shí)我們習(xí)慣使用printf函數(shù),但是在Keil C51環(huán)境下,由于我們的程序是下載到單片機(jī)里,使用printf函數(shù)時(shí)不能直接打印到串口上,這個(gè)時(shí)候就需要我們對printf函數(shù)輸出重定向。

重定向

重定向printf很簡單,我們知道,printf函數(shù)是調(diào)用putchar實(shí)現(xiàn)字符數(shù)據(jù)傳送的。我們只要重寫putchar函數(shù),就可以對printf進(jìn)輸出重定向。

代碼清單

下面是自己在Keil 5環(huán)境下,使用單片機(jī)STC12測試printf重定向功能的代碼清單

#include

#include

//UART1 初始化

void Uart1Init(void) //115200bps@11.0592MHz

{

PCON &= 0x7F; //波特率不倍速

SCON = 0x50; //8位數(shù)據(jù),可變波特率

AUXR |= 0x04; //1T模式

BRT = 0xFD; //設(shè)置獨(dú)立波特率發(fā)生器重裝值

AUXR |=0X01; //串口1選擇獨(dú)立發(fā)生器為波特率發(fā)生器

AUXR |=0X10; //啟動(dòng)獨(dú)立波特率發(fā)生器

ES = 1; //使能串口1中斷

}

//UART1 發(fā)送串口數(shù)據(jù)

void UART1_SendData(char dat)

{

ES=0; //關(guān)串口中斷

SBUF=dat;

while(TI!=1); //等待發(fā)送成功

TI=0; //清除發(fā)送中斷標(biāo)志

ES=1; //開串口中斷

}

//UART1 發(fā)送字符串

void UART1_SendString(char *s)

{

while(*s)//檢測字符串結(jié)束符

{

UART1_SendData(*s++);//發(fā)送當(dāng)前字符

}

}

//重寫putchar函數(shù)

char putchar(char c)

{

UART1_SendData(c);

return c;

}

void main(void)

{

Uart1Init();

UART1_SendString("Hello World!\r\n");

printf("printf Test!\r\n");

printf("Complie Time:%s\r\n", __TIME__);

while(1)

{

}

}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

打開串口把波特率調(diào)成115200bps,可以看到串口打印如下信息:

Hello World!

printf Test!

Complie Time:11:12:36

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

嵌入式開發(fā)作為一種專業(yè)且技術(shù)密集型的領(lǐng)域,涵蓋了從硬件底層驅(qū)動(dòng)、中間件到應(yīng)用層軟件開發(fā)等多個(gè)層面的工作,其所需的工具種類繁多,各有針對性,旨在提升開發(fā)效率、保證代碼質(zhì)量以及簡化調(diào)試過程。

關(guān)鍵字: 嵌入式開發(fā) keil

單片機(jī)內(nèi)部有很多的特殊功能寄存器,每個(gè)寄存器在單片機(jī)內(nèi)部都分配有唯一的地址,一般我們會(huì)根據(jù)寄存器功能的不同給寄存器賦予各自的名稱,當(dāng)我們需要在程序中操作這些特殊功能寄存器時(shí),必須要在程序的最前面將這些名稱加以聲明,聲明的...

關(guān)鍵字: C51 數(shù)據(jù)類型 擴(kuò)充定義

數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標(biāo)識、表示和允許值的數(shù)據(jù)單元,在一定語境下,通常用于構(gòu)建一個(gè)語義正確、獨(dú)立且無歧義的特定概念語義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若...

關(guān)鍵字: C51 數(shù)據(jù)類型

之后新建新的工程,添加.a文件就可以使用了,當(dāng)然也可以使用keil來添加,但是keil默認(rèn)的是用.lab,需要自己配置一下文件屬性,改為lib文件即可。一半release sdk的時(shí)候用這種方式很關(guān)鍵的,畢竟自己的核心代...

關(guān)鍵字: keil 文件屬性 lib文件

▼點(diǎn)擊下方名片,關(guān)注公眾號▼歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號,回復(fù)關(guān)鍵字獲取更多免費(fèi)資料?;貜?fù)【加群】,限時(shí)免費(fèi)進(jìn)入知識共享群;回復(fù)【3D封裝庫】,常用元器件的3D封裝庫;回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容...

關(guān)鍵字: C51 MDK RealView

在Keil C51軟件中51單片機(jī)的中斷服務(wù)和外設(shè)驅(qū)動(dòng)程序的開發(fā)

關(guān)鍵字: keil5 編譯 C51

Intel公司1980年推出了MCS-51系列單片機(jī):集成 8位CPU、4K字節(jié)ROM、128字節(jié)RAM、4個(gè)8位并口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。尋址范圍64K,并有控制功能較強(qiáng)的布爾處理器。 80C5...

關(guān)鍵字: C51 KEIL 編程

c上標(biāo)3下標(biāo)5怎么算用計(jì)算機(jī),c上標(biāo)3下標(biāo)5怎么算

關(guān)鍵字: C51 KEIL

DSP28335與AD7606通過SPI的串行數(shù)據(jù)交互

關(guān)鍵字: keil C
關(guān)閉