新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stc單片機(jī)不斷電下載程序

stc單片機(jī)不斷電下載程序

作者: 時(shí)間:2012-08-04 來源:網(wǎng)絡(luò) 收藏

在調(diào)試程序中加入串口初始化代碼,串口中斷代碼即可實(shí)現(xiàn)
///******************
TMOD|=0x20;
SCON=0x50;
TH1=0xfd; //12T時(shí)鐘9600bps
TL1=0xfd;
TR1=1;
ES=1;
EA=1;
AUXR=AUXR|0x40; //定時(shí)器1使用1T時(shí)鐘 9600*12=115200bps
///******************

void uart(void) interrupt 4
{
uchar cdd;
if(RI)
{
RI=0;
cdd=SBUF;
if(cdd==0xaa)
{
ISP_CONTR=0x60; //軟復(fù)位,從ISP監(jiān)控區(qū)啟動(dòng)
}
else if(cdd==0x55)
{
ISP_CONTR=0x20; //軟復(fù)位,從用戶程序區(qū)啟動(dòng)
}
else
{
senddata(cdd);
}
}
else
{
TI=0;
}
}

在上演示程序中,利用單片機(jī)串口收到某個(gè)有效數(shù)據(jù)后,執(zhí)行從isp引導(dǎo)區(qū)軟啟動(dòng)的命令(ISP_CONTR=0x60;),實(shí)現(xiàn)程序下載。但該方法為實(shí)現(xiàn)程序下載,占用了一些單片機(jī)資源——串口、中斷等,實(shí)際應(yīng)用中有一些不便。下面介紹另一種程序不斷電下載方法:
考慮到單片機(jī)開發(fā)板在設(shè)計(jì)時(shí)一般都留有一個(gè)手動(dòng)復(fù)位按鈕,能否利用該按鈕實(shí)現(xiàn)程序不斷電下載呢?答案是肯定的!?。。。?P>單片機(jī)上電復(fù)位時(shí),POF=1;單片機(jī)手動(dòng)復(fù)位時(shí),POF=0
單片機(jī)上電運(yùn)行時(shí)對(duì)POF位進(jìn)行判斷,如果POF位=0,將POF位置1,讓單片機(jī)從isp引導(dǎo)區(qū)軟復(fù)位。
如果POF位=1,將POF位清0。

將實(shí)現(xiàn)以上功能的代碼加入到你的程序中,當(dāng)需要時(shí),按下復(fù)位按鈕,此時(shí)POF位=0,單片機(jī)再次從isp引導(dǎo)區(qū)軟復(fù)位,從而實(shí)現(xiàn)程序下載。

該方法只需在用戶程序中嵌入一段判斷POF標(biāo)志位的代碼就能實(shí)現(xiàn)程序不斷電下載,無需占用任何單片機(jī)內(nèi)部資源。

演示程序:

//*******************不斷電******************
#include REG52.H>

sfr ISP_CONTR=0xe7; 軟復(fù)位寄存器聲明
void main(void)
{
//////////////將這段代碼嵌入到程序中////////////////
if((PCON0x10)==0) //如果POF位=0
{
PCON=PCON|0x10; //將POF位置1
ISP_CONTR=0x60; //軟復(fù)位,從ISP監(jiān)控區(qū)啟動(dòng)
}
else
{
PCON=PCON0xef; //將POF位清零
}
//////////////////////////////////////////////

while(1)
{
`

` 用戶程序

`

}
}

操作說明:
1 將演示程序中的紅色代碼復(fù)制到您的程序中,首次使用時(shí)應(yīng)利用斷電下載的方式將含有紅色代碼的程序下載到單片機(jī)中
2 將hex文件載入stc單片機(jī)isp軟件,點(diǎn)擊下載按鈕
3 按下單片機(jī)開發(fā)板上復(fù)位鍵,單片機(jī)進(jìn)行is程序下載

單片機(jī)相關(guān)文章:單片機(jī)教程


c++相關(guān)文章:c++教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理



上一頁 1 2 下一頁

關(guān)鍵詞: stc單片機(jī) 不斷電 下載程序

評(píng)論


相關(guān)推薦

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

關(guān)閉