STC51系列單片機(jī)免掉電下載(熱啟動(dòng)下載)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
相信喜歡單片機(jī)的朋友都用過STC的單片機(jī),用過STC單片機(jī)的朋友都有這種感受:實(shí)惠、易用、功能強(qiáng)大!就是每次下載都要冷啟動(dòng)特別惡心,相信很多朋友的開發(fā)板上的電源鍵都按爛了。
其實(shí)STC單片機(jī)可以不用免掉電下載,想要知道怎樣才能免掉電下載,我們先要了解STC單片機(jī)是怎樣實(shí)現(xiàn)串口下載的,其實(shí)STC單片機(jī)出廠時(shí)就預(yù)置了一段ISP監(jiān)控程序,我們稱作ISP引導(dǎo)碼,這段ISP監(jiān)控程序就好比電腦硬盤的系統(tǒng)引導(dǎo)區(qū)。我們對(duì)STC單片機(jī)上電啟動(dòng)時(shí),單片機(jī)首先執(zhí)行ISP引導(dǎo)碼檢測(cè)串口是否下載程序的命令,如果上位機(jī)在對(duì)單片機(jī)下載程序時(shí),單片機(jī)檢測(cè)到下載數(shù)據(jù)流就啟動(dòng)ISP下載功能對(duì)單片機(jī)進(jìn)行程序下載,這就是我們平時(shí)實(shí)驗(yàn)時(shí)點(diǎn)擊下載后按開發(fā)板電源鍵的過程。
STC單片機(jī)在進(jìn)行冷啟動(dòng)時(shí)會(huì)從ISP引導(dǎo)碼開始執(zhí)行程序,而進(jìn)行熱啟動(dòng)或按復(fù)位鍵軟啟動(dòng)時(shí)是從用戶程序段開始執(zhí)行的。然而熟悉STC單片機(jī)的朋友知道STC單片機(jī)增加了ISP/IAP控制寄存器ISP_CONTR,用來管理ISP/IAP功能和是否軟啟動(dòng),其各位功能大家可參照STC公司相關(guān)資料。當(dāng)我們將ISP_CONTR置為0x60時(shí)單片機(jī)自動(dòng)復(fù)位從ISP引導(dǎo)碼開始執(zhí)行。由此我們?cè)谛枰螺d程序時(shí)將ISP_CONTR置為0x60就可以完成下載了。
下面來介紹怎樣實(shí)現(xiàn)
方法一:通過按復(fù)位鍵來實(shí)現(xiàn),STC單片機(jī)上電復(fù)位時(shí)PCON的POF=1,在按復(fù)位鍵復(fù)位時(shí)POF=0。所以我們?cè)诔绦蛑锌梢杂肞OF來 控制ISP_CONTR。
方法二:利用串口,STC下載軟件中有個(gè)自定義下載,也就是下載前通過串口發(fā)送一段自定義代碼,單片機(jī)收到該代碼后來控制單片機(jī)
ISP_CONTR進(jìn)行軟復(fù)位下載。
/*************************************************************************************程序名稱:STC單片機(jī)免掉電下載*程序作者:itas109*個(gè)人博客:http://blog.csdn.net/itas109*程序版本:V1.1*編制日期:2013-08-05*編譯器:KeilCuVision4*調(diào)試芯片:STC90C516RD+11.0592M晶振*占用資源:1、自定義下載:串口,定時(shí)器T1,中斷2、復(fù)位鍵下載:不占用資源*特別說明:1、修改后的程序可以實(shí)現(xiàn)復(fù)位按鍵和自定義下載同時(shí)進(jìn)行,也可以根據(jù)自己的需要選擇,若用戶所寫程序用到定時(shí)器時(shí),請(qǐng)只是用復(fù)位下載。2、注意使用自定義下載時(shí),盡量不要對(duì)P3口的低四位進(jìn)行操作,否則可能下載失敗。3、該頭文件使用說明:使用時(shí),將該頭文件加入到所編寫的程序當(dāng)中(可以直接添加到Keil的庫文件里面),在main開始調(diào)用Auto_Download()函數(shù)即可,例如:#include//你所需的頭文件#include"download.h"http://添加免掉電下載頭文件voidmain(){Auto_Download();//調(diào)用免掉電下載函數(shù)while(1){//添加你的代碼}}4、自定義下載時(shí),波特率為9600,奇偶位為None,數(shù)據(jù)位為8,停止位為1,自定義下載指令為AB。以上設(shè)置可以自己在程序中修改。5、程序可以根據(jù)自己的喜好修改,不過請(qǐng)標(biāo)注原作者的信息,謝謝!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆原作者信息☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*******源程序地址;http://www.51hei.com/mcu/1405.html********************************程序作者:郭偉(QQ:495817787,Email:)*程序版本:V1.0*編制日期:2012-01-19*編譯器:KeilCuVision4*調(diào)試芯片:STC89C5211.0592M晶振*占用資源:1》自定義下載:串口,定時(shí)器T1,中斷2》復(fù)位鍵下載:不占用資源*特別說明:1》使用本程序時(shí)需要用宏來選擇條件編譯程序段2》使用復(fù)位鍵下載時(shí),只需要在main函數(shù)開頭調(diào)用ResetKey_Download();3>使用自定義下載時(shí)調(diào)用Auto_Download()對(duì)串口進(jìn)行初始化,波特率9600**************************************************************************************/#ifndef_DOWNLOAD_H_#define_DOWNLOAD_H_sfrISP_CONTR=0xE7;//軟復(fù)位寄存器聲明/***選擇下載方式***///#defineSerial_download//若用戶所寫程序沒有用到定時(shí)器,可以去掉注釋,使其有效#defineResetKey_download//使用條件編譯選擇下載方式,可以只使用一個(gè)。/*****************/#ifdefResetKey_download//復(fù)位下載相關(guān)函數(shù)voidResetKey_Download(){if((PCON&0x10)==0){//POF位=0,單片機(jī)軟件復(fù)位PCON=PCON|0x10;//將POF位置1,防止重復(fù)進(jìn)入isp監(jiān)控區(qū)ISP_CONTR=0x60;//軟復(fù)位,從ISP監(jiān)控區(qū)啟動(dòng),如果沒有isp下載流,則重新轉(zhuǎn)向用戶區(qū)引導(dǎo)}else{PCON=PCON&0xef;//將POF清零,以便下次下載}}#endif#ifdefSerial_download//延時(shí)函數(shù)voiddelay_ms(unsignedintms){unsignedinti,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}//初始化串口voidSerial_Download(){EA=1;//開總中斷ES=1;//允許串口中斷TMOD=0x20;//定時(shí)器T1,在方式3中斷產(chǎn)生波特率PCON=0x00;//SMOD=0SCON=0x50;TH1=0xfd;//波特率設(shè)置為9600TL1=0xfd;TR1=1;//開定時(shí)器T1運(yùn)行控制位}//串行口中斷voidSerial_int(void)interrupt4using0{unsignedcharcom_buff;RI=0;com_buff=SBUF;if(com_buff==0xAB){delay_ms(1000);ISP_CONTR=0X60;//軟件復(fù)位后,從ISP程序區(qū)啟動(dòng)}}#endif//自動(dòng)下載調(diào)用函數(shù)voidAuto_Download(){#ifdefSerial_downloadSerial_Download();#endif#ifdefResetKey_downloadResetKey_Download();#endif}#endif