AT89S52的看门狗定时器详情分析

发布者:superstar11最新更新时间:2024-03-15 来源: elecfans关键字:AT89S52  看门狗  定时器 手机看文章 扫描二维码
随时随地手机看文章

  AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

  AT89S52主要性能:

  1、与MCS-51单片机产品兼容;

  2、8K字节在系统可编程Flash存储器;

  3、1000次擦写周期;

  4、全静态操作:0Hz-33MHz;

  5、三级加密程序存储器;

  6、32个可编程I/O口线;

  7、三个16位定时器/计数器;

  8、6个中断源;

  9、全双工UART串行通道;

  10、低功耗空闲和掉电模式;

  11、掉电后中断可唤醒;

  12、看门狗定时器

  13、双数据指针;

  14、掉电标识符。

        AT89S52单片机组成结构:

AT89S52的看门狗定时器详情分析

  AT89S52引脚结构:

  AT89S52 具有PDIP、PLCC、TQFP3 种封装形式以适用于不同的使用场合。各封装引脚定义如下图所示。

AT89S52的看门狗定时器详情分析
AT89S52的看门狗定时器详情分析


  AT89S52各引脚的功能:

  下面简单介绍AT89S52各引脚的功能,更多信息请查阅Atmel公司的技术文档。 VCC:电源。 GND:地。

  P0 口:P0 口是一个8 位漏极开路的双向I/O 口。作为输出口,每位能驱动8 个TTL逻辑电平。对P0 端口写“1”时,引脚用做高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在Flash编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。在程序校验时,需要外部上拉电阻。

  P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个TT

  逻辑电平。当对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此 外,P1.0 和P1.2 分别作为定时器/计数器2 的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表1-1 所示。在Flash编程和校验时,P1口接收低8 位地址字节。

  P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TT逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问

  表1口部分管脚的第二功能

AT89S52的看门狗定时器详情分析

  外部程序存储器或用16 位地址读取外部数据存储器(如执行MOVX @DPTR)时,P2 口送出高8 位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8 位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2 口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TT

  逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口也作为AT89S52 特殊功能(第二功能)使用,如表1-2所示。在Flash编程和校验时,P3口也接收一些控制信号。

  表2 P3口部分管脚的第二功能
AT89S52的看门狗定时器详情分析

  RST: 复位输入。在晶振工作时,RST脚持续两个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO 位可以使此功能无效。在DISRTO 默认状态下,复位高电平有效。

  ALE/PROG:地址锁存控制信号(ALE)在访问外部程序存储器时,锁存低8 位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用做编程输入脉冲。 在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0 位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0 位)的设置对微控制器处于外部执行模式下无效。

  PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

  EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在Flash编程期间,EA也接收12伏VPP电压。

  XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。


  AT89S51单片机看门狗定时器的使用

  T89S51看门狗定时器由一个14位定时器及WDTRST(地址为6AH)寄存器构成。开启看门狗定时器后,14位定时器会自动计数,每16384(214)个机器周期溢出一次,并产生一个高电平复位信号,使系统复位。对于12MHZ的时钟脉冲每16384us(约0.016s)产生一个复位信号。

  如果启动看门狗定时器,当系统超过0.016s没有动作(程序跑飞),看门狗定时器自动复位,让系统归复于正常运作状态。为了系统既能正常工作又不会出现死机(程序跑飞),在0.016s内必须喂狗一次,即对看门狗定时器进行复位,看门狗的启动和复位的方法是一样的。

  在汇编语言中启动或复位看门狗定时器的命令如下。

  MOV 6AH, #1EH

  MOV 6AH, #0E1H

  若要在C语言中使用看门狗定时器功能,由于reg51.h中并没有声明WDTRST寄存器,所以必须先声明WDTRST寄存器。

  Sfr WDTRST=0xa6;

  进行声明以后可以用一下命令启用或复位看门狗定时器。

  WDTRST=0x1e;

  WDTRST=0xe1;

  下面用一个C语言进行说明

  #include 《reg51.h》

  Sfr WDTRST=0xa6;

  Main()

  { ……;

  WDTRST=0x1e;

  WDTRST=0xe1;

  While(1)

  { WDTRST=0x1e;

  WDTRST=0xe1;

  ……;

  ……; 这部分执行时间必须少于0.016s } }

  以上程序中系统在做一个无限循环的动作,通过看门狗定时器可以防止程序在执行过程中跑飞。因为只要程序一跑出while()循环,看门狗定时器溢出以后得不到复位,所以自动复位系统,让程序从mian()开始重新运行。

  但是在C语言应用看门狗定时器也特别小心,一定要在看门狗定时器启动后的0.016s内喂一次狗。

  注:在汇编语言中每条指令的执行时间都是可以准确算出来,下面是一个汇编语言编写的8路led向左移程序应用看门狗定时器的实例。

  ORG 00H 1 1us

  MOV 0A6H,#1EH 2 1us

  MOV 0A6H,#0E1H 3 1us

  START: MOV A,#0FEH 4 1us

  LOOP: MOV P2,A 5 1us

  CALL DELAY 6 2us

  RL A 7 2us

  JMP LOOP 8 2us

  DELAY: MOV R7,#200 9 1us

  DV: MOV R6,#250 10 1us

  DJNZ R6,$ 11 2us

  MOV 0A6H,#1EH 2 1us

  MOV 0A6H,#0E1H 3 1us

  DJNZ R7,DV 12 2us

  RET 13 2us

  END 14 2us

  在程序的每个行标号后面是12MHZ时钟脉冲下的指令执行时间,为了让系统正常工作且不死机将看门狗定时器启动指令放在1和2之间,将看门狗定时器复位指令放在11和12之间。

  现在一起通过执行时间来计算看门狗定时器复位指令放在那里比较合适。

  程序执行顺序:1 2 3 4 5 6 9 10 11 12 9 10 ……

  运行时间: 1us 1 1 1 1 2 1 1 2*250 us (1+250*2+2)*199

  程序运行到11的时候用的时间是2*250+6=506us《16384us

  程序运行到12的时候用的时间是506+(1+250*2+2)*199=10063us》16384us

  从比较结果可以看出,看门狗定时器的喂狗指令必须放在11和12之间。可以想一下放在12和13之间会是什么效果。


关键字:AT89S52  看门狗  定时器 引用地址:AT89S52的看门狗定时器详情分析

上一篇:基于80C51单片机和AD526运放实现防腐电源监控节点的设计
下一篇:基于51单片机的温控风扇

推荐阅读最新更新时间:2024-11-06 08:53

ATmega128 看门狗复位
看门狗定时器溢出时将产生持续时间为1 个CK 周期的复位脉冲。在脉冲的下降沿,延时 定时器开始对tTOUT 记数。请参见看门狗定时器的具体操作过程。
[单片机]
ATmega128 <font color='red'>看门狗</font>复位
【STM32电机矢量控制】记录12——IWDG看门狗
看门狗概念: 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续正常工作,会造成整个系统陷入停滞状态,发生不可预料的后果。看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启的电路。看门狗命令在程序的中断中拥有最高的优先级。 IWDG简介: 官方说法: STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数
[单片机]
【STM32电机矢量控制】记录12——IWDG<font color='red'>看门狗</font>
ATmega16L-定时器应用于数码管
/**************************************** 扫描数码管,数据口接PA 段码接PC7 位码接PC6 稳定显示01234567 ****************************************/ #include iom16v.h #include macros.h unsigned int i; const unsigned char duanma ={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x
[单片机]
AT89S52单片机16LED摇摇棒设计
一、作品说明 摇摇棒是如今流行的一种玩具,在各种聚会、节日中均见得到它的身影。本设计也追随着摇摇棒的原理,利用人眼的视觉暂留特性,通过AT89S52单片机对16只高亮度LED发光二极管进行控制, 配合手的左右摇晃就可呈现一幅完整的画面。 该摇摇棒具有如下功能:1) 显示 “欢迎使用神奇魔幻摇摇棒!”;2) 显示 “o(∩_∩)o”微笑图案;3) 显示 心形图案;4) 显示 “LOVE”;5) 可以通过开关实现转换,轮流显示并循环。 二、系统总体设计 1、总体方案比较与论证所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡
[单片机]
<font color='red'>AT89S52</font>单片机16LED摇摇棒设计
AT89S52单片机P3口解惑
AT89S52单片机P3端口有第二功能,如下所示: P3.0 RXD (串行接口输入) P3.1 TXD (串行接口输出) P3.2 INT0 (外部中断0输入) P3.3 INT1 (外部中断1输入) P3.4 T0 (定时/计数器0的外部输入) P3.5 T1 (定时/计数器1的外部输入)
[单片机]
LPC2103之看门狗定时器
WatchDog Timer (WDT) page225 看门狗定时器的定时范围为TPCLK x 256 x 4 到TPCLK x 232 x 4)。 看门狗定时器的设置步骤如下: ? 在WDTC寄存器设置看门狗定时器的重装值 ? 在WDMOD寄存器设置模式 ? 先后写入0xaa和0x55到WDFEED寄存器以启动看门狗定时器 ? 为防止看门狗产生复位/中断,必须在看门狗计数器下溢前进行喂狗 当看门狗定时器下溢,程序计数器将如同产生了外部复位信号一样从0x00000000地址重新启动。看门狗定时输出标志(WDTOF)能够检测并是否看门狗导致了复位。WDTOF标志位必须软件清除。 看门狗相关寄
[单片机]
MSP430F149定时器TA总结
msp430的定时器主要是指基本定时器,看门狗定时器和TATB定时器,两种定时器从功能和用法的角度基本相似,TB功能更为强大,有7个CCR0寄存器,即可输出六路PWM,在做三相逆变的时候,需要六路每路相差60°的spwm波,就是用TB来发生的。 定时器的PWM发生利用的是比较模式,即在CCR0中储存周期,CCR1中储存一个小于CCR0的数字,CCR1/CCR0的比值即为占空比,其原理如下图所示: 在一个16位计数器TAR增加的过程中,当达到CCR1前输出高电平,达到CCR0值前输出低电平,达到CCR0后,重新置位。 与TA相关的寄存器分为四类: 1、TACCRx(CCRx) //捕获/比较寄存器 2、TAC
[单片机]
STM32独立看门狗IWDG时限的确定
看门狗定时时限= IWDG_SetReload()的值 / 看门狗时钟频率 看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数 1.STM32 看门狗的 例子 IWDG的时限定为280微秒。这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。 /* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) ------------------------------------------------------------- */ /* Enable write acces
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved