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

发布时间:2024-03-15  

  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之间会是什么效果。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    MAX6373数据手册和产品信息;MAX6369–MAX6374均为引脚可选的看门狗定时器,用于监控微处理器(µP)活动并在系统工作不正常时发出信号。在正常工作期间,微处理器应在选定的看门狗超时周期到期之前反复切换看门狗......
    次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。 Ⅳ、看门狗原理 ①IWDG独立看门狗 独立看门狗由内部低速时钟LSI提供计数时钟,8 位分频,12位计数,需要......
    预设的复位门限电压介于1.575V至4.625V,步长为100mV (参见完整数据资料的表1)。 该系列器件通过外部电容调节复位和看门狗超时周期。MAX16056/MAX16058带有看门狗定时器,看门狗选择输入(WDS......
    功能、看门狗和电源失效检测功能。看门狗定时器可通过引脚编程设置,看门狗超时范围为6ms至2048ms。可编程设置电源失效检测门限,提供必要的电源失效预报警。MAX7388的电......
    的主函数的WWDGInit(0x7F,0x5F,WWDGPriorityGroup_2)写在了LED0=0前面,而通过窗口看门狗超时公式可以算出t=4096*2*8*(0x40+1)/36MHZ......
    复位重新启动,避免程序继续错误运行 独立看门狗超时时间(40KHz的输入时钟LSI) 2. 硬件设计 使用USART1来打印调试信息,PC0用来指示程序是否复位 3. 软件设计 3.1......
    选择输入引脚,能够使看门狗超时周期扩展128倍。MAX6752/MAX6753带有窗式看门狗定时器,用于检测是否超出预期的工作窗口。 MAX6746–MAX6753具有推挽式或漏极开路/RESET输出......
    选择输入引脚,能够使看门狗超时周期扩展128倍。MAX6752/MAX6753带有窗式看门狗定时器,用于检测是否超出预期的工作窗口。 MAX6746–MAX6753具有......
    选择输入引脚,能够使看门狗超时周期扩展128倍。MAX6752/MAX6753带有窗式看门狗定时器,用于检测是否超出预期的工作窗口。 MAX6746–MAX6753具有推挽式或漏极开路/RESET输出......
    ("Turned off Watch Dogn");       close(wt_fd);       return 0;} 本代码实现了启用看门狗,设置看门狗超时时间,定时喂狗,关闭看门狗还没有修正。经实......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>