微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于STC单片机的自动下载

关于STC单片机的自动下载

时间:10-02 整理:3721RD 点击:

看贴子时看到了有发表STC自动下载的帖子,但使用的是额外的单片机进行监控。
其实STC单片机内部自带软件复位,可复位到ISP程序监控区,只要配合STC官方
上位机即可实现软件自动下载功能。
以下是实现该功能的代码片段
autoload.c


  1. #include "autoload.h"
  2. #if ENABLE_AUTOLOAD == 1

  3. static unsigned char UART_Count=0,UART_Temp=0;

  4. void AutoLoad_Init(void)
  5. {
  6.     TMOD |= 0x20;
  7.     TH1 = 0xfd;
  8.     TL1 = 0xfd;
  9.     SCON |= 0x50;
  10.     TR1 = 1;
  11.     EA = 1;
  12.     ES = 1;
  13. }

  14. void AutoLoad_ISR(void) interrupt 4
  15. {
  16.     RI = 0;
  17.     UART_Temp = SBUF;
  18.     if(UART_Temp == 0xee)
  19.     {
  20.         UART_Count++;
  21.         if(UART_Count > 5)
  22.         ISP_CONTR=0x60;
  23.     }
  24. }

  25. #endif

复制代码


autoload.h

  1. #define ENABLE_AUTOLOAD 1

  2. #if ENABLE_AUTOLOAD == 1

  3. #ifndef _AUTOLOAD_
  4. #define _AUTOLOAD_

  5. #include <stc89c5xrc.h>

  6. void AutoLoad_Init(void);

  7. #endif

  8. #endif

复制代码


通过使能宏定义可设置自动下载的使能与否
本部分源码可从GitHub获得,该项目同时包含其他常用函数库
链接:https://github.com/UniqueMouse/STC89C5XRC
使用时配合STC-ISP的“收到用户命令后复位到ISP程序监控区“功能,
如下图所示


注意:本项目使用的是STC官方头文件,若你使用的是REG5X.h头文件,则需要自己定义ISP_CONTR寄存器,
          如何定义请参考reg5X.h头文件内容或STC官方数据手册。

请教一下 如果和51的比 这个复位又有何不同那

stc单片机冷启动时是从内部ISP程序区启动的,当从ISP程序区启动时就会检测是否有程序下载请求,如果有,就会开始接收用户程序烧录到内部ROM空间;而通电状态下按下复位按键之后是直接复位到用户程序区开始执行,所以无法响应上位机请求。

stc单片机冷启动时是从内部ISP程序区启动的,当从ISP程序区启动时就会检测是否有程序下载请求,如果有,就会开始接收用户程序烧录到内部ROM空间;而通电状态下按下复位按键之后是直接复位到用户程序区开始执行,所以无法响应上位机请求。

好的 学习了  感谢坛友讲解

很有帮助, 学习了, 谢谢分享

帮顶。

学习了,谢谢。

请教一下 如果和51的比 这个复位又有何不同那

没啥不同,就是一个自动复位的问题。

这个程序很实用,受教了~~~~~

谢谢,学习一下。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top