历史上的今天
返回首页

历史上的今天

今天是:2025年01月26日(星期日)

2019年01月26日 | STC51系列单片机不断电自动下载程序

2019-01-26 来源:eefocus

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

根据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这一条命令,但在什么情况下运行这条命令就需要根据自己的想法和实际使用来设计了。

推荐阅读

史海拾趣

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

E-T-A公司的前身可以追溯到1948年,当时由Jakob Ellenberger和Harald A. Poensgen在德国共同创立了ELPO GmbH公司。这家初创企业专注于电气设备的研发和生产。随着技术的不断发展和市场的日益扩大,公司逐渐意识到设备用断路器在电路保护领域的重要性。因此,在1953年,公司正式推出了设备用的ETA断路器,并开始逐渐将重心转移到断路器领域,这也为日后E-T-A公司的成立奠定了基础。

Compensated Devices Inc公司的发展小趣事

在电子行业竞争激烈的年代,CDI始终坚持品质至上的原则。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把关。正是这种对品质的执着追求,使得CDI的产品在客户中赢得了良好的口碑。随着口碑的积累,CDI逐渐发展成为电子元件领域的知名品牌。

DCX-CHOL Enterprises公司的发展小趣事

DCX-CHOL Enterprises成立于一个科技蓬勃发展的时代。公司的创始人是一群热衷于电子技术的年轻人,他们看到市场上对于高性能、低功耗芯片的巨大需求,于是决定自主研发。经过数年的艰苦努力,他们成功开发出了一款具有革命性意义的低功耗芯片,该芯片不仅性能卓越,而且成本远低于同类产品。这一创新成果迅速赢得了市场的认可,DCX-CHOL Enterprises因此获得了第一桶金,为公司后续的发展奠定了坚实的基础。

ECI公司的发展小趣事

面对日益激烈的市场竞争,ECI公司积极开拓国际市场。公司成立了专门的国际市场部,负责海外市场的调研、开发和推广。通过深入了解不同国家和地区的市场需求和文化差异,ECI公司成功推出了符合当地消费者需求的电子产品。同时,公司还与多家国际知名企业建立了长期稳定的合作关系,进一步扩大了市场份额。

APM Hexseal公司的发展小趣事

随着公司的发展,APM Hexseal不断拓展其产品线,推出了包括断路器、密封开关、过滤器和密封件等一系列产品。这些产品都经过了严格的测试和认证,以确保其能够满足各种恶劣环境下的使用要求。其中,许多产品都获得了UL认证,进一步证明了其卓越的品质和可靠性。

晨晶电子(Chenjing Electronics)公司的发展小趣事

晨晶电子自成立以来,始终坚持以技术创新为核心竞争力。公司拥有一支高素质的研发团队,致力于石英晶体元器件的研发与生产。通过不断的技术创新和产品升级,晨晶电子在行业内逐渐树立了技术领先的地位。其产品广泛应用于通信、计算机、消费电子等领域,赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

Cadence的EDA验证工具在SOC设计中的应用

Cadence的EDA验证工具在SOC设计中的应用…

查看全部问答>

ISD1700录放电路图

ISD1700录放电路图,PDF文件…

查看全部问答>

谁知道宇航电子有哪些具体的分类?

谁知道宇航电子有哪些具体的分类?…

查看全部问答>

D:\WINCE600\PUBLIC\DIRECTX\SDK\SAMPLES\ddraw\src\DDex1怎么编译成DDex1.exe?

wince6.0下DDraw的sample应用程序 如题:D:\\WINCE600\\PUBLIC\\DIRECTX\\SDK\\SAMPLES\\ddraw\\src\\DDex1怎么编译成DDex1.exe? sources中编译为.lib,在命令行中输入: cd D:\\WINCE600\\PUBLIC\\DIRECTX\\SDK\\SAMPLES\\ddraw\\src\\DDex1 b ...…

查看全部问答>

请教一个短信发送时的拦截

MTK平台上可不可以 拦截短信发送的事件。例如 我发送一条短信,但是希望在发送出去之前拦截这个发送短信的动作。请大家讨论下。…

查看全部问答>

关于6410把内存从128改为512或者更大?散分!!!!!!

现在6410跑的是128M的内存,现在想改为512M。系统为wince6.0。 wince6.0最大支持多大的内存? 如果要改内存,需要修改那些部分?能否说的清楚一点。 高手指点!!…

查看全部问答>

RegOpenKeyEx后报错,FormatMessage取出来的信息是乱码

RegOpenKeyEx后报错,FormatMessage取出来的信息是乱码。怎么解决。下面是代码。 #define BUFSIZE 80 HKEY hKey;     char szProductType[BUFSIZE]; DWORD WordType = REG_SZ;     DWORD dwBufLen = BUFSIZE;   &nb ...…

查看全部问答>

9052芯片驱动设计

简单说,就是做一个板子,pci接口的,在与计算机通信这一块使用了plx的9052芯片来简化设计。我们所需要的功能是,计算机上编一个界面,可以发送指令读和写该设备,将指令写入设备上的芯片中,再将芯片中的存储信息读回来显示一下。 请熟悉该芯片的 ...…

查看全部问答>

STM32F101和STM32F103的固件函数库对STM32F105和STM32F107适用吗

请问 STM32F101和STM32F103的固件函数库对STM32F105和STM32F107适用吗…

查看全部问答>

enet_io例程遇到问题

将enet_io例程例程设置成静态IP后,通过网线和PC连接后,出现的网页如图所示,没有出现例程的网页,请问高手这是什么原因?…

查看全部问答>