首页 > 应用 > 单片机应用
[导读]摘要 针对单片机下载程序时需要重复机械式复位产生的一系列调试繁琐的问题,提出了一种用软件引导代替单片机硬件复位写入ROM的方法。该方法通过检测串口数据流是否合法,来判断是否执行ISP引导程序,从而利用软件方式

摘要 针对单片机下载程序时需要重复机械式复位产生的一系列调试繁琐的问题,提出了一种用软件引导代替单片机硬件复位写入ROM的方法。该方法通过检测串口数据流是否合法,来判断是否执行ISP引导程序,从而利用软件方式复位,可以让STC单片机复位后从ISP引导程序处执行,利用该特性可以模拟单片机上电复位状态,实现单片机的不断电下载。
关键词 STC单片机;ISP引导程序;不断电下载;软件设计

    随着单片机技术的发展,单片机片内存储器的容量越来越大,可以容纳越来越大的程序。由于程序越来越复杂,在程序调试过程中需要不断进行硬件复位来下载程序,虽然在线下载程序的方法已经普遍应用,但在现实调试实现中还是比较繁琐,因此人们在寻求一种用软件代替硬件的复位方法来调试下载程序,近而在工程实际中更加快捷方便地进行程序实现。因此,文中提出了一种软件复位单片机的方法,即利用STC单片机独有的ISP引导区,用特殊的指令使调试好的程序从ISP引导区执行,避免频繁地硬件复位,而且简单实用。

1 软件复位单片机的工作原理
1.1 STC单片机复位方法简介
    STC单片机的复位方法分为热启动和冷启动两种:冷启动是系统断电后再上电的硬件复位;热启动分为3种:一种是reset引脚复位,一种是内部看门狗复位,一种是ISP引导区复位。热启动中的reset复位是reset引脚接受到复位信号直接从用户区执行,内部看门狗是在外界电磁干扰致使程序跑飞时发出一个复位信号,使程序地址指针移动到00H,产生和reset复位相同的效果,ISP引导区复位是一种只有在系统上电时才执行的程序存储区,当程序执行到ISP引导区时,如果系统没有检测到合法的数据流,则直接执行用户程序区;如果系统检测到合法的数据流,则先下载程序,再执行用户程序区。单片机启动的过程为:先给断电的单片机通电,进行STCISP下载,然后执行用户程序,或者没有检测到合法的数据流,然后直接执行用户程序区。其流程图如图1所示。

本文引用地址: http://www.21ic.com/app/mcu/201304/179994.htm

a.JPG


1.2 软件实现不断电下载的工作原理
    STC单片机ISP_CONTR是单片机进行软复位的控制寄存器,其地址为E7H,进行ISP_CONTR定义后,再自定义串口接受的数据流。然后进行串口初始化和定时器初始化,串口初始化的波特率和具体工作方式要与下载软件一致,定时器设置初值任意,在软件中保证1 s即可。串口中断子程序设计,具体过程为:当串口接受数据后,把SBUF中的数据和用户自定义数据进行比较。如果一致,赋值给ISP_CONTR使单片机复位;如果没有接受到合法数据流,则继续执行用户程序。具体流程如图2所示。

b.JPG



2 在线下载接口电路
   
图3为STC89C52与RS232串口的连接电路图,RS232为负逻辑电平,所以单片机在与上位机进行通信时需要逻辑转换,图3所使用的转换芯片为MAXIM公司生产的MAX232标准RS-232接口芯片,使用+5 V供电,内部为爽组驱动器/接收器,每个接收器将RS-232电平转换为5 VTTL/CM OS电平。其中,RS-232在现代应用中由标准的25线简化为发送线、接收线、地线三线传输。串口的发送和接收线分别与RS-232的R1IN和T1OUT相连,MAX-232的R1OUT和T1IN分别与单片机的P3.0和P3.1相连,实现上位机、转换芯片、单片机的相互通信。

c.JPG



3 不断电下载程序设计
   
在单片机和PC机通讯并实现不断电下载,首先要设置好串口通信协议,例如串口接受与发送数据的波特率,串行口的工作方式,串行口接收与发送的数据帧格式;其次是定义自定义下载命令,并与实际发送命令一致;再次是设置串口发送命令等待时间,这可以通过单片机内部定时器来实现;最后为下位机接收发送自定义指令判断,实现软复位。
3.1 串口通讯协议初始化
   
首先设置波特率,根据STC单片机的晶振频率和STC芯片性能,设波特率为9 600 bit·s-1,波特率由定时器的溢出率控制。然后设置串行口的通信协议,如数据位位数、停止位位数以及是否奇偶校验,具体设置如图4所示。

d.JPG


3.2 定时器的设置
   
波特率为9 600 bit·s-1,在串口工作方式2的情况下,根据方式2的波特率=(2SMOD/32)*(T1溢出率)。假设单片机的晶振频率为11.0 59 2 MHz,经12分频后得到计数器记—个数的时间为12/11.059 2 MHz,定时器T1溢出一次的时间为(256-X)×12/11 059 200,所以T1的溢出率为11 059 200/[12×(256-X)],因为波特率不需要加倍,所以SMOD=0。根据公式得,9 600=(1/32)×11 059 200/[(256-X)×12],解得X=253,转换成16进制数为0Xfd。减少了程序的冗余性,定时器的工作方式设定为2,定时器自动重装,不必写定时器中断子程序。
3.3 初始化子程序
    e.JPG
3.4 用户自定义下载命令
   
