STC单片机软复位

合集下载

第 章 STC单片机看门狗及软件复位电路 Compatibility Mode

第 章 STC单片机看门狗及软件复位电路 Compatibility Mode

C51单片机基础及编程应用红河学院张自红编著红河学院第7章STC看门狗及软件复位电路看门狗介绍1看门狗基本原理2STC系列单片机看门狗3应用实例4红河学院7.1看门狗介绍在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)红河学院7.2看门狗基本原理看门狗,又叫watchdog timer,是一个定时器电路一个输入,叫喂狗(kicking the dog or service the dog),一个输出,到MCU的RST端MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗,(程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

红河学院7.2看门狗基本原理系统运行任务1以后也就启动了看门狗的计数器,看门狗就开始自动计数,当该任务执行到一定的时间就必须去把看门狗定时器清零。

如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。

红河学院7.3 STC 系列单片机看门狗 EN_WDT :看门狗允许位, 当设置为1 时,看门狗启动。

CLR_WDT :看门狗清0 位, 当设为1 时,看门狗将重新计数。

硬件将自动清0IDLE_WDT :看门狗I D L E 模式位, 当置1 时, 看门狗定时器在“空闲模式”计数;当清0时, 看门狗定时器在“空闲模式”时不计数Mnemonic 76543210Reset value WDT_CONTR --EN_W DT CLR_WDT IDLE_WDT PS2PS1PS0xx00,0000Watch-Dog-Timer Control register:红河学院7.3 STC系列单片机看门狗看门狗定时器预分频值(Pre-scale ),如下表所示看门狗定时器预分频值,STC特有PS2PS1PS0预分频f=20MHz 12T模式时间000239.3ms001478.6ms0108157.3ms01116314.6ms10032629.1ms10164 1.25s110128 2.5s1112565s看门狗溢出时间= (N x Pre-scale x 32768) / 晶振频率其中N为单片机机器周期,STC提供6T或12T两种周期,烧写程序时修改红河学院7.4 应用实例例:编写程序代码对单片机的看门狗进行喂狗。

单片机复位和冷启动详细介绍

单片机复位和冷启动详细介绍

单片机复位和冷启动详细介绍单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

单片机如何冷启动单片机冷启动很简单,关电,再上电,正常复位后,就冷启动成功。

单片机冷启动其实是一个技术术语,是指单片机从最原始状态启动运行。

实现这一目标视不同的单片机内部结构而有所不同。

接下来我们以STC12系列单片机冷启动、热启动解析一下:冷启动——是指在断电状态下重新上电。

冷启动,是在下载程序开始时,为了是单片检测有无下载信号。

若有则下载;若无则执行原来的程序。

热启动——是指已经处于上电状态,给复位端加复位信号(还有其他类型的复位),程序重新运行。

怎样判断是冷启动、热启动?可通过查询PCON寄存器中的POF位来判断,单片机上电冷启动后,POF位变为1,可由软件清0实际判断流程图:Stc单片机里面有一段出厂时固化的程序,这段程序的作用是检测串口是否要下载程序,不需要则执行单片机内的用户程序。

每次启动时运行这端程序,这就是为什么每次下载时要冷启动。

而复位后单片机是从地址0000H处开始执行,地址0000H又会指向主程序入口,即主函数处,即片内下载的用户程序而不会执行前面已经固化的检测串口那段程序。

这就是为什么单片机每次下载要冷启动,而复位不行。

注意,程序前面的宏定义什么的东西不占用系统时间,所以主程序即主函数处。

有一个办法可以给那些需要加电立刻启动的用户,STC单片机可以设置为加电时只有。

STC系列单片机程序烧录方法

STC系列单片机程序烧录方法

STC系列单片机程序烧录方法STC系列单片机(例如STC89C51系列)是一种广泛使用的单片机系列,它具有低成本、易于使用和良好的性能特点,因此在各种嵌入式系统中都有广泛的应用。

在使用STC系列单片机时,我们需要将程序烧录到芯片中,下面是一种常用的STC系列单片机程序烧录方法。

1.硬件准备在进行STC系列单片机程序烧录之前,首先需要准备相应的硬件设备。

我们需要一个烧录器以及与之相配套的连接线。

常用的烧录器有STC-ISP、USB-ISP等,其中STC-ISP烧录器是STC系列单片机官方推荐的烧录器,使用起来非常方便。

2.确定烧录模式STC系列单片机有两种烧录模式,分别是ISP烧录模式和IAP烧录模式。

ISP烧录模式可以通过外部烧录器直接连接到单片机的烧录口进行烧录。

IAP烧录模式可以通过串口等外部设备来进行烧录。

在进行烧录之前,需要确定使用哪种烧录模式,并将单片机设置为对应的烧录模式。

3.连接烧录器与单片机将烧录器通过连接线连接到单片机的烧录口上。

烧录器的引脚与单片机的烧录口引脚相对应,需要一一对应地连接。

4.打开烧录软件使用STC系列单片机官方提供的烧录软件(STC-ISP烧录器对应的软件为STC-ISP程序),打开烧录软件,进入烧录界面。

5.设置烧录参数在烧录软件的烧录界面上,设置烧录参数。

选择所使用的烧录器型号、芯片型号以及烧录模式等。

确保选择正确的型号和模式。

6.选择待烧录的程序文件在烧录软件的烧录界面上,选择待烧录的程序文件。

通常程序文件的扩展名为.hex。

7.擦除芯片在烧录软件的烧录界面上,选择擦除芯片的操作。

将待烧录的程序文件烧录到芯片之前,需要先擦除芯片中原有的程序。

8.开始烧录在烧录软件的烧录界面上,点击“开始烧录”按钮,开始进行程序的烧录。

烧录过程中,烧录软件会将程序文件的指令逐条发送给烧录器,然后由烧录器将指令写入芯片的存储器中。

9.烧录完成烧录过程完成后,烧录软件会弹出烧录成功的提示框。

stc89c52中EEPROM使用方法

stc89c52中EEPROM使用方法

单片机STC‎89C52R‎C内部EEPR‎O M单片机运行时‎的数据都存在‎于RAM(随机存储器)中,在掉电后RA‎M中的数据是无‎法保留的,那么怎样使数据在掉‎电后不丢失呢‎?这就需要使用‎E EPROM‎或FLASH‎R OM 等存储器来实‎现。

在传统的单片‎机系统中,一般是在片外‎扩展存储器,单片机与存储‎器之间通过I‎I C 或SPI 等接口来进行‎数据通信。

这样不光会增‎加开发成本,同时在程序开‎发上也要花更‎多的心思。

在STC 单片机中内置‎了EEPRO‎M(其实是采用ISP/IAP 技术读写内部‎F LASH 来实现EEP‎R OM),这样就节省了‎片外资源,使用起来也更‎加方便。

下面就详细介绍S‎T C 单片机内置E‎E PROM 及其使用方法‎STC 各型号单片机‎内置的EEP‎R OM 的容量最小有‎2K,最大有16K‎,基本上很好地‎满足项目的需‎要,更方便之处就是‎节省了周边的‎E EPROM‎器件,达到节省成本‎的目的,而且内部EE‎P ROM 的速度比外部‎的EEPROM‎的速度快很多‎。

STC 各型号单片机‎内置的EEP‎R OM 是以512 字节为一个扇‎区,EEPROM‎的起始地址=FALSH 容量值+1,那么STC8‎9C52RC‎的起始地址为‎0x2000‎,第一扇区的起‎始地址和结束‎地址0x20‎00~0x21FF‎,第二扇区的起始地址和‎结束地址0x‎2200~0x23FF‎,其他扇区如此‎类推。

深入重点:�传统的EEP‎R OM 是电可擦可编‎程只读存储一‎种掉电后数据‎不丢失的存储‎芯片。

�STC89C‎52RC 的EEPRO‎M是通过ISP‎/IAP 技术读写内部‎F LASH 来实现EEP‎R OM。

�STC89C‎52RC 的EEPRO‎M起始地址为0‎x2000,以512 字节为一个扇‎区,EERPOM‎的大小为2K‎字节。

STC89C‎52RC 与EEPOR‎M实现的寄存器‎有6 个,分别是ISP‎_DATA、ISP_AD‎D RH、ISP_AD‎D RLISP_TR‎I G、ISP_CM‎D、ISP_CO‎N TR。

第 章 STC单片机时钟 复位和电源模式原理及实现

第 章 STC单片机时钟 复位和电源模式原理及实现
-- 内部低压检测复位
注:在STC-ISP软件中推荐选择“低电压时禁止EEPROM操作”前面的复选框。 下面给出与低压检测有关的电源控制寄存器PCON。该寄存器在特 殊功能寄存器地址为0x87H的位置,当上电复位后该寄存器的值为 00110000。
比特 B7
B6
B5
B4
B3
B2
B1
B0
名字
SMOD
SMOD 0
在低压检测复位结束后,不影响特殊功能寄存器IAP_CONTR中 的 SWBS/IAP_CONTR.6 位 的 值 , 单 片 机 根 据 复 位 前 SWBS/IAP_CONTR.6的值选择从用户应用程序区启动,还是从 系统监控区启动。
STC单片机复位
-- 内部低压检测复位
对于5V和3V供电的单片机都提供了内置8级可选的内部低电压 检测门限电压。对于宽电压供电的STC单片机来说,内置了16级可 选的内部低电压检测门限电压值。用户可以根据工作频率和供电电 压,选择合理的门限电压。典型地: 对于5V供电的单片机来说,常温下工作频率大于20MHz时,可
P47=0;
//P4.7置低,灯亮
for(j=0;j<999999;j++);
//软件延迟
IAP_CONTR=0x60;
//软件复位指令
}
注:读者可以进入本书所提供资料的stc_program_example\例子18-2目录下, 打开并参考该设计。
STC单片机复位
--掉电/上电复位
当电源电压VCC低于掉电复位/上电复位检测门限电压时,将单 片机内的所有电路复位。该复位属于冷启动复位的一种。当内部 VCC电压高于掉电复位/上电复位检测门限电压后,延迟32768个时 钟后结束掉电/上电复位过程。当该过程结束后,单片机将特殊功能 寄存器IAP_CONTR中的SWBS/IAP_CONTR.6位置1,同时从系统 ISP监控区启动程序。

有关STC单片机发热、复位的问题

有关STC单片机发热、复位的问题

有关STC单片机发热、复位的问题
最近有个项目,需要一个继电器,接收到低电平就动作,用的
STC15W104、使用的市面上的开关电源5V/3A.
 本来看似简单到底的一个东西,却花费了将近3天的时间搞定。

 1.现象一
 产品是1U机箱内部一个ARM主板,需要定时硬重启一次。

暂且叫STC 控制板,控制板在不带载的情况下,触发正常,与程序很符合,但是带载后,第一次触发正常,第二次单片机就开始发烫,能到80多度,然后直接冒烟,这个现象100%会出现,控制板的继电器没有使用隔离。

 解决办法:
 在5V电源处并了一个1000UF的大电容。

曾尝试并5.1V稳压管,发现不顶用。

 2.现象二
 板子会误动作,尤其是周围有人,或者是工作一段时间,或者是开关963电烙铁都会让继电器误触发。

STC单片机内部EEPROM的应用

STC单片机内部EEPROM的应用

ISP_IAP_enable()?/* 打开IAP 功能*/
for(i=0?i<len?i++)
{
/* 写一个字节*/
ISP_ADDRH=(unsigned char)(in_addr >> 8)?
ISP_TRIG=0xb9?/* 触发ISP_IAP 命令字节2 */
_nop_()?
}
/*
字节读
*/
unsigned char byte_read(unsigned int byte_addr)
{
ISP_ADDRH=(unsigned char)(byte_addr>>8)? /* 地址赋值*/
stc单片机EEPROM读写(一)
EEPROM 操作函数:
#define RdCommand 0x01
#define PrgCommand 0x02
#define EraseCommand 0x03
#define Error 1
#define Ok 0
#define WaitTime 0x01
#define PerSector 512
unsigned char xdata Ttotal[512]?
/*
打开ISP,IAP 功能
*/
void ISP_IAP_enable(void)
D7 D6 D5 D4 D3 D2 D1 D0
ISPEN SWBS SWRST - - WT2 WT1 WT0
启动到ISP 区或用户程序区,这在“STC 单片机自动下载”一节,亦有所应用。
如:
ISP_CONTR=0x60? 则可以实现从用户应用程序区软件复位到ISP 程序区开始运行

第9章 STC单片机时钟、复位和电源模式原理及实现(1)

第9章 STC单片机时钟、复位和电源模式原理及实现(1)
注:该位必须用软件清0。在清零后,如果内部工作电压VCC继续低于检测 门限电压,则将该位再次自动设置为1。
STC单片机复位
--内部低压检测复位
当进入掉电工作状态前,如果低压检测电路未被允许产生中断,则在 进入掉电模式后,该低压检测电路不工作以降低功耗。如果允许可产 生低压检测中断,则在进入掉电模式后,该低压检测电路将继续工作, 在内部工作电压VCC低于低压检测门限电压时,产生低压检测中断, 可以将MCU从掉电状态唤醒。
STC单片机复位
--看门狗复位
看门狗控制寄存器WDT_CONTR,位于特殊功能寄存器 地址为0xC1的位置。当复位后,该寄存器的值为 0x00000B。
比特
B7
B6
B5
B4
B3
B2
B1
B0
名字 WDT_FLGA --- EN_WDT CLR_WDT IDLE_WDT PS2
PS1
PS0
WDT_FLAG
STC单片机所提供的多种电源工作模式,在满足系统性能要求的 同时,也极大地降低了其系统功耗。
STC单片机时钟
【例】控制STC单片机输出时钟频率C语言描述的例子
#include "reg51.h" sfr CLK_DIV =0x97; void main() {
CLK_DIV=0xc5; while(1); }
STC单片机复位
--内部低压检测复位
IDL
将其置位为1,进入IDLE模式(空闲)。 除系统不给CPU提供时钟,即:CPU不执行指令外,其余功能部件仍然
继续工作,可以由外部中断、定时器中断、低压检测中断及ADC转换中 断的任何一个中断唤醒。
GF1和GF0
两个通用工作标志位,用户可以任意使用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//*******************stc 单片机不断电下载程序******************
#include <REG52.H> sfr ISP_CONTR=0xe7;
软复位寄存器声明
void main(void)
{ //////////////将这段代码嵌入到程序中//////////////// if((PCON&0x10)==0) //如果 POF 位=0
ISP/IAP 控制寄存器(ISP_CONTR)
STC 单片机 ISP/IAP 控制寄存器在特殊功能寄存器中的字节地址为 E7H,
不能位寻址,该寄存器用来管理和 ISP/IAP 相关的功能设定及是否软件复位
等。单片机复位时该寄存器全部被清 0。其各位的定义如表 4.3.1 所示。
表 1 ISP/IAP 控制寄存器(ISP_CONTR)
在以前的教程中,曾利用单片机串口收到某个有效数据后,执行从 isp 引导区软启动的 命令(ISP_CONTR=0x60;),实现程序不断电下载。但该方法为实现程序不断电下载,占用 了一些单片机资源——串口、中断等,实际应用中有一些不便。下面介绍另一种程序不断电
利用单片机的 reset 复位键下载程序:
单片机上电复位时,POF=1;单片机手动复位时,POF=0 单片机上电运行时对 POF 位进行判断,如果 POF 位=0,将 POF 位置 1,让单片机从 isp 引 导区软复位。如果 POF 位=1,将 POF 位清 0。 将实现以上功能的代码加入到你的程序中,当需要下载程序时,按下复位按钮,此时 POF 位=0,单片机再次从 isp 引导区软复位,从而实现程序下载。 该方法只需在用户程序中嵌入一段判断 POF 标志位的代码就能实现程序不断电下载,无需 占用任何单片机内部资源。
{ PCON=PCON|0x10; ISP_CONTR=0x60;
//将 POF 位置 1 //软复位,从 ISP 监控区启动
}
else
{ PCON=PCON&0xef; //将 POF 位清零
}
//////////////////////////////////////////////
while(1) {
位序 号 位符 号
D7 ISPEN
D6
D5
D4 D3 D2 D1 D0
SWBS
SWRST
--
-- WT2 WT1 WT0
ISPEN:ISP/IAP 功能允许位。0:禁止 ISP/IAP 编程改变 Flash。1:允许编
程改变 Flash。
SWBS:软件选择从用户应用程序区启动(0),还是从 ISP 程序区启动(1)。要
正常情况下,stc 单片机只有在上电复位时才执行 isp 引导程序,其它复位(看门狗复位、 rst 引脚复位)则直接执行用户程序。通过阅读 stc 单片机手册发现,在用户程序运行时,利 用软件复位方式,可以让 stc 单片机复位后从 isp 引导程序处运行,利用该特性,可以模拟 stc 单片机上电复位状态,实现不断电程序下载。STC 单片机有热启动和冷启动两种复位形 式。两种复位方式区别如下:
们通过人为设定可以给 CPU 一个最长的等待时间,若在此时间段内相应的操
作未完成,数据将丢失或错误。以下给出芯片厂商推荐的等待时间关系表,
如表 3.4.2 所示:
表 2 ISP/IAP 编程 CPU 等待时间参考表
设置等待时间 WT2 WT1 WT0 011 010 001 000
读操作 6 11 22 43
CPU 等待时间(机器周期)
写操作 擦除操作 要求系统时钟
30
5741
小于 5MHz
60
10942
小于 10MHz
120
21885
小于 20MHz
240
43769
小于 40MHz
SWBS 与 SWRST 组合情况如下: 从用户应用程序区(AP 区)软件复位并切换到用户应用程序区(AP 区)开始 执行程序: ISP_CONTR=00100000B,SWBS=0(选择 AP 区),SWRST=1(软复位)。 从系统 ISP 监控程序区软件复位并切换到用户应用程序区(AP 区)开始执行 程序: ISP_CONTR=00100000B,SWBS=0(选择 AP 区),SWRST=1(软复位)。 从用户应用程序区(AP 区)软件复位并切换到系统 ISP 监控程序区开始执行 程序: ISP_CONTR=01100000B,SWBS=1(选择 ISP 区),SWRST=1(软复位)。 从系统 ISP 监控程序区软件复位并切换到系统 ISP 监控程序区开始执行程 序: ISP_CONTR=01100000B,SWBS=1(选择 ISP 区),SWRST=1(软复位)。 本复位是整个系统复位,所有的特殊功能寄存器都会复位到初始值,I/O 口 也会被初始化。 用户应用程序区(AP 区)指仅仅是用户自己编写的程序区。 ISP 监控程序区 ISP 区是指芯片出厂时就已经固化在单片机内部的一段程 序,STC 单片机可以进行 ISP 串行下载程序,这就是因为芯片在出厂时已经在 单片机内部固化了 ISP 引导码,程序首次上电时先会从 ISP 区开始执行代码, 体现在实际实验中时,就是我们在下载程序时,先要点击下载软件界面上的下载, 然后再开启单片机电源,当单片机检测到上位机有下载程序的需要时,便启用 ISP 下载功能给单片机下载程序。若经过短暂的时间没有检测到上位机有下载程 序的需求,单片机便会从用户应用程序区(AP 区)开始执行代码。
用户应用程序在运行过程中,有时会有特殊需求,需要实现单片机系统复位(热启动之一), 传统的 8051 单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦 。 STC 单片机增加了相应的硬件功能,内部的 ISP/IAP 控制寄存器 ISP_CONTR 便可以实现此功
能。用户只需简单的控制 ISP_CONTR 特殊功能寄存器的其中两位 SWBS 和 SWRST 就可以实 现系统复位。
因学习需要,本人从网上整理了一些 STC 单片机不断电程序下载的方法,拿出来分享一下。 stc 单片机 isp 实现原理如下:
stc 单片机每次上电复位后首先执行 isp 引导程序,如果串口检测到合法的数据流,则进 行 isp 程序下载;串口没有检测的合法的数据流,则跳出 isp 程序,执行用户程序。
` ` ` } }
色代码复制到您的程序中,首次使用时应利用断电下载的方式将含有 红色代码的程序下载到单片机中 2 将hex文件载入stc单片机isp软件,点击下载按钮 3 按下单片机开发板上复位键,单片机进行is程序下载

与 SWRST 直接配合才可以实现。
SWRST:0:不操作;1:产生软件系统复位,硬件自动清零。
WT2、WT1、WT0:ISP/IAP 编程时设定 CPU 等待的最长时间。ISP/IAP 编程时
可对 Flash 进行读操作、写操作、擦除操作,当进行这些操作时,时钟将被
CPU 锁定只进行这些操作,而不同的操作将会耗费 CPU 不同的时间,这里我
相关文档
最新文档