51微控制器在Keil中使用printf進行串列埠輸出
阿新 • • 發佈:2019-02-18
最近有同學在51微控制器的學習過程中困擾如何使用微控制器串列埠在上位機串列埠助手上輸出顯示的問題,其實很多開發環境都支援使用C語言裡面最常用的printf函式,Keil中也不例外,不僅僅是最常用的STC89C52、keil下其他51系列微控制器如STC12、STC15等同樣適用。具體步驟如下:
在Keil中建立一個空的工程,加入一個原始檔,如main.c 貼上以下程式碼,編譯生成hex檔案,下載到微控制器即可。
需要注意的是:1、需要包含stdio.h標頭檔案 2、串列埠初試化函式中需要有 TI = 1;
廢話少說,直接上程式碼:
#include <stdio.h> #include <reg52.h> void InitUART(void)//使用定時器1作為串列埠波特率發生器 { TH1 = 0xFD; //晶振11.0592mhz 波特率設為9600 TL1 = TH1; TMOD |= 0x20; //定時器1方式2 SCON = 0x50; //串列埠接收使能 ES = 1; //串列埠中斷使能 TR1 = 1; //定時器1使能 TI = 1; //傳送中斷標記位,必須設定 } //毫秒延時函式 void delay_ms(unsigned int t) { unsigned char a,b; while(t--) { for(b=102;b>0;b--) for(a=3;a>0;a--); } } void main() { InitUART(); //初始化串列埠 EA = 1; //開總中斷 while(1) { delay_ms(500); printf("Hello World!\n");//串列埠列印結果 } }