关于STC单片机的自动下载
时间:10-02
整理:3721RD
点击:
看贴子时看到了有发表STC自动下载的帖子,但使用的是额外的单片机进行监控。
其实STC单片机内部自带软件复位,可复位到ISP程序监控区,只要配合STC官方
上位机即可实现软件自动下载功能。
以下是实现该功能的代码片段
autoload.c
- #include "autoload.h"
- #if ENABLE_AUTOLOAD == 1
- static unsigned char UART_Count=0,UART_Temp=0;
- void AutoLoad_Init(void)
- {
- TMOD |= 0x20;
- TH1 = 0xfd;
- TL1 = 0xfd;
- SCON |= 0x50;
- TR1 = 1;
- EA = 1;
- ES = 1;
- }
- void AutoLoad_ISR(void) interrupt 4
- {
- RI = 0;
- UART_Temp = SBUF;
- if(UART_Temp == 0xee)
- {
- UART_Count++;
- if(UART_Count > 5)
- ISP_CONTR=0x60;
- }
- }
- #endif
autoload.h
- #define ENABLE_AUTOLOAD 1
- #if ENABLE_AUTOLOAD == 1
- #ifndef _AUTOLOAD_
- #define _AUTOLOAD_
- #include <stc89c5xrc.h>
- void AutoLoad_Init(void);
- #endif
- #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的比 这个复位又有何不同那
没啥不同,就是一个自动复位的问题。
这个程序很实用,受教了~~~~~
谢谢,学习一下。