STC单片机的自动程序下载--Auto ISP

发布者:烟雨江湖最新更新时间:2015-10-28 来源: eefocus关键字:STC  单片机  自动程序下载  Auto  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。如下图:

[转载]STC单片机的自动程序下载--Auto <wbr>ISP

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

需要特别注意的是:(1)自定义下载选项页中的波特率设置很重要,不能有错;(2)主程序开始最好插入延时语句,避免串口通讯出现问题。(3)这种Auto ISP方式占用了串口和一个定时器,有一定局限性。 

关键字:STC  单片机  自动程序下载  Auto  ISP 引用地址:STC单片机的自动程序下载--Auto ISP

上一篇:STM8S学习笔记之四(STM8 time1)
下一篇:流水灯设计的几个程序

推荐阅读最新更新时间:2024-03-16 14:37

[单片机框架][bsp层][cx32l003][bsp_key] KEY配置和使用
按键的基本原理是设置单片机IO口(PB0-PB3)为输入状态,如DDRB = 0XF0(方向寄存器,“1”为输出,“0”为输入); 单片机一直检测按键端口(PB0-PB3)的状态,当端口为低电平时(即按键按下),实行相应的动作(比如控制LED灯)。 原理就是这么回事,但是正真实现时,按键会有抖动,要进行按键去抖,下图为按键按下时的抖动图。 按键实行一个动作过程是需要一定时间的,一般为100mS-1S左右,而一个单片机执行一个机器周期的时间很短,时钟为10MH的周期为0.1μs,这样按键每一次动作程序就会多次检测按键,出现误判(一次按下,多次动作)。 /********************************
[单片机]
基于AVR单片机的多功能电源设计
随着 嵌入式 系统设计技术的发展,在设计和仿真中,系统工程师对 电源 的要求也越来越高。在 嵌入式 系统设计是使用8031 单片机 和74系列集成 电路 时,所有使用74系列集成 电路 的电路板都使用单一的5 V 电源 供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字 集成电路 设计的需要。而近几年来,随着技术的发展, 集成电路 里的三极管变得越来越小并且工作的电压越来越低,使得嵌入式系统开发的重点从系统的速度,转到低功耗设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测试时,还要 模拟 不同的电源故障情况下,比如
[电源管理]
单片机焊接过程中应该注意的几大问题
单片机焊接的过程中,应该注意一下几点   1、注意电解电容、发光二极管、蜂鸣器的正负极性不能接反、三者均是长的管脚接正极、短的管脚接负极,如接反轻则烧毁元气件,重则发生轻微爆炸。   2、三极管9015的E、B、C、注意接法,板子上面有相应的图形形状。按照那个图形焊接。   3、焊接元气件的过程之中焊接时间应在2-4秒。焊接时间不宜过长,否则不仅会烧毁元气件、而且易使焊点容易脆裂。   4、电阻焊接过程中注意相应的阻值对应,不要焊错。否则影响相应的电流大小。   5、排阻焊接过程之中、RP1、RP2、RP3、有公共端应该接VCC、其余管脚为相应的独立端、排阻焊接过程之中用万用表测量各排阻的阻值、对照说明书焊接相应的排
[单片机]
利用51单片机统计脉冲个数,即时输出显示
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。 ;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈! ;悬赏分:30 | 解决时间:2011-7-20 19:15 | ;===================================================== ;最佳答案: ;题目要求在T1端输入脉冲,统计脉冲个数,并即时输出显示,使用8个LED数码管,显示:0000 0000~9999 9999。 ;计数、显示,很简单的。虽然要求的位数较多,但是循环一下,也就可以了。 ;程序用汇编汇编语言编写好了,指令不超过50行,太简单了。 ;题目只是要求在T1端输入脉冲,并没有指出显示电路,那么
[单片机]
利用51<font color='red'>单片机</font>统计脉冲个数,即时输出显示
51单片机 同时扩展ROM,RAM的具体实现及kiel的具体设置
51MCU内部有RAM,ROM,不同于8031。尽管如今的增强行51MCU的内部RAM,ROM可能已经很大的空间。但就技术而言,扩展RAM,ROM还是需要学会的。 对于不同的设计方案需求,扩展可能基于以下任何一种设计: A,只扩展RAM B,只扩展ROM C,扩展ROM,RAM ****************************总线扩展时,P2口是否可用做普通IO口************************************ 这种扩展是基于总线扩展的,所以,P0P2口就已经不可以再做它用了(有网友提供信息,总线扩展P2还可以做普通IO口用,有两种
[单片机]
PIC单片机与16位串行D/A转换原理
  下面介绍了基于PIC单片机与16位串行D/A转换的原理:   1.基本原理   D/A转换器相当于一种译码电路,它将数字输入传换为模拟输出:   其中,D是数字输入,VR是模拟参考输入,Vo是模拟输出。这里模拟输出可以是电压,也可以是电流,式中 数字D是一个小于1的值。   式中an为1或0,由数字对应位的逻辑电平来决定,N是数字输入D的位数。由此(3.2)由此(3.1)   当参考电压输入TIp.固定时,转换器的模拟输出D成正比关系。对于单位数字量的变化,模拟输出是按等 幅度的阶跃量变化的。   2.原理图   (1)串行D/A转换器。   串行D/A转换器一般由数字输入、基准电压源、模拟开关、电
[单片机]
PIC<font color='red'>单片机</font>与16位串行D/A转换原理
将基于AT89C2051的解码器应用于安防系统
1 引 言      目前,我国应用极广的编解码器是Princeton公司生产的具有531441(3 12 )种状态的PT2262编码芯片和与之配套的PT2272解码芯片。但一片PT2272只能对一种地址的PT2262的15种状态进行解码,对于较大的编解码保安防盗控制系统,常使用多片PT2272组合解码,但仍远远满足不了大中型安防系统的设计要求。因此,采用AT89C2051单片机,实现了PT2262的大容量解码功能。 2 PT2262的编码原理      PT2262(可参阅http://www.princeton.com.tw)的工作原理如图1所示,图中K0~K7为地址端,应该预置其状态;K8~K11为数据端,按下按钮开
[单片机]
无需更换电池的数字倒计时定时器
只需 MCU、LCD、32kHz 晶振以及一个电阻器即可构成一部基本的倒计时定时器,而且只需一颗普通的纽扣电池即可实现连续超过 10 年的工作时间,如图 1 所示。例如,此类倒计时定时器可用于餐馆提供服务时间保证,服务人员按下一个按钮即可启动倒计时定时器,微控制器开始自动倒计时,时间长短可预先设定,倒计时过程则会显示在显示屏上。如果服务人员在计时结束前尚未向客人提供服务,那么显示器就会闪动显示超时信息,提示未达到服务保证。有两大关键性设计可最小化功耗,并尽可能延长电池使用寿命,一是认真选择电池,二是充分利用 MCU 的低功耗模式。 我们之所以选择 CR2032 纽扣式锂电池,主要是因为它占地较小,可以支持便携式应用,放电曲线较平,
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved