手把手教您編寫第一個微控制器程式
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微控制器程式下載軟體操作都很簡單,本文不再敘述。