找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6024|回復(fù): 19
收起左側(cè)

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

  [復(fù)制鏈接]
ID:60379 發(fā)表于 2020-10-8 15:02 | 顯示全部樓層 |閱讀模式
本帖最后由 無量壽經(jīng) 于 2020-10-8 15:06 編輯

時間長了,居然把這個簡單實(shí)用的功能忘了,重新整理了下,適用于STC89、STC12、STC15、STC8等所有型號的STC單片機(jī)快速高效下載程序。完整工程可查看附件。


STC單片機(jī)不斷電下載程序.rar (723.45 KB, 下載次數(shù): 56)
原理:先測試出STC-ISP下載軟件下發(fā)的串口命令,在程序中開啟串口中斷,中斷接收得到下載命令就執(zhí)行一條單片機(jī)復(fù)位命令,程序就自動下載進(jìn)去了,整個過程不斷電,也不需要操作復(fù)位按鈕,下載過程不需要觸碰硬件。
1.jpg
   1   下載最低波特率9600


2.jpg
   2   接收波特率9600
接收波特率9600,接收到的連續(xù)數(shù)據(jù)為7F,接收波特率不同,結(jié)果也會不一樣。
知道了STC-ISP軟件下發(fā)的數(shù)據(jù),我們程序開啟串口接收中斷,判斷接收的數(shù)據(jù)如果是這里7F,讓單片機(jī)執(zhí)行一條復(fù)位命令,程序就下載進(jìn)去了。

#include "STC15W4K.H"      // 包含 "STC15W4K.H"寄存器定義頭文件

unsigned  char num=0;       // 存放接收到的1個字節(jié)的數(shù)據(jù)
void delay500ms(void)
{
   unsigned char i,j,k;
  for(i=93;i>0;i--)     //注意后面沒分號
  for(j=235;j>0;j--)    //注意后面沒分號
  for(k=125;k>0;k--);    //注意后面有分號
}
void UART_init(void)
{        
    // 下面代碼設(shè)置定時器2
    T2H  = 0xFD;  //波特率:9600 /22.1184MHZ,1T
    T2L  = 0xC0;  //波特率:9600 /22.1184MHZ,1T
    AUXR = 0x15;    // 0001 0101,T2R=1啟動T2運(yùn)行,T2x12=1,定時器2按1T計(jì)數(shù),S1ST2=1
    // 下面代碼設(shè)置定串口1
    SCON = 0x50;  // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允許接收)
    // 下面代碼設(shè)置中斷
    ES   = 1;     //開串口1中斷
    EA   = 1;     //開總中斷
}

void main()
{
    UART_init();
    P00=0;
    delay500ms();
    P00=1;
    while(1)
    {
       P01=!P01;
       delay500ms();
    }
}  

void UART1(void) interrupt 4 // 串行口1中斷函數(shù)
{
    if(TI)
    {
       TI = 0;           
    }
    if(RI)
    {
       RI = 0;
       num = SBUF;
       if (num==0x7F)  
       {
           IAP_CONTR   =    0x60;   //0110,0000  軟復(fù)位到系統(tǒng)ISP監(jiān)控區(qū)
       }      
    }
}




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2020-10-8 16:19 | 顯示全部樓層
這個在調(diào)試程序的時候,確實(shí)很方便,謝謝版主,牛逼
回復(fù)

使用道具 舉報(bào)

ID:387856 發(fā)表于 2020-10-8 17:53 | 顯示全部樓層
是不是程序里面加上這一段就可以了不斷電下載了,調(diào)試OK后,再把這段程序刪掉  是不是這樣?
回復(fù)

使用道具 舉報(bào)

ID:224104 發(fā)表于 2020-10-9 06:46 | 顯示全部樓層
還有一種方法是通過ne555定時器電路自動斷電再自動上電。免去第二片單片機(jī),節(jié)省成本
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2020-10-9 09:10 | 顯示全部樓層
你這種只適用不帶串口通訊的工程或項(xiàng)目,如果有用到串口通訊就不可能用這樣就能解決的事,因?yàn)樵谕ㄓ嵾^程中也完全有接到7F這個字符的數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:191408 發(fā)表于 2020-10-9 09:48 | 顯示全部樓層
在串口通訊程序里面加一個復(fù)位程序就可以實(shí)現(xiàn)了file:///C:/Users/zhang/Desktop/%E4%B8%8B%E8%BD%BD.png 下載.png
回復(fù)

