STC51系列单片机免掉电下载(热启动下载)

发布者:Xingfu6666最新更新时间:2017-01-09 来源: eefocus关键字: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//你所需的头文件
				#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系列  单片机  免掉电下载  热启动下载 引用地址:STC51系列单片机免掉电下载(热启动下载)

上一篇:STC12C5A60S2 内部AD+1602显示
下一篇:单片机的电源选项

推荐阅读最新更新时间:2024-03-16 15:29

基于单片机和CDMA的车载温控系统
  该系统利用GSM远程通信系统控制车内空调等器械运作。用户通过短信形式达到人机互动,克服红外线、无线等远程控制距离短的问题,还可以实现实时监控汽车的状态,为车主提供便利。   1 系统原理与结构   1.1 系统功能介绍   本系统能以10次/s的速度自动采集现场的环境温度和光照强度、采集空调和窗帘的开闭状态,并通过LCD液晶屏实时地显示出来。温度的感应范围-55~+125℃,精度为±0.5℃。光强的强度范围分为强、较强、中、较弱、弱5档。空调和窗帘的状态为开或者关。   用户可以通过手机或者小灵通等终端与GSM模块连接的系统之间进行无线通信,通信范围为移动网络覆盖的所有范围,做到了真正的通信范围无穷大。具体的通信为:
[单片机]
基于<font color='red'>单片机</font>和CDMA的车载温控系统
一些导入TinyML的关注点
本文编译自techtarget TinyML 是裁剪 AI 模型和应用程序,以在较小设备上运行的通用方法,包括微控制器、廉价 CPU 和低成本 AI 芯片组等。 虽然大多数 AI 开发工具专注于构建规模更大、功能更强大的模型,但部署 TinyML 模型需要开发人员考虑如何更加高效。TinyML 应用程序通常设计为在具有毫瓦功率、几百 KB RAM 、较慢时钟周期以及电池受限的设备上运行。团队需要做更多的前期规划来满足这些严格的要求。 TinyML 应用程序开发人员需要考虑硬件、软件和数据管理以及如何将原型设计和扩展过程组合在一起。 ABI Research 预测,TinyML 设备的出货量将从 2020 年的 1520
[嵌入式]
51单片机交通灯全套设计资料分享
1、用单片机stc89C52 设计一个交通灯系统,并用数码管显示时间,LED指示通行。 2、用protel 99se设计电路图,pcb图等 3、数码管用三极管驱动。 4、按键功能:黄灯常亮(深夜模式)、禁行、东西通行、南北通行、时间加、时间减、切换、确定。 仿真图: 1、单片机是通用的无论51还是52、无论stc还是at都一样,引脚功能都一样,原理图和程序也是一样的。 2、原理图中的. sch等格式是要用protel99se打开的,没有软件的不要紧,我已帮您转换成word格式和pdf格式的了。 3、程序中的.c文件可以用记事本打开,就是程序了。其他的是写程序是自动生成的,没什么用的。 4、可以按照正面布局,尽量不要按照实
[单片机]
51<font color='red'>单片机</font>交通灯全套设计资料分享
51单片机——按键操作
在51单片机开发板上,对按键设置进行操作,其中包括按键的按下,显示对应位置,以及按键密码锁 1.按下按键显示对应位置 main.c #include REGX52.H #include Delay.h #include LCD1602.h #include MatrixKey.h unsigned char KeyNum; void main() { LCD_Init(); LCD_ShowString(1,1, helloworld ); while(1) { KeyNum=MatrixKey(); if(KeyNum) { LCD_ShowNum(2,1,KeyNum,
[单片机]
关于MSP430单片机串口通信数据丢失问题
研究摸索了接近一个星期,把所遇到的问题写出来以供参考。 最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。 接下来写一个组帧协议,收发完全正常。但是看上去逻辑思维非常的杂乱不清晰,就想整理一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。 接近一个星期研究,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为115200,我自己改成了9600,问题解决。如
[单片机]
单片机LCD显示屏
电路图: 代码如下: #include reg51.h #include INTRINS.H sbit RS=0xA0; sbit RW=0xA1; sbit E=0xA2; void lcd_w_cmd(unsigned char com); void lcd_w_dat(unsigned char dat); unsigned char lcd_r_start(); void init(); void delay(unsigned char t); void delay1(); void GONG_ZI() { lcd_w_cmd(0x40); lcd_w_dat(0x1f); lc
[单片机]
<font color='red'>单片机</font>LCD显示屏
基于51单片机设计的乘法口诀模拟答题器
/******************************************************************* * LCD1602显示 * *【版权】Copyright(C) JAS All Rights Reserved * *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! * * * ******************************************************************** *
[单片机]
51单片机开发环境搭建方法
前言 上至航天,下至儿童玩具,凡事沾一点智能的东西,都离不开单片机的身影......,本文开始,我们学习单片机的相关知识,我们采用的是由普中科技开发的A7开发板,该开发板搭载了STC89C52或STC89C516两块芯片,这款单片机属于8051系列和STC8系列的单片机,51单片机作为入门级单片机不仅在教学实验中应用广泛,在实际项目中应用亦是十分广泛。 一、基础知识 1.什么是单片机? 单片机是一个单片微型计算机,由中央处理器CPU、数据存储器RAM、程序存储器ROM、输入/输出设备(键盘、显示屏等)等集成到一块芯片上组成。 2.单片机能做什么? 前言中开篇便比较好的阐释了单片机的功能,凡是沾点智能的影子的东西,都离不开单片机
[单片机]
51<font color='red'>单片机</font>开发环境搭建方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved