/************************************************************************************
程序名称:串口发送程序下载指令(晶振频率18.432MHz)
功能说明: 收到用户命令后复位到ISP监控区域
1. 在STC ISP软件中,首先设定下载晶振频率为18.432MHz,通过传统方式下载本程序,即点击下载后,重启开发板。
2. 然后切换到“收到用户命令后复位到ISP监控区域”界面,在自定义命令框内输入“da”,即可进行程序不断电下载。
注:0xda可以根据个人需要进行更改。
************************************************************************************/
#include "stc15f2k60s2.h" // 单片机STC15F2K60S2头文件,可以不再加入reg51.h
#include <intrins.h> // 加入此头文件后,可使用_nop_库函数
#include "delay.h" // 延时函数头文件
#include "uart.h" // 串口通信头文件
#include<string.h>
//========================================================================
// 函数: void SYS_Init(void)
// 描述: 单片机端口初始化
// 说明
// STC15W4K32S4系列单片机,在上电后与PWM相关的IO为高阻状态,需手动设置为普通双向IO
// PWM相关IO为 : P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
//========================================================================
void SYS_Init()
{
P0M0=0x20;
P0M1=0x20;
P1M0=0x3C;
P1M1=0x3C;
P2M0=0x00;
P2M1=0x00;
P3M0=0x00;
P3M1=0x00;
P4M0=0x00;
P4M1=0x00;
P5M0=0x00;
P5M1=0x00;
}
//========================================================================
// 函数: void main(void)
// 描述: 主函数
//========================================================================
void main() // 主函数
{
SYS_Init();
DelayMS(100);
UartInit(); //串口初始化
DelayUS(100);
ES=1; //串口1中断打开
EA=1; //总中断打开
SendString("Please send Command '0xDA' to download code...");
while (1); // 主循环
}
void Usart() interrupt 4 using 0
{
ES = 0;
if (RI)
{
RI = 0;
if(SBUF==0xda) //对串口收到的数据进行识别,如果是0xda则执行以下命令,将单片机复位到ISP区域,配合上位机软件,自动进行程序下载
{
DelayMS(100);
IAP_CONTR = 0x60; //0110,0000 soft reset system to run ISP monitor
}
}
if (TI)
{
TI = 0;
}
ES = 1;
}
STC实现软复位
最新推荐文章于 2024-07-31 09:38:10 发布