×
嵌入式 > 技术百科 > 详情

STC12单片机实现自动下载程序

发布时间:2020-06-17 发布时间:
|

在STC单片机中有两个程序区,用户程序区与ISP程序区。


单片机上电后(冷启动,并非外部手动复位或看门狗复位),先会运行ISP程序,检测是否有合法的下载命令流,占时几十毫秒到几百毫秒, 


如果没有合法的下载命令流,则立即运行用户程序。 


如果有合法的下载命令流,则ISP监控程序开始与ISP下载软件通信,软件也会进入编程模式,向监控程序发送程序码,监控程序接收程序码,并将其写入用户程序区中。 


在编程完毕,对程序校验成功后,用户程序立即生效,开始运行用户程序。


若没有在软件通过串口配合上位机对IAP_CONTR寄存器进行设置(比如下面的程序),那么STC-ISP尝试与MCU握手连接的时候,是以“最低波特率”设置项中的波特率不断的从串口发送“0x7F”信号,直到上电冷启(或者软复位至ISP)经几十毫秒到几百毫秒检测下载命令流后,才停止发送“0x7F”信号。 


若有进行IAP_CONTR的设置,便进行相应的设置相关命令进行。


#include


unsigned char RevData;

//void UartInit()   

//{

//  PCON &= 0x7F;   

//  SCON = 0x50;    

//  AUXR &= 0xBF;   

//  AUXR &= 0xFE;   

//  TMOD &= 0x0F;   

//  TMOD |= 0x20;   

//  TL1 = 0xFD; 

//  TH1 = 0xFD; 

//  ET1 = 0;        

//  TR1 = 1;        

//}

void UartInit()

{

    AUXR &= 0xF7;       

    S2CON = 0x50;       

    AUXR &= 0xFB;       

    BRT = 0xFD; 

    AUXR |= 0x10;   

}



void main()

{

    UartInit();

    EA = 1;

    ES = 1;

    P0 = 0;

    while(1);

}



void Uart() interrupt 4

{

    if(RI)

    {

        RI = 0;

        RevData = SBUF;

        if(RevData == 0x0a)

        {


            IAP_CONTR=0x60; 

        }

    }

    if(TI)

    {}

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端