在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)
{}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』