使用道具 舉報(bào)

ID:518902 發(fā)表于 2020-10-9 22:00 | 顯示全部樓層
guysxpf 發(fā)表于 2020-10-9 06:46
還有一種方法是通過ne555定時器電路自動斷電再自動上電。免去第二片單片機(jī),節(jié)省成本

您好 您的這種做法是ne555的延時器的應(yīng)用嗎? 這樣子不還是要重新上電嗎、。。。。
回復(fù)

使用道具 舉報(bào)

ID:448556 發(fā)表于 2020-10-16 10:57 | 顯示全部樓層
這么麻煩干啥 弄個鼠標(biāo)按鍵搞定
回復(fù)

使用道具 舉報(bào)

ID:137736 發(fā)表于 2021-12-16 21:42 | 顯示全部樓層
aking991 發(fā)表于 2020-10-9 09:10
你這種只適用不帶串口通訊的工程或項(xiàng)目,如果有用到串口通訊就不可能用這樣就能解決的事,因?yàn)樵谕ㄓ嵾^程中 ...

連續(xù)重復(fù)檢測進(jìn)行計(jì)數(shù),可以避免
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-17 00:15 | 顯示全部樓層
只是這方法寫的程序老要帶多一點(diǎn)代碼?
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-17 00:18 | 顯示全部樓層
這個方法老要帶點(diǎn)一點(diǎn)沒用的代碼?芯片燒好程序了,就是多余的了,用來測試倒還有點(diǎn)用
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-17 00:27 | 顯示全部樓層
aking991 發(fā)表于 2020-10-9 09:10
你這種只適用不帶串口通訊的工程或項(xiàng)目,如果有用到串口通訊就不可能用這樣就能解決的事,因?yàn)樵谕ㄓ嵾^程中 ...

這個可以發(fā)送多個同樣的字節(jié)就行了,網(wǎng)上有人做出來了,收到十個7f才下啟動下載
回復(fù)

使用道具 舉報(bào)

ID:654797 發(fā)表于 2021-12-17 00:32 | 顯示全部樓層
aking991 發(fā)表于 2020-10-9 09:10
你這種只適用不帶串口通訊的工程或項(xiàng)目,如果有用到串口通訊就不可能用這樣就能解決的事,因?yàn)樵谕ㄓ嵾^程中 ...

有種USB轉(zhuǎn)UART接口的下載器,我測試過了,他們做的是接收到40個7F就自動斷電重啟的方法下載的
回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2021-12-17 08:22 | 顯示全部樓層
這種只適用無校驗(yàn)位的程序,如果項(xiàng)目是偶校驗(yàn)或是其它的呢,能實(shí)現(xiàn)嗎
回復(fù)

使用道具 舉報(bào)

ID:548757 發(fā)表于 2021-12-17 09:17 | 顯示全部樓層
好文章!謝謝分享!
回復(fù)

使用道具 舉報(bào)

ID:137736 發(fā)表于 2021-12-18 21:10 | 顯示全部樓層
驗(yàn)證通不過,IAP_CONTR   = 0Xe0也許可以
回復(fù)

使用道具 舉報(bào)

ID:978751 發(fā)表于 2022-3-19 21:59 | 顯示全部樓層
zhlzhang 發(fā)表于 2020-10-9 09:48
在串口通訊程序里面加一個復(fù)位程序就可以實(shí)現(xiàn)了

剛試了一下的確可行.
回復(fù)

使用道具 舉報(bào)

ID:1064915 發(fā)表于 2023-8-26 18:52 | 顯示全部樓層
第一次需要斷電,后續(xù)調(diào)試方便
回復(fù)

使用道具 舉報(bào)

ID:1085441 發(fā)表于 2023-8-26 21:30 | 顯示全部樓層
好辦法,人多力量大,相互學(xué)習(xí)才能進(jìn)步
回復(fù)

使用道具 舉報(bào)

ID:195666 發(fā)表于 2023-11-6 16:23 | 顯示全部樓層
可行,可字自定義字節(jié)內(nèi)容和字節(jié)數(shù)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表