定义语句为:#define seffdecide_download_commond0x8E。0x8E是用户任意定义的下载指令,但最多不能超过0xFF,因为ISP_CONTR寄存器只有8位。接着进行ISP_CONTR的地址定义,通过查STC89C52的用户手册,其语句为sfr ISP_CONTR=0xE7。
3.5 串口接收合法数据程序
   
单片机的工作原理是循环扫描,即使不加大循环while语句,用户程序也总是一遍一遍地执行,所以用户程序需要时时刻刻扫描是否是合法数据流的出现。
    串口中断的编号为4,首先要检验中断标志位RI,如果RI置1,说明上位机向单片机的串口发送指令;随后指令内容被传送到单片机的SBUF中,判断SBUF中的命令内容是否和用户自定义的命令一致。如果一致,直接向ISP_CONTR中赋特定的值使程序指针指到ISP引导区,实现程序的软复位;如果不一致,使TI清零,以便下一次中断申请。
3.6 延时子函数
   
串口接收数据有1 s的延时时间,所以需要加延时子函数,代码如下:
    Void delayl s()
    {
      Int p,q;
      For(p=1000;p>0;p--)
      For(q=100;q>0;q--);
    }

4 结束语
   
介绍了STC系列单片机不断电下载程序的程序设计思路及方法,运用STC单片机独有的ISP引导区对软件模拟硬件复位实现单片机的不断电下载程序,省去了编程器的频繁插拔件或者频繁的手动复位硬件开关。此方法在大的程序编写调试过程中能节省大量时间,但也降低了串行口的使用效率。本例适合运用在使用串行口较低的情况下,并且在调试的情况下可以省去手动频繁的复位操作,减少工作量。

换一批

延伸阅读

[单片机应用] 单片机I/O口管脚内部结构

单片机I/O口管脚内部结构

学习ARM嵌入式的时候,发现自己对以前学过的数模器件的知识遗忘了不少,按照我的进度本来应该继续学习ARM微处理器控制的课程,但想着后来势必还会遇到相同的问题所以就准备中断一下,杀回来把汇编和一些电路知识再总......

关键字:单片机 I O口管脚 内部结构

[单片机应用] 关于单片机串口发送和接收的问题

关于单片机串口发送和接收的问题

串口初始化过程:    1、确定T/C1的工作方式--TMOD    2、设置T/C初始值----------------------------TH1、TH2    3、启动T/C-----------------------------......

关键字:单片机 串口 发送和接收

[单片机应用] 上位机控制单片机LED

上位机控制单片机LED

整了一天程序,写了个上位机程序和单片机程序。总结下。。。上位机部分:相关参考资料:http://wenku.baidu.com/view/5ea8670403d8ce2f00662322.html1.先添加各控件,添加后的对话框如下图:2.......

关键字:上位机 控制单片机 LED

[单片机应用] 用单片机做一个计算器

用单片机做一个计算器

硬件电路程序#include T89X51.H>#define DIN P1_0#define CLK P1_2#define LOAD P1_1unsigned char key_h,key_l,key_code;unsigned ......

关键字:单片机 计算器

[单片机应用] 串行口异步通信单片机程序设计实例

串行口异步通信单片机程序设计实例

org 0000HAJMP STARTORG 30HSTART:mov SP,#5fh ;mov TMOD,#20h ;T1: 工作模式2mov PCON,#80h ;SMOD=1mov TH1,#0FDH ;初始化波特率(参见表)mov ......

关键字:串行口 异步通信 单片机

[单片机应用] AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

1)那就是在之前的介绍中说过,在说一遍~~主机和从机的两个移位寄存器可以被认为是一个公开的16位环形移位寄存器,当数据从主机移向从机时,同时从机饿数据也向相反的放向移向主机。这就意味着在一个以为周期内,主机......

关键字:AVR单片机 ATMEGA16 同步串行接口 SPI

[单片机应用] 单片机轻松入门之三:蜂鸣器

单片机轻松入门之三:蜂鸣器

单片机轻松入门之三蜂鸣器该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。程序如下:#include#define uchar unsigned charsbit sounder=P3^......

关键字:单片机 蜂鸣器

[大数据] 互联网与物联网的互相发展

互联网与物联网的互相发展

今天,最有活力、造富最强、市值最高的公司,是互联网公司。全球互联网用户已达34.9亿人,中国网民7.51亿!......

关键字:互联网 物联网 大数据

[显示光电] AMD开发者:Xbox One X和PS4 Pro还不能达到完美4K 30帧

AMD开发者:Xbox One X和PS4 Pro还不能达到完美4K 30帧

AMD的开发者Timothy Lottes在游戏杂志Edge中撰文,称对于目前的游戏开发环境以及3A大作的画质水平,想要在4K 30帧下以最出色的画质运行至少需要7.4TFLOPs的性能,也就是一块GTX 1070 Ti的显卡,这对于微软以......

关键字:AMD 4K

[测试测量] NAB 2018:罗德与施瓦茨公司全新版本的CLIPSTER让母版制作工作站更加灵活

NAB 2018:罗德与施瓦茨公司全新版本的CLIPSTER让母版制作工作站更加灵活

R&S CLIPSTER一直是高质量电影后期母版制作的市场领导者,最新的6.6版本能够提供更多的软件功能和更灵活的硬件配置,使得产品更高效且保障用户的投资安全。R&S CLIPSTER可以被灵活的应用到后期生产中,支持非常广泛的应用,电视和......

关键字:NAB 2018 罗德与施瓦茨 CLIPSTER

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客