久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年03月15日   【字體:

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



由上圖可以看出只要滿足某個(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)stc單片機(jī)不斷電下載
    //收到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;c<256;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;i<124;i++)
        {;}
      }
    }

 

在調(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)程序不斷電下載呢?答案是肯定的!!!!!

單片機(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)部資源。

 

演示程序:

//*******************stc單片機(jī)不斷電下載程序******************
#include <REG52.H>

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

`         用戶程序

`

  }
}

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

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产成人精品一区二区三区网站观看 | 亚洲人成在线观看 | 亚洲视频一区二区三区 | 99免费在线视频 | 欧美色综合一区二区三区 | 成人午夜高清 | 一级毛片免费视频 | 国产欧美日韩一区二区三区在线 | 一区二区视频在线 | 九九精品在线 | 欧美日韩国产精品激情在线播放 | 天天干com| 一区二区三区欧美 | 欧美va大片 | 久久久久久久久久久久久九 | 欧美一区二区免费在线 | 国产精品久久久久久久久图文区 | 综合久久av| av大片| 久久精品小视频 | 欧美成人精品一区二区男人看 | 亚洲日韩欧美一区二区在线 | 在线日韩精品视频 | 亚洲成人久久久 | 在线免费黄色 | 99re国产视频 | 亚洲视频一区在线观看 | 成人福利影院 | a级毛片毛片免费观看久潮喷 | 精品一区二区三区四区 | 日韩视频二区 | 免费成人午夜 | 欧美日韩网站 | 欧美午夜精品理论片a级按摩 | 国产一区二区美女 | 日韩久久久久 | 91精品国产综合久久久久久丝袜 | 成人蜜桃av | 日韩一级精品视频在线观看 | 亚洲区一区二区 | 91污在线 |