新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 第8節(jié):把.hex機(jī)器碼下載到單片機(jī)的操作流程

        第8節(jié):把.hex機(jī)器碼下載到單片機(jī)的操作流程

        作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
        從業(yè)近十年,教你單片機(jī)入門 第8講:

        燒錄程序也叫下載程序。下載程序的本質(zhì)是什么?把單片機(jī)當(dāng)做一個存儲器,每一條程序指令都對應(yīng)一個唯一的存儲地址,把這些指令一條條存儲到指定的存儲地址中,這就是下載程序的本質(zhì)。對于STC89C52RC單片機(jī),在下載程序時需要上位機(jī)界面軟件和一根USB轉(zhuǎn)串口線。上位機(jī)界面軟件負(fù)責(zé)把指定.hex格式的機(jī)器碼文件打開,.hex格式的機(jī)器碼文件里面記錄著每條程序指令對應(yīng)的地址信息,在下載過程中,上位機(jī)界面軟件根據(jù).hex記錄的指令內(nèi)容和對應(yīng)的地址信息,經(jīng)過USB轉(zhuǎn)串口線,跟單片機(jī)的內(nèi)置引導(dǎo)程序進(jìn)行串口通訊,從而把.hex記錄的信息傳輸?shù)絾纹瑱C(jī)內(nèi)部的flash存儲器中,實(shí)現(xiàn)了程序的下載。

        本文引用地址:http://www.104case.com/article/201611/319818.htm

        在講操作流程之前,請讀者先把以下一個LED燈閃爍的代碼編譯成.hex格式的文件,這個.hex文件保存在D盤的”stc89c52rc”文件夾里。

        #include "REG52.H"

        void delay_long(unsigned int uiDelayLong); //延時函數(shù)

        sbit led_dr=P3^5;

        void main()

        {

        while(1)

        {

        led_dr=1; //LED亮

        delay_long(100); //延時50000個空指令的時間

        led_dr=0; //LED亮

        delay_long(100); //延時50000個空指令的時間

        }

        }

        void delay_long(unsigned int uiDelayLong) //延時函數(shù)

        {

        unsigned int i;

        unsigned int j;

        for(i=0;i

        {

        for(j=0;j<500;j++); //內(nèi)嵌循環(huán)的空指令數(shù)量

        }

        }

        下面詳細(xì)講解把.hex機(jī)器碼下載到單片機(jī)的操作流程。

        第一步:安裝USB轉(zhuǎn)串口驅(qū)動程序的操作流程。所謂上位機(jī)界面軟件就是安裝在電腦端的界面軟件,電腦跟單片機(jī)進(jìn)行通訊,需要一根USB轉(zhuǎn)串口線,欲使USB轉(zhuǎn)串口線正常工作,必須預(yù)先安裝一個USB轉(zhuǎn)串口的驅(qū)動程序。具體的操作是這樣的:在網(wǎng)盤中下載”51CTO下載-CH340SER(win7 64位可用).zip”這個壓縮包文件,解壓后分成“CH341SER”和“INSTALL”這兩個文件夾,雙擊打開“CH341SER”這個文件夾,找到“SETUP.EXE”這個安裝應(yīng)用程序,雙擊啟動,在彈出的界面中,單擊“安裝”按鈕即可完成驅(qū)動程序的安裝。

        第二步:記錄串口號。我用的電腦是XP系統(tǒng),現(xiàn)在以XP系統(tǒng)為例。插入USB轉(zhuǎn)串口線,右擊桌面“我的電腦”,選擇下拉菜單的“設(shè)備管理器”,在彈出的窗口中,點(diǎn)擊“端口”前面的+號,在展開的選項(xiàng)中,會看到“USB-SERTAL CH340(COM6)”這個信息,這個COM6就是要我們記住的串口號。你們的串口號不一定是COM6,請以你們電腦顯示的串口號為準(zhǔn)。

        第三步:打開上位機(jī)界面軟件“STC_ISP”。這個軟件可以在宏晶單片機(jī)的官網(wǎng)下載獲取此軟件。雙擊打開“STC_ISP.exe”這個上位機(jī)界面軟件。

        第四步:選擇單片機(jī)型號。在“單片機(jī)型號”的下拉菜單中選擇“STC89C/LE52RC”這個型號。如果中途彈出推薦選用其它型號的窗口,可以按確定忽略它,我們只要認(rèn)準(zhǔn)“STC89C/LE52RC”這個型號就可以了。

        第五步:設(shè)置串口號。在“串口號”的下拉菜單中,選擇跟前面第二步所記錄一樣的串口號。

        第六步:設(shè)置最高波特率。在“最高波特率”的下拉菜單中,選擇9600波特率。 第六步:設(shè)置最高波特率。在“最高波特率”的下拉菜單中,選擇9600波特率。

        第七步:連接硬件USB轉(zhuǎn)串口線和電源線。USB轉(zhuǎn)串口線一端已經(jīng)連接電腦USB口,另外一端9針串口端跟堅鴻51學(xué)習(xí)板的串口端連接。電源線一端用智能手機(jī)充電器的USB端口供電5V,電源線另一端連接堅鴻51學(xué)習(xí)板的USB供電端口。

        第八步:導(dǎo)入.hex格式的機(jī)器碼文件。點(diǎn)擊上位機(jī)界面軟件的“打開程序文件”的按鈕,在彈出的對話框中,選擇D盤下“stc89c52rc”文件夾目錄下的“stc89c52rc.hex”,雙擊把“stc89c52rc.hex”導(dǎo)入到上位機(jī)界面軟件。

        第九步:啟動下載。點(diǎn)擊上位機(jī)界面軟件的“下載/編程”的按鈕,發(fā)現(xiàn)“正在檢測目標(biāo)單片機(jī)..”的提示信息,此時需要把51學(xué)習(xí)板重新斷電后再上電,很多人也把這個重新上電的過程稱為“冷啟動”。

        第十步:“冷啟動”后觀察是否操作成功的信息。執(zhí)行完前面第九步的“冷啟動”后,如果發(fā)現(xiàn)有“...操作成功!”的提示信息,就說明下載成功了。

        第十一步:堅鴻51學(xué)習(xí)板下載程序失敗時的解決辦法。

        (1)可以先松一下卡座,稍微挪動一下單片機(jī),然后再卡緊單片機(jī)。卡座必須卡緊單片機(jī), 避免接觸不良。

        (2)改變供電電源,很多電腦的USB口供電電源干擾非常大,嚴(yán)重影響下載程序,請把USB電源線插入到手機(jī)充電器5V的USB接口,效果顯著,明顯提高了下載的成功率。

        (3)檢查確保選擇單片機(jī)型號是STC89C/LE52RC,如果軟件彈出推薦其它型號的單片機(jī)窗口,不用管它,我們就選STC89C/LE52RC。

        (4)檢查STC-ISP燒寫軟件是否選擇匹配的COM口。

        (5)單片機(jī)是靠串口燒錄程序進(jìn)去的,單片機(jī)的串口是P3.0,P3.1兩根線,在燒錄程序時,確保P3.0,P3.1這兩根線的黃顏色跳帽必須插上,同時P3.0,P3.1兩個IO口不能跳線到外圍器件上。

        (6)點(diǎn)擊“下載/編程”后,記得再斷電并且重新上電一次。看看是否燒錄成功。

        (7)最低波特率一直設(shè)置為2400,然后把最高波特率先改成9600試一下,如果還不行再把最高波特率改成2400試試。

        (8)如果還不行,就退出軟件,拔掉USB轉(zhuǎn)串口線,同時斷電(必須把整根電源線拔掉!),重新插入USB串口線,重新插入電源線開電,重新打開軟件。

        (9)如果還不行,學(xué)習(xí)板先斷電(必須把整根電源線拔掉!),然后重啟一次電腦。

        (10)總之:如果還不行,就按上述步驟多折騰幾次。最后實(shí)在不行,就嘗試更換到其它USB口,或者嘗試更換到其它電腦上試試。

        詳細(xì)步驟圖:bbs.21ic.com/forum.php

        下節(jié)預(yù)告:主程序的兩個區(qū)域:初始化和循環(huán)。



        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 江都市| 呼和浩特市| 溆浦县| 司法| 犍为县| 乡城县| 兴国县| 肇东市| 陕西省| 龙江县| 凤山县| 侯马市| 铁力市| 精河县| 凉山| 平山县| 恭城| 曲阳县| 友谊县| 吴桥县| 沁水县| 宁武县| 二连浩特市| 尚义县| 鄂托克前旗| 秦皇岛市| 宝坻区| 靖远县| 澄迈县| 连平县| 双城市| 湟源县| 淅川县| 井陉县| 沂南县| 卢龙县| 瑞昌市| 炎陵县| 滦南县| 江阴市| 深圳市|