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

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

STC單片機免掉電下載

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

       相信喜歡單片機的朋友都用過STC的單片機,用過STC單片機的朋友都有這種感受:實惠、易用、功能強大!就是每次下載都要冷啟動特別惡心,相信很多朋友的開發(fā)板上的電源鍵都按爛了。。。。。
        其實STC單片機可以不用免掉電下載,想要知道怎樣才能免掉電下載,我們先要了解STC單片機是怎樣實現(xiàn)串口下載的,其實STC單片機出廠時就預(yù)置了一段ISP監(jiān)控程序,我們稱作ISP引導碼,這段ISP監(jiān)控程序就好比電腦硬盤的系統(tǒng)引導區(qū)。我們對STC單片機上電啟動時,單片機首先執(zhí)行ISP引導碼檢測串口是否下載程序的命令,如果上位機在對單片機下載程序時,單片機檢測到下載數(shù)據(jù)流就啟動ISP下載功能對單片機進行程序下載,這就是我們平時實驗時點擊下載后按開發(fā)板電源鍵的過程。
        STC單片機在進行冷啟動時會從ISP引導碼開始執(zhí)行程序,而進行熱啟動或按復位鍵軟啟動時是從用戶程序段開始執(zhí)行的。然而熟悉STC單片機的朋友知道STC單片機增加了ISP/IAP控制寄存器ISP_CONTR,用來管理ISP/IAP功能和是否軟啟動,其各位功能大家可參照STC公司相關(guān)資料。當我們將ISP_CONTR置為0x60時單片機自動復位從ISP引導碼開始執(zhí)行。由此我們在需要下載程序時將ISP_CONTR置為0x60就可以完成下載了。。。偶耶!
    下面來介紹怎樣實現(xiàn)
            方法一:通過按復位鍵來實現(xiàn),STC單片機上電復位時PCON的POF=1,在按復位鍵復位時POF=0。所以我們在程序中可以用POF來   控制ISP_CONTR。
            方法二:利用串口,STC下載軟件中有個自定義下載,也就是下載前通過串口發(fā)送一段自定義代碼,單片機收到該代碼后來控制單片機
ISP_CONTR進行軟復位下載。
 
相關(guān)程序代碼如下:
 

/************************************** I LOVE MCU ************************************
* 程序名稱:STC單片機免掉電下載
* 程序作者: 郭偉(QQ:495817787 ,Email:)
* 程序版本: V1.0
* 編制日期: 2012-01-19
* 編譯器:Keil C uVision4
* 調(diào)試芯片:STC89C52 11.0592M晶振
* 占用資源:  1》自定義下載:串口,定時器T1,中斷
                     2》復位鍵下載:不占用資源
* 特別說明:  1》使用本程序時需要用宏來選擇條件編譯程序段
                      2》使用復位鍵下載時,只需要在main函數(shù)開頭調(diào)用ResetKey_Download();
                      3> 使用自定義下載時調(diào)用Auto_Download()對串口進行初始化,波特率9600
       
********************************* I LOVE MCU ******************************************/
#ifndef _DOWNLOAD_H_   
#define _DOWNLOAD_H_
#include <STC89.H>
#include "delay.h"
/***選擇下載方式***/
#define Auto_download
//#define ResetKey_download//使用條件編譯選擇下載方式
/*****************/
#ifdef ResetKey_download
void ResetKey_Download()
{   
 if ((PCON & 0x10) == 0)
 {    
  //POF位=0,單片機軟件復位
  PCON = PCON | 0x10;     //將POF位置1,防止重復進入isp監(jiān)控區(qū)
      ISP_CONTR = 0x60;       //軟復位,從ISP監(jiān)控區(qū)啟動,如果沒有isp下載流,則重新轉(zhuǎn)向用戶區(qū)引導
 }
 else
 {
     PCON = PCON & 0xef;     //將POF位清零
 }
}
#endif

#ifdef Auto_download
unsigned char Sbuff_isp[8];//申明緩沖區(qū)
void Auto_Download()
{
 //定時器1工作在模式2,8Bit自動重裝載模式
 TMOD = (TMOD & 0X0F) | 0X20;   /*設(shè)置波特率*/
 TH1=0xfd;
 TL1=0xfd;
 RI=0;
 TI=0;
 SCON = 0x50;
 ES = 1;
 EA = 1; 
 TR1 =1;
}

//自動ISP功能函數(shù)
void ISP_Check()
{
         unsigned char i=0,k=0;
        unsigned char code isp_comm[8]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};//串口發(fā)送數(shù)據(jù)要與該數(shù)組數(shù)據(jù)相同
          for(i=0;i<8;i++)
         {
              if(Sbuff_isp[i]!=isp_comm[i])
              { k=1;}
        }
    if(k==0)
     {
      EA = 0;
     delay_ms(1000);//等待1秒
      ISP_CONTR = 0x60; //軟復位進入ISP下載模式  
    }  
}
//串口接收中斷
void Serial_int(void) interrupt 4 using 1
{
 static uchar i=0;
 if (RI)
 {
       Sbuff_isp[i] = SBUF;//將串口數(shù)據(jù)依次存入緩沖區(qū)
       i++;
       RI = 0; 
 }
 if(i==8)
 {
  ISP_Check();
  i=0;
    } 
}
#endif
#endif
 
歡迎喜歡單片機的朋友來多多交流。。。
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 久久久久久网站 | av免费观看在线 | 欧美日韩专区 | 一区二区三区国产 | 成人在线免费 | 欧美黄 片免费观看 | 56pao在线| 精品伊人久久 | 日韩成人免费av | 久久精品国产精品青草 | 国产一区二区在线播放 | 狠狠色综合久久丁香婷婷 | 全免费a级毛片免费看视频免费下 | 亚洲色图在线观看 | 午夜精品久久久久久久久久久久久 | 久久久综合久久 | 性天堂网 | 欧日韩在线 | 国产自产21区 | 亚洲欧美中文日韩在线v日本 | 国产欧美精品一区二区色综合 | 黄色电影在线免费观看 | 亚洲精品日韩综合观看成人91 | 福利精品 | 九九九久久国产免费 | 中文字幕国产一区 | 黄色一级在线播放 | 日韩精品| 中文精品久久 | 免费中文字幕 | 久久久久久久电影 | 日韩成人在线观看 | 中文字幕在线中文 | 男人天堂网址 | 龙珠z国语版在线观看 | 色频| 久久婷婷色 | 视频在线观看一区二区 | 欧美日韩国产高清 | 久久99精品国产 | 亚洲视频在线观看免费 |