新聞中心

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

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

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

支持串口isp程序下載,不必使用專用下載器,僅使用串口就能。但每次都要斷電再上電,比較麻煩。
下面介紹一種不需斷電就能的方法,在程序調(diào)試時(shí)比較方便。
基本原理:
有專用的復(fù)位寄存器,通過對該寄存器寫入不同的數(shù)值可以實(shí)現(xiàn)單片機(jī)熱啟動(dòng)復(fù)位。
寄存器功能如下圖所示:

點(diǎn)擊瀏覽下一頁

由上圖可以看出只要滿足某個(gè)條件,向ISP_CONTR寫入0x60,就可以實(shí)現(xiàn)從ISP監(jiān)控區(qū)軟啟動(dòng)啟動(dòng)
某個(gè)條件設(shè)置為:當(dāng)串口接收到0xaa數(shù)據(jù)時(shí),單片機(jī)執(zhí)行ISP_CONTR=0x60; 指令,從ISP監(jiān)控區(qū)軟啟動(dòng)啟動(dòng)。
演示程序如下:

//*************************STC12C5410AD軟啟動(dòng)演示**************************
//
//收到0xaa,從ISP監(jiān)控區(qū)軟啟動(dòng),利用該特性,可以實(shí)現(xiàn)下載
//收到0x55,從用戶程序區(qū)啟動(dòng)
//2010年3月13日21:58:49
//************************************************************

*************
#include STC12C5410AD.H>
uint c;
//*************** 函數(shù)定義 ******************
void delay1ms(unsigned int j);
void senddata(uchar dc);
//*************** 主程序 ********************
void main(void)
{
///******************
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
///******************
delay1ms(30000);
for(c=0;c256;c++)
{
senddata(c);
delay1ms(200);
}
while(1)
{

}
}
//***************************發(fā)送數(shù)據(jù)**************************
void senddata(uchar dc)
{
SBUF=dc;
while(!TI); //當(dāng)TI=0時(shí),發(fā)送未結(jié)束,循環(huán)等待
TI=0; //當(dāng)TI=1時(shí),發(fā)送結(jié)束,用軟件將TI清零
}
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;
}
}
//*************************延時(shí) n*1ms********************
void delay1ms(unsigned int j)
{
unsigned int i;
for(;j>0;j--)
{ for(i=0;i124;i++)
{;}
}
}

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


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


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


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



上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