手把手教您編寫第一個(gè)單片機(jī)程序
51單片機(jī)的開發(fā)環(huán)境是Keil 軟件。Keil 軟件雖然是一個(gè)收費(fèi)軟件,但從uVision2到目前的uVison4版本都有破解版,在網(wǎng)上都可以找到下載。筆者推薦大家使用uVisong4破解版本,好處不用多說。Keil uVision4軟件的壓縮包里附有安裝和破解說明,本文不再贅述。
開發(fā)一個(gè)單片機(jī)程序,一般都要經(jīng)過這幾個(gè)步驟:建立工程->建立C文件->添加C文件到工程->編寫C代碼->設(shè)置目標(biāo)工程的選項(xiàng)->編譯工程產(chǎn)生HEX文件->將HEX文件下載到單片機(jī)。本文將一步一步手把手教您開發(fā)一個(gè)LED閃爍的簡(jiǎn)單且實(shí)用的C51程序。讓您從0基礎(chǔ)起步學(xué)習(xí)開發(fā)51單片機(jī)。
安裝Keil uVison4之后,第一次運(yùn)行出現(xiàn)如圖1的界面,從上往下數(shù),依次是菜單欄、第一條工具欄、第二條工具欄,接下來左邊白色部分為工程文件區(qū)(顯示文件、函數(shù)、語言模板和相關(guān)書籍),右邊灰色部分為文本區(qū)(編寫源文件),最下邊為編譯信息欄(顯示編譯時(shí)產(chǎn)生的相關(guān)信息)。
點(diǎn)擊“Project”菜單項(xiàng),選“New uVision Project…”,跳出創(chuàng)建新工程對(duì)話框,選擇工程放置位置,在這里筆者選擇F盤,并在根目錄創(chuàng)建LED這個(gè)文件夾,用來放置工程文件,如圖2:
打開LED文件夾,然后給新工程取個(gè)名字(可以任意取),在這里筆者取工程名字為“LED”,如圖3:
點(diǎn)擊“保存”按鈕,跳出器件選擇對(duì)話框,如圖4:
找到Atmel單片機(jī),選擇AT89S52,同時(shí)右邊的描述欄里顯示了該器件的基本信息,如圖5:
點(diǎn)擊“OK按鈕,”跳出提示對(duì)話框,如圖6:
提示對(duì)話框問您“是否將8051標(biāo)準(zhǔn)啟動(dòng)代碼復(fù)制到工程文件夾并添加到工程?”,根據(jù)您的需要選擇,一般不需要,在這里筆者選擇“否”。此時(shí),可看到keil uVision4界面左邊的工程窗口里多了一個(gè)目標(biāo)文件夾“Target 1”,其下有一個(gè)源文件組文件夾“Suorce Group 1”,如圖7。此時(shí),新工程已經(jīng)建立,但還只是一個(gè)空的工程。
二.建立C文件和保存C文件
從圖7可看到,“Suorce Group 1”這個(gè)源文件夾下還沒有任何文件。接下來就是創(chuàng)建一個(gè)C文件。點(diǎn)擊“File”菜單,選擇“New”,文檔區(qū)便出現(xiàn)了一個(gè)默認(rèn)文件名為“Text 1”的空白文檔,如圖8:
在該文檔上隨便輸入一個(gè)空格,然后點(diǎn)擊“File”菜單,選擇“Save”,跳出保存對(duì)話框,如圖9,輸入文件名為“LED.c”,點(diǎn)擊“保存”按鈕。這一步需要注意的是這個(gè)C文件必須保存在剛才創(chuàng)建的工程文件夾下,否則在后面編譯時(shí)會(huì)出錯(cuò)。C文件的文件名一般和工程名一致。擴(kuò)展名必須為“.c”。這個(gè)C文件就是您后面要編寫C語言源代碼的源文件,現(xiàn)在已經(jīng)在你的工程文件夾里了。
三.添加C文件到工程
雖然“LED.c”這個(gè)文件已經(jīng)在您的工程文件夾里,但還不屬于你的工程文件,如果您不把它添加到工程里去,它的存在對(duì)您這個(gè)工程沒有任何意義。接下來就是把C文件添加到您的工程里,讓它變成您的工程文件。右鍵點(diǎn)擊左邊工程窗口里的“Suorce Group 1”這個(gè)源文件夾,選“Add File to Group ‘Suorce Group 1’…”,跳出添加源文件對(duì)話框,找到剛才建立的“LED.c”文件,點(diǎn)擊“Add”按鈕后,再點(diǎn)擊“Close”按鈕退出,不要重復(fù)點(diǎn)擊,如圖10:
這時(shí)可以看到“Suorce Group 1”這個(gè)源文件下多了一個(gè)源文件“LED.c”,同時(shí),右邊的文檔區(qū)的文件名也改變了,如圖11。
四.編寫C代碼
在空白的文檔區(qū)輸入如下C代碼:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#i nclude<reg52.h>//包含頭文件
sbit led=P2^0;//定義位變量led,使其關(guān)聯(lián)單片機(jī)管腳P2.0
void Delayms(unsigned int t);//聲明延時(shí)函數(shù)
/////////////////////////////////////////////////////////////////////////////////
int main(void)//主函數(shù)(C語言程序入口函數(shù))
{
while(1)
{
led=0;//P2.0拉低,點(diǎn)亮LED
Delayms(500);//調(diào)用延時(shí)函數(shù),延時(shí)500毫秒
led=1;//P2.0拉高,熄滅LED
Delayms(500);//調(diào)用延時(shí)函數(shù),延時(shí)500毫秒
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
void Delayms(unsigned int t)//定義延時(shí)函數(shù)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);//大約延時(shí)1毫秒
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
這是一個(gè)常用的指示燈閃爍的程序,輸入完成以后,先不要馬上編譯,還需要作一些設(shè)置。
五.工程選項(xiàng)設(shè)置
這一步主要是設(shè)置時(shí)鐘頻率和產(chǎn)生HEX文件這兩項(xiàng)。進(jìn)入工程選項(xiàng)有兩個(gè)途徑:從“Project”菜單進(jìn)入和直接點(diǎn)擊工具欄快捷按鈕進(jìn)入。這里使用工具欄快捷按鈕進(jìn)入,點(diǎn)擊第二條工具欄的第7個(gè)按鈕(Target Opsions…),跳出選項(xiàng)對(duì)話框,默認(rèn)選項(xiàng)卡為“Target”,如圖12,將晶振頻率設(shè)為你目標(biāo)板所使用的晶振頻率,這里設(shè)為12.0;再點(diǎn)擊“Output”選項(xiàng)卡,將“Create HEX File ”復(fù)選框打勾,這個(gè)項(xiàng)設(shè)置絕不能忽略,否則您的工程就沒有 HEX文件產(chǎn)生。其他選項(xiàng)保持默認(rèn)。最后點(diǎn)擊“OK”按鈕,完成選項(xiàng)設(shè)置。
六.編譯工程產(chǎn)生HEX文件
點(diǎn)擊第二條工具欄的第三個(gè)按鈕(Rebuild),工程便進(jìn)入編譯鏈接狀態(tài),“Build Output”信息欄就會(huì)出現(xiàn)相關(guān)的編譯信息,如圖13。從該信息欄可以知道程序的大小,使用了的多少內(nèi)部RAM和外部RAM、生成多少個(gè)代碼、是否生成HEX文件、有多少個(gè)錯(cuò)誤和警告等信息。如果有錯(cuò)誤,目標(biāo)文件將不會(huì)被創(chuàng)建,只要雙擊錯(cuò)誤信息,光標(biāo)就會(huì)跳到C文檔錯(cuò)誤代碼的行號(hào)或錯(cuò)誤代碼的附近,方便您排查錯(cuò)誤。
七.將HEX文件下載到單片機(jī)
編譯通過的C代碼,在工程文件夾下就會(huì)生成很多文件,其中有兩個(gè)文件是最重要的,一個(gè)是擴(kuò)展名為“.c”文件“LED.c”,這是移植程序用的C源文件,是程序的核心,擁有這個(gè)文件就相當(dāng)于擁有整個(gè)程序;另一個(gè)是擴(kuò)展名為“.hex”的文件“LED.hex”,這是下載程序用的文件。這兩個(gè)文件都可以用記事本打開。“LED.hex”文件是采用Intel hex文件格式存儲(chǔ)程序代碼的。下載程序的時(shí)用下載軟件打開這個(gè)hex文件,將文件里的程序代碼提取出來寫入單片機(jī)的程序存儲(chǔ)區(qū)里。
在下載單片機(jī)程序之前,您需要構(gòu)建一個(gè)單片機(jī)最小系統(tǒng),請(qǐng)參閱筆者的《學(xué)單片機(jī)從構(gòu)建最小系統(tǒng)開始》一文。下載軟件使用WSFISP軟件,也可以用AtmelISP軟件。下載線可根據(jù)筆者提供的原理圖自己DIY,也可以購買。51單片機(jī)程序下載軟件操作都很簡(jiǎn)單,本文不再敘述。