(玩(wan)電(dian)子) 電(dian)子技術學(xue)習(xi)與研究
當前位(wei)置︰單片機教程網 >> 基礎教程 >> 瀏覽文章

河南彩票官网

作者(zhe):佚(die)名   來源:本站(zhan)原創   點(dian)擊(ji)數:x  更(geng)新(xin)時間︰2020年02月10日   【字體︰大(da)

  上(shang)一篇建立(li)了第(di)一個單片機C語言項目,但(dan)為了讓編譯好的程序能通過編程器(qi)寫入51芯 片中,要先用編譯器(qi)生成HEX文件,下面來看(kan)看(kan)如(ru)何用KEIL uVISION2來編譯生成用于(yu)燒寫 芯片的HEX文件。HEX文件格式是Intel公司(si)提出(chu)的按地址(zhi)排(pai)列的數據信息,數據寬度為字 節,所(suo)有數據使(shi)用16進制數字表(biao)示,  常用來保存單片機或其他處理器(qi)的目標程序代碼(ma)。它保 存物理程序存儲區中的目標代碼(ma)映(ying)象。一般的編程器(qi)都支持這種zhi)袷健Nwo)們先來打開第(di)一個 項目,打開它的所(suo)在目錄,找到test.Uv2的文件就(jiu)能打開先前的項目了。然後(hou)右擊(ji)圖2-1 中的1項目文件夾,彈出(chu)項目功(gong)能菜單,選Options for Target’Target1’,彈出(chu)項目選項設(she)置窗口, 同(tong)樣先選中項目文件夾圖標,這個時候(hou)在Project菜單中也有一樣的菜單可選。打開項目選項窗口, 轉(zhuan)到Output選項頁圖2-2所(suo)示,圖中1是選擇編譯輸出(chu)的路徑,2是設(she)置編譯輸出(chu)生成的文件 名,3則(ze)是決定是否要創建HEX文件,選中它就(jiu)能輸出(chu)HEX文件到指(zhi)定的路徑中。選好了? 好,我(wo)們再將它重新(xin)編譯一次,很快在編譯信息窗口中就(jiu)顯(xian)示HEX文件創建到指(zhi)定的路徑 中了,如(ru)圖2-3。這樣我(wo)們就(jiu)可用自(zi)己(ji)的編程器(qi)所(suo)附帶的軟(ruan)件去讀取並燒到芯片了,再用實 驗板看(kan)結(jie)果,至于(yu)編程器(qi)或仿真器(qi)品fen)址(zhi)倍嗑嚀宸椒 jiu)看(kan)它的說明書了,這里也不做討(tao)論。

(技巧︰一、在圖2-1中的1里的項目文件樹(shu)形目錄中,先選中對象,再單擊(ji)它就(jiu)可對yun)行重命名操(cao)作,雙擊(ji)文件圖標便可打開文件。二(er)、在Project下拉(la)菜單的最下方jie)凶 嗉 /p>

的項目路徑保存,這里能快速(su)打開最近在編輯的項目。)

圖2-1項目功(gong)能菜單
 

圖2-2    項目選項窗口

圖 2-3    編譯信息窗口

或許(xu)您已把(ba)編譯好的文件燒到了芯片上(shang),如(ru)果您購買(mai)或自(zi)制了帶串行口輸出(chu)元件的學(xue)習(xi)實 驗板,那您就(jiu)能把(ba)串行口和 PC 機串行口相(xiang)聯用串行口調(diao)試軟(ruan)件或 Windows 的超級(ji)終端,將其波特 率設(she)為  1200,就(jiu)能看(kan)到不停輸出(chu)的“Hello  World!”字樣。如(ru)果您還沒有實驗板,那這 里先說說 AT89c51 的最小化系統,再以(yi)一實例程序驗證最小化系統是否在運(yun)行,這個最小化 系統也易于(yu)自(zi)制用于(yu)實驗。圖 2-4 便是 AT89c51 的最小化系統,不過為了讓我(wo)們能看(kan)出(chu)它 是在運(yun)行的,加了一個電(dian)阻和一個 LED,用以(yi)顯(xian)示它的狀態,晶體震蕩器(qi)能根據自(zi)己(ji)的情況使(shi)用, 一般實驗板上(shang)是用 11.0592MHz 或 12MHz,使(shi)用前者(zhe)的好外是能產生標準的串行口波特率,後(hou) 者(zhe)則(ze)一個機器(qi)周期為 1 微(wei)秒,便于(yu)做精確定時。在自(zi)己(ji)做實驗里,注意的是 VCC 是+5V 的, 不能高于(yu)此值,不然將損壞單片機,太低則(ze)不能正(zheng)常工作。在 31 腳(jiao)要接(jie)高電(dian)平,這樣我(wo)們 才能執行片內(na)的程序,如(ru)接(jie)低電(dian)平則(ze)使(shi)用片外的程序存儲器(qi)。下面建一個新(xin)的項目名為 OneLED 來驗證最小化系統是否能工作(所(suo)有的例程都可在筆(bi)者(zhe)的主頁下面下載到,網址(zhi)︰ http://www.51hei.com  。程序如(ru)下︰


 

#include  < AT89X51.h>  //預處理命令

void  main(void)  //主函數名

{

//這是第(di)一種注釋方式

unsigned  int  a;  //定義變量(liang) a 為 int 類型

/* 這是第(di)二(er)種注釋方式

*/

do{  //do  while 組成循環

for  (a=0;  a<50000;  a++);  //這是一個循環 P1_0  =  0;  //設(she) P1.0 口為低電(dian)平,點(dian)亮 LED for  (a=0;  a<50000;  a++);  //這是一個循環 P1_0  =  1;  //設(she) P1.0 口為高電(dian)平,熄滅 LED

}

while(1);

}

圖 2-4    AT89c51 最小化系統

這里先講講 KEIL  C 編譯器(qi)所(suo)支持的注釋語句。一種是以(yi)“//”符(fu)號開始的語句,符(fu)號之後(hou) 的語句都被視為注釋,直到jie)謝爻禱恍小A硪恢質竊ldquo;/*”和“*/”符(fu)號之內(na)的為注釋。注 釋不會被 C 編譯器(qi)所(suo)編譯。一個 C 應用程序中應有一個 main 主函數,main 函數能調(diao)用別


 

的功(gong)能函數,但(dan)其它功(gong)能函數不允許(xu)調(diao)用 main 函數。不論 main 函數放在程序中的那個位(wei)置, 總是先被執行。用上(shang)面學(xue)到的知識編譯寫好的 OneLED 程序,並把(ba)它燒到剛做好的最小化系 統中。上(shang)電(dian),剛開始時 LED 是不亮的(因(yin)為上(shang)電(dian)復位(wei)後(hou)所(suo)有的 IO 口都置 1 引腳(jiao)為高電(dian)平), 然後(hou)延(yan)時一段時間(for  (a=0;  a<50000;  a++)這句在運(yun)行),LED 亮,再延(yan)時,LED 熄滅, 然後(hou)交替亮、滅。第(di)一個真正(zheng)的小實驗就(jiu)做完(wan),如(ru)果沒有這樣的效果那麼您就(jiu)要認真檢查一下電(dian)路或編譯燒寫的步驟了。

 

發(fa)表(biao)評論】【告訴好友】【收藏此文】【關(guan)閉窗口

河南彩票官网

河南彩票官网 | 下一页