STC51系列单片机免掉电下载(热启动下载)
相信喜欢单片机的朋友都用过STC的单片机,用过STC单片机的朋友都有这种感受:实惠、易用、功能强大!就是每次下载都要冷启动特别恶心,相信很多朋友的开发板上的电源键都按烂了。
其实STC单片机可以不用免掉电下载,想要知道怎样才能免掉电下载,我们先要了解STC单片机是怎样实现串口下载的,其实STC单片机出厂时就预置了一段ISP监控程序,我们称作ISP引导码,这段ISP监控程序就好比电脑硬盘的系统引导区。我们对STC单片机上电启动时,单片机首先执行ISP引导码检测串口是否下载程序的命令,如果上位机在对单片机下载程序时,单片机检测到下载数据流就启动ISP下载功能对单片机进行程序下载,这就是我们平时实验时点击下载后按开发板电源键的过程。
STC单片机在进行冷启动时会从ISP引导码开始执行程序,而进行热启动或按复位键软启动时是从用户程序段开始执行的。然而熟悉STC单片机的朋友知道STC单片机增加了ISP/IAP控制寄存器ISP_CONTR,用来管理ISP/IAP功能和是否软启动,其各位功能大家可参照STC公司相关资料。当我们将ISP_CONTR置为0x60时单片机自动复位从ISP引导码开始执行。由此我们在需要下载程序时将ISP_CONTR置为0x60就可以完成下载了。
下面来介绍怎样实现
方法一:通过按复位键来实现,STC单片机上电复位时PCON的POF=1,在按复位键复位时POF=0。所以我们在程序中可以用POF来 控制ISP_CONTR。
方法二:利用串口,STC下载软件中有个自定义下载,也就是下载前通过串口发送一段自定义代码,单片机收到该代码后来控制单片机
ISP_CONTR进行软复位下载。
/************************************************************************************
* 程序名称:STC单片机免掉电下载
* 程序作者:itas109
* 个人博客:http://blog.csdn.net/itas109
* 程序版本: V1.1
* 编制日期: 2013-08-05
* 编译器:Keil C uVision4
* 调试芯片:STC90C516RD+ 11.0592M晶振
* 占用资源: 1、自定义下载:串口,定时器T1,中断
2、复位键下载:不占用资源
* 特别说明: 1、修改后的程序可以实现复位按键和自定义下载同时进行,也可以根据自己
的需要选择,若用户所写程序用到定时器时,请只是用复位下载。
2、注意使用自定义下载时,尽量不要对P3口的低四位进行操作,否则可能
下载失败。
3、该头文件使用说明:
使用时,将该头文件加入到所编写的程序当中(可以直接添加到Keil的库文件里面),
在main开始调用Auto_Download()函数即可,例如:
#include<xx.h>//你所需的头文件
#include"download.h"//添加免掉电下载头文件
void main()
{
Auto_Download();//调用免掉电下载函数
while(1)
{
//添加你的代码
}
}
4、自定义下载时,波特率为9600,奇偶位为None,数据位为8,停止位为1,自定义
下载指令为AB。以上设置可以自己在程序中修改。
5、程序可以根据自己的喜好修改,不过请标注原作者的信息,谢谢! ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆原作者信息☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
*******源程序地址;http://www.51hei.com/mcu/1405.html*******************************
* 程序作者: 郭伟(QQ:495817787 ,Email:)
* 程序版本: V1.0
* 编制日期: 2012-01-19
* 编译器:Keil C uVision4
* 调试芯片:STC89C52 11.0592M晶振
* 占用资源: 1》自定义下载:串口,定时器T1,中断
2》复位键下载:不占用资源
* 特别说明: 1》使用本程序时需要用宏来选择条件编译程序段
2》使用复位键下载时,只需要在main函数开头调用ResetKey_Download();
3> 使用自定义下载时调用Auto_Download()对串口进行初始化,波特率9600 **************************************************************************************/
#ifndef _DOWNLOAD_H_
#define _DOWNLOAD_H_ sfr ISP_CONTR = 0xE7;//软复位寄存器声明 /***选择下载方式***/
//#define Serial_download//若用户所写程序没有用到定时器,可以去掉注释,使其有效
#define ResetKey_download//使用条件编译选择下载方式,可以只使用一个。
/*****************/
#ifdef ResetKey_download
//复位下载相关函数
void ResetKey_Download()
{
if ((PCON & 0x10) == 0)
{
//POF位=0,单片机软件复位
PCON = PCON | 0x10; //将POF位置1,防止重复进入isp监控区
ISP_CONTR = 0x60; //软复位,从ISP监控区启动,如果没有isp下载流,则重新转向用户区引导
}
else
{
PCON = PCON & 0xef; //将POF清零,以便下次下载
}
}
#endif #ifdef Serial_download
//延时函数
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for(i = ms;i > 0;i --)
for(j=110;j > 0;j --);
} //初始化串口
void Serial_Download()
{
EA=1; //开总中断
ES=1; //允许串口中断
TMOD=0x20; //定时器T1,在方式3中断产生波特率
PCON=0x00; //SMOD=0
SCON=0x50;
TH1=0xfd; //波特率设置为9600
TL1=0xfd;
TR1=1; //开定时器T1运行控制位
} //串行口中断
void Serial_int(void) interrupt 4 using 0
{
unsigned char com_buff;
RI=0;
com_buff=SBUF;
if(com_buff==0xAB)
{
delay_ms(1000);
ISP_CONTR=0X60; //软件复位后,从ISP程序区启动
}
}
#endif
//自动下载调用函数
void Auto_Download()
{
#ifdef Serial_download
Serial_Download();
#endif #ifdef ResetKey_download
ResetKey_Download();
#endif
}
#endif
STC51系列单片机免掉电下载(热启动下载)的更多相关文章
- 【iOS系列】-多图片多线程异步下载
多图片多线程异步下载 开发中非常常用的就是就是图片下载,我们常用的就是SDWebImage,但是作为开发人员,不仅要能会用,还要知道其原理.本文就会介绍多图下载的实现. 本文中的示例Demno地址,下 ...
- 《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》系列文章之一:SeleniumBasic的下载
Selenium是一种非常流行的浏览器和网页自动化技术,开发人员可以使用C#.Java.Python等语言来操作Chrome.Firefox等浏览器. VBA语言可以直接操作访问Microsoft I ...
- 8、16、32-BIT系列单片机区别与特点
一.8位单片机 8031/8051/8751是Intel公司早期的产品 1.8031的特点 8031片内不带程序存储器ROM,使用时用户需外接程序存储器和一片逻辑电路373,外接的程序存储器多为EPR ...
- MSP430系列单片机特性及应用领域
概述 MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手.主要 ...
- MSP430FR2系列单片机破解芯片解密多少钱?
MSP430FR2系列单片机破解芯片解密 MSP430FR2xx系列单片机芯片解密型号: MSP430FR2533.MSP430FR2110.MSP430FR2310.MSP430FR2311.MSP ...
- STM32L系列单片机内部EEPROM的读写
STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块区域被开放出来专门用作EEPROM操作而已.STM32L的EEPROM使用寿命设计为100 ...
- MCS-51系列和80C51系列单片机是否相同
MCS是Intel公司单片机的系列符号.Intel推出有MCS-48.MCS-51.MCS-96系列单片机. MCS-51系列单既包括三个基本型80C31.8051.8751,以及对应的低功耗型号80 ...
- AT89C 系列单片机解密原理
单片机解密简单就是擦除单片机片内的加密锁定位.由于AT89C系列单片机擦除操作时序设计上的不合理.使在擦除片内程序之前首先擦除加密锁定位成为可能.AT89C系列单片机擦除操作的时序为:擦除开始---- ...
- IOS GCD图片数据异步下载,下载完成后合成显示
关于GCD使用详解,请看我的上一篇blog:http://www.cnblogs.com/xin-lang/p/6278606.html 前段时间遇到个需要异步下载,下载完成后再组合显示的东西.这里我 ...
随机推荐
- Flex3.0 Loader类的练习
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...
- 【WPF】ContentControl Style定义与使用出现问题后 -- 引发的思考
一.背景 使用WPF的朋友,大家都很喜欢采用定义控件的公共样式,以便整个框架对该资源的使用,好处就是可以达到代码复用.系统风格统一等: 1. 定义资源 <Style TargetT ...
- NetBeans平台中调用状态栏
http://blog.csdn.net/mycsoft/article/details/2326386 StatusDisplayer stD = StatusDisplayer.getDefaul ...
- jbpm4.4+ssh配置(有些使用经验很好)
http://www.cnblogs.com/cmzcheng/archive/2011/11/20/2255806.html ———————————————————————————————————— ...
- hdu 1155 Bungee Jumping
http://acm.hdu.edu.cn/showproblem.php?pid=1155 Bungee Jumping Time Limit: 2000/1000 MS (Java/Others) ...
- JPA多对多@manytomany注解配置实例
维护端注解 @ManyToMany (cascade = CascadeType.REFRESH) @JoinTable (//关联表 name = "student_teacher&quo ...
- 咏南C/S开发框架支持最新的DELPHI XE8开发
特大好消息:咏南C/S开发框架支持最新的DELPHI XE8开发!咏南开发框架让你再无开发工具升级后顾之忧! 购买咏南开发框架送项目源码!
- 实时监控mysql数据库变化
对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...
- 行为识别(action recognition)相关资料
转自:http://blog.csdn.net/kezunhai/article/details/50176209 ================华丽分割线=================这部分来 ...
- eclipse 最有用的10个快捷键
1Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...