sfr ISP_CONTR = 0xe7; //定义ISP寄存器
if(SBUF == 0xf8) //放串口中,如果连续8次接收到f8进入ISP监控程序区准备接收下载的程序
{
D_count ++ ;
if(D_count > 7)
{
ISP_CONTR = 0x60 ;
//12单片机 IAP_CONTR = 0x60 ;
}
}
STC单片机在进行冷启动时会从ISP引导码开始执行程序,而进行热启动或按复位键软启动时是从用户程序段开始执行的。STC单片机增加了ISP/IAP控制寄存器ISP_CONTR,用来管理ISP/IAP功能和是否软启动 。当我们将ISP_CONTR置为0x60时单片机自动复位从ISP引导码开始执行。引导码执行时间很短大概只有几十毫秒,如果引导码发现了有用户程序下载就会执行下载用户程序的操作,如果没有就会从用户代码门函数可是执行,所以ISP_CONTR = 0x60 ; 既是下载程序引导码命令,也有让用户程序复位的作用。
在这样的波特率下,下载程序是串口会一直发送数据等待应答,另开一个串口助手可以看到发送数据,发送的数据根据接收的波特率不同而不同程序中用的波特率是9600,所以看一下9600波特率接收到的数据0xf8