1. 程式人生 > >手把手教您編寫第一個微控制器程式

手把手教您編寫第一個微控制器程式

51微控制器的開發環境是Keil 軟體。Keil 軟體雖然是一個收費軟體,但從uVision2到目前的uVison4版本都有破解版,在網上都可以找到下載。筆者推薦大家使用uVisong4破解版本,好處不用多說。Keil uVision4軟體的壓縮包裡附有安裝和破解說明,本文不再贅述。

開發一個微控制器程式,一般都要經過這幾個步驟:建立工程->建立C檔案->新增C檔案到工程->編寫C程式碼->設定目標工程的選項->編譯工程產生HEX檔案->將HEX檔案下載到微控制器。本文將一步一步手把手教您開發一個LED閃爍的簡單且實用的C51程式。讓您從0基礎起步學習開發51微控制器。

安裝Keil uVison4之後,第一次執行出現如圖1的介面,從上往下數,依次是選單欄、第一條工具欄、第二條工具欄,接下來左邊白色部分為工程檔案區(顯示檔案、函式、語言模板和相關書籍),右邊灰色部分為文字區(編寫原始檔),最下邊為編譯資訊欄(顯示編譯時產生的相關資訊)。

 

 

圖1

一.建立工程

點選“Project”選單項,選“New uVision Project…”,跳出建立新工程對話方塊,選擇工程放置位置,在這裡筆者選擇F盤,並在根目錄建立LED這個資料夾,用來放置工程檔案,如圖2:

 

 

圖2

開啟LED資料夾,然後給新工程取個名字(可以任意取),在這裡筆者取工程名字為“LED”,如圖3:

 

 

圖3

點選“儲存”按鈕,跳出器件選擇對話方塊,如圖4:

 

 

圖4

找到Atmel微控制器,選擇AT89S52,同時右邊的描述欄裡顯示了該器件的基本資訊,如圖5:

 

 

圖5

點選“OK按鈕,”跳出提示對話方塊,如圖6:

 

 

圖6

提示對話方塊問您“是否將8051標準啟動程式碼複製到工程資料夾並新增到工程?”,根據您的需要選擇,一般不需要,在這裡筆者選擇“否”。此時,可看到keil uVision4介面左邊的工程窗口裡多了一個目標資料夾“Target 1”,其下有一個原始檔組資料夾“Suorce Group 1”,如圖7。此時,新工程已經建立,但還只是一個空的工程。

 

 

圖7

二.建立C檔案和儲存C檔案

從圖7可看到,“Suorce Group 1”這個原始檔夾下還沒有任何檔案。接下來就是建立一個C檔案。點選“File”選單,選擇“New”,文件區便出現了一個預設檔名為“Text 1”的空白文件,如圖8:

 

 

圖8

在該文件上隨便輸入一個空格,然後點選“File”選單,選擇“Save”,跳出儲存對話方塊,如圖9,輸入檔名為“LED.c”,點選“儲存”按鈕。這一步需要注意的是這個C檔案必須儲存在剛才建立的工程資料夾下,否則在後面編譯時會出錯。C檔案的檔名一般和工程名一致。副檔名必須為“.c”。這個C檔案就是您後面要編寫C語言原始碼的原始檔,現在已經在你的工程資料夾裡了。

 

 

圖9

三.新增C檔案到工程

雖然“LED.c”這個檔案已經在您的工程資料夾裡,但還不屬於你的工程檔案,如果您不把它新增到工程裡去,它的存在對您這個工程沒有任何意義。接下來就是把C檔案新增到您的工程裡,讓它變成您的工程檔案。右鍵點選左邊工程窗口裡的“Suorce Group 1”這個原始檔夾,選“Add File to Group ‘Suorce Group 1’…”,跳出新增原始檔對話方塊,找到剛才建立的“LED.c”檔案,點選“Add”按鈕後,再點選“Close”按鈕退出,不要重複點選,如圖10:

 

 

圖10

這時可以看到“Suorce Group 1”這個原始檔下多了一個原始檔“LED.c”,同時,右邊的文件區的檔名也改變了,如圖11。

 

 

圖11

四.編寫C程式碼

在空白的文件區輸入如下C程式碼:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#i nclude//包含標頭檔案

sbit led=P2^0;//定義位變數led,使其關聯微控制器管腳P2.0

void Delayms(unsigned int t);//宣告延時函式

/////////////////////////////////////////////////////////////////////////////////

int main(void)//主函式(C語言程式入口函式)

{

while(1)

{

led=0;//P2.0拉低,點亮LED

Delayms(500);//呼叫延時函式,延時500毫秒

led=1;//P2.0拉高,熄滅LED

Delayms(500);//呼叫延時函式,延時500毫秒

}

return 0;

}

//////////////////////////////////////////////////////////////////////////////////

void Delayms(unsigned int t)//定義延時函式

{

unsigned int i,j;

for(i=0;i

for(j=0;j<120;j++);//大約延時1毫秒

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

這是一個常用的指示燈閃爍的程式,輸入完成以後,先不要馬上編譯,還需要作一些設定。

五.工程選項設定

這一步主要是設定時鐘頻率和產生HEX檔案這兩項。進入工程選項有兩個途徑:從“Project”選單進入和直接點選工具欄快捷按鈕進入。這裡使用工具欄快捷按鈕進入,點選第二條工具欄的第7個按鈕(Target Opsions…),跳出選項對話方塊,預設選項卡為“Target”,如圖12,將晶振頻率設為你目標板所使用的晶振頻率,這裡設為12.0;再點選“Output”選項卡,將“Create HEX File ”複選框打勾,這個項設定絕不能忽略,否則您的工程就沒有 HEX檔案產生。其他選項保持預設。最後點選“OK”按鈕,完成選項設定。

 

 

圖12

六.編譯工程產生HEX檔案

點選第二條工具欄的第三個按鈕(Rebuild),工程便進入編譯連結狀態,“Build Output”資訊欄就會出現相關的編譯資訊,如圖13。從該資訊欄可以知道程式的大小,使用了的多少內部RAM和外部RAM、生成多少個程式碼、是否生成HEX檔案、有多少個錯誤和警告等資訊。如果有錯誤,目標檔案將不會被建立,只要雙擊錯誤資訊,游標就會跳到C文件錯誤程式碼的行號或錯誤程式碼的附近,方便您排查錯誤。

 

 

圖13

七.將HEX檔案下載到微控制器

編譯通過的C程式碼,在工程資料夾下就會生成很多檔案,其中有兩個檔案是最重要的,一個是副檔名為“.c”檔案“LED.c”,這是移植程式用的C原始檔,是程式的核心,擁有這個檔案就相當於擁有整個程式;另一個是副檔名為“.hex”的檔案“LED.hex”,這是下載程式用的檔案。這兩個檔案都可以用記事本開啟。“LED.hex”檔案是採用Intel hex檔案格式儲存程式程式碼的。下載程式的時用下載軟體開啟這個hex檔案,將檔案裡的程式程式碼提取出來寫入微控制器的程式儲存區裡。

在下載微控制器程式之前,您需要構建一個微控制器最小系統,請參閱筆者的《學微控制器從構建最小系統開始》一文。下載軟體使用WSFISP軟體,也可以用AtmelISP軟體。下載線可根據筆者提供的原理圖自己DIY,也可以購買。51微控制器程式下載軟體操作都很簡單,本文不再敘述。