×
单片机 > 单片机程序设计 > 详情

STC51系列单片机不断电自动下载程序

发布时间:2020-08-25 发布时间:
|

以前在进行单片机编程时比较烦恼的时每次下载程序都需要断电,点击下载,再上电才能将程序下载到单片机,如果偶尔一两次这样操作可以忍受,但是往往我们都是需要调试代码,多次进行下载操作,不断的断电上电无疑对单片机来说是一个很大的损伤。 

根据stc12c5a60s2(一片增强型的51单片机,兼容stc89c52单片机)的数据手册,可以通过单片机系统软复位,使单片机运行系统启动代码(这部分代码不同于我们的用户代码),我们断电再上电也是这个原理。通过往IAP_CONTR(C7H)写60H实现系统的软复位,然后进行自动下载。单片机复位后有两种启动形式,一种是从用户程序区启动,我们平时按复位键就是这种启动形式,另一种是从ISP程序区启动,断电启动属于这种方式,通过设置IAP_CONTR可以实现这种启动方式,我们需要下载程序,所以需要从ISP程序区启动。具体的寄存器设置请参考官方数据手册。 

具体实现步骤如下: 

首先将下面的代码通过我们以前的老方式下载到单片机中


IAP_CONTR EQU 0C7H


ORG 0000H

LJMP START


ORG 0023H

LJMP SERIAL


START:  

    LCALL SERIALINIT


    MainLoop:                               

    SJMP MainLoop   


SERIALINIT:

    MOV SP,#60H

    MOV SCON,#50H

    MOV TMOD,#20H

    MOV TH1,#0FDH

    MOV TL1,#0FDH

    SETB TR1        

    SETB ES

    SETB EA


SERIAL:

    PUSH ACC

    PUSH PSW


    JNB RI,RIGO

        CLR RI

        MOV A,SBUF

        CJNE A,#0AFH,RIGO;

        NOP

        NOP

        NOP

        MOV IAP_CONTR,#60H

    RIGO:


    POP PSW

    POP ACC

    RETI

END


然后对stc-isp进行如下设置 

  

自定义命令可以根据自己需要修改,同时代码也要跟着修改。


上面代码的主要原理是打开单片机串口中断,当使用stc-isp下载程序时,软件会先往单片机写AFH命令,单片机通过串口检测到这个命令时就进行系统软复位,系统软复位后,单片机系统代码就将用户代码下载到单片机。


每次下载代码都需要将上面的代码加到自己的代码中去。


当然不止这一种通过串口发送特定命令的方式来使系统软复位,比如也可以设置一个按键,检测到这个按键按下就运行MOV IAP_CONTR,#60H。核心就是MOV IAP_CONTR,#60H这一条命令,但在什么情况下运行这条命令就需要根据自己的想法和实际使用来设计了。

关键字:STC51系列  单片机  自动下载 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向