您的位置 首页 主动

STC单片机的主动程序下载–Auto ISP

很多朋友手头上都有基于STC单片机的开发板或学习板,我看到大多数人都是通过切断电源冷启动的办法下载程序,其实STC单片机的ISP软件提供了

许多朋友手头上都有根据STC单片机的开发板或学习板,我看到大多数人都是经过堵截电源冷启动的方法下载程序,其实STC单片机的ISP软件供给了无须冷启动在线下载的方法,即自定义下载。下面介绍一下详细进程:

第一步:编写串口操作程序。这种主动下载方法需求用到串口中止。所谓主动下载,就是说当时单片机已经在运转程序了,但这个程序有必要具有串口中止功用,经过串口接纳特定字符标志,使得单片机知道应该从运转用户程序状况退出,复位后进入监控状况(即ISP状况),为下载新的用户程序做好预备。所以,假如你总想不经过冷启动的方法来主动下载程序,就要求当时单片机运转的程序以及你即将下载的程序都具有串口中止及辨认特定字符标志的功用,这就需求编写串口操作程序。首要运用定时器发生波特率信号,设置串口。树立头文件timer1.h:

#ifndef _timer1_h_
#define _timer1_h_

//定时器1初始化,串口波特率初始化
//主动ISP功用模块

void timer1_init(void)
{
//定时器T1作业在形式2,8位主动重装载形式
TMOD = (TMOD & 0X0F) | 0X20;
SCON = 0x50;
PCON |= 0x80;//波特率加倍

TH1 = 0xff;
TL1 = 0xff;
TR1 =1;
ES = 1;
EA = 1;
}

void delay(unsigned int time)
{
while(–time);
}

//主动ISP功用函数

void ISP_Check(unsigned char tmp)
{
static isp_counter=0;

//ISP标志字符
unsigned char code isp_comm[16]= {0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};

if(tmp != isp_comm[isp_counter++])

{
isp_counter = 0;
return;
}
else if (isp_counter > 15)

{
EA = 0;
delay(100000);
ISP_CONTR = 0x60; //软复位进入ISP下载形式

}
}

//串行接纳中止

void Serial_int(void) interrupt 4 using 1
{
unsigned char tmp;
if (RI)
{
tmp = SBUF;
ISP_Check(tmp);
RI = 0;
}
}

#endif

把上面的timer1.h文件包括进工程文档,并在主程序中调用timer1.h内的初始化函数,如下所示:

#include “STC89C51RC.H”

#include “timer1.h”
sbit beep=P1^7;//P1^7接扬声器驱动电路
void delay_ms(const unsigned int DELAY)
{
unsigned int x,y;
for(x=0;x<=DELAY;x++)
{
for(y=0;y<=120;y++);
}
}
main()
{
delay_ms(500);
timer1_init(); //timer1初始化,启用串口设置
while(1)
{
beep=1;
delay_ms(400);
beep=0;
delay_ms(400);
}
}

第二步:编译工程得到HEX文件,运转STC-ISP.exe。如下图:

留意红线框内的自定义下载的参数设置,即串口和标志字符的设置,必定要与上面第一步在timer1.h文件中设置的共同。在Step1中,选定单片机类型;在Step2中,选定要下载的HEX文件;在Step3中,设置串口;在Step4中,一般运用默认设置。假定单片机正在运转程序(此程序的串口设置、标志字符和自定义下载的参数共同),点击自定义下载选项页的发送按钮,即可完结新的用户程序下载并运转之。

需求特别留意的是:(1)自定义下载选项页中的波特率设置很重要,不能有错;(2)主程序开端最好刺进延时句子,防止串口通讯出现问题。(3)这种Auto ISP方法占用了串口和一个定时器,有必定局限性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/259362.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部