8051单片机看门狗原理和C语言演示程序(以STC89C52RC单片机为例)

合集下载

STC89C52RC单片机手册范本

STC89C52RC单片机手册范本

STC89C52单片机用户手册[键入作者姓名][选取日期]STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式●掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2.工作电压:5。

5V~3.3V(5V单片机)/3。

8V~2。

0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3。

0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗〈0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0。

0~P0。

8051单片机看门狗原理C语言演示程序(以STC89C52RC单片机为例包含最简单的程序只有三条)

8051单片机看门狗原理C语言演示程序(以STC89C52RC单片机为例包含最简单的程序只有三条)

***************************************************************************/
#include <Reg52.H>
sfr WDT_CONTR=0xE1;
//定义特殊功能寄存器:STC 单片机看门狗控制寄存器
#define uchar unsigned char
//初始化时两盏灯都熄灭 LED=1; LED_busy=1;
TMOD=0x21; 为串行口波特率发生器
TH0=0x4C; TL0=0x00; IE=0x82; TR0=1;
//定时器 0 工作在方式 1,作为 16 位定时器;定时器 1 工作在方式 2,作
//定时器 0 装初值:每隔 50ms 溢出一次
#define true 1
#define false 0
#define WEIGOU WDT_CONTR=0x34
//看门狗启动设置和“喂狗”操作
sbit LED=P1^6; sbit LED_busy=P1^7;
//信号灯,系统正常工作就一闪一闪的 //工作灯,上电灭一会儿(约 800ms),然后正常工作的时
注解:这里顺便说一下,一般教材上叫“看门狗定时器”,其实定时器原理 还是计数器,只是计的是时钟周期,所以我为了初学者好理解叫统一叫“计数 器”,这里阐明一下。
明白了上面的原理,我们在设计程序时,先根据看门狗计数器的位数和系统 的时钟周期算一下计数器计满数需要的时间,就是说在这个时间内“看门狗”计 数器是丌会装满的,然后在这个时间内告诉它重新开始计数,就是把计数器清零,
由于现在 AT89S52 用的很广泛,所以我先说说 ATMEL 的看门狗;再说说本次试验用的 STC89C52RC 的看 门狗;注意两个不一样!!!

单片机看门狗的描述

单片机看门狗的描述

单片机看门狗的描述下面是关于STC89C5XX-51 单片机看门狗的描述WDT_CONTR 位置0xE1; [-] [-] [EN_WDT] [CLR_WDT] [IDLE_WDT] [PS2] [PS1] [PS0]EN_WDT: 看门狗允许位,置1 启动看门狗,看门狗不能自动启动,需要设置该位后启动,一旦启动不能关闭(只能系统重新上电和看门狗复位可以关闭)CLR_WDT: 看门狗计数器清零位,置1 清零看门狗计数器,当计数器开始重新计数,硬件清零该位。

IDLE_WDT: 单片机IDLE 模式看门狗允许位,当IDLE_WDT=1 时,单片机在IDLE 模式(空闲模式)依然启用看门狗PS2~PS0: 看门狗定时器预分频器,下表中Prescale 表示预分频数PS2 PS1 PS0 Prescale0 0 0 20 0 1 40 1 0 80 1 1 161 0 0 321 0 1 641 1 0 1281 1 1256看门狗溢出时间:(N*Prescale*32768)/晶振频率,其中N 表示指令周期数N=12 表示12 时钟周期模式;N=6 表示6 时钟周期模式。

如N=12,晶振频率为12MHz,PS2~PS0 为100 时,溢出时间=(12*32*32768)/12=1048576us,差不多是1s。

例如:给WDT_CONTR 写入0 乘以34,即是激活看门狗,同时预分频数设为32。

喂狗过程也是一样的。

顺便说一下ATMEL-51 单片机的看门狗下面是关于ATMEL-51 单片机看门狗的描述【看门狗计数器】(watchdog timer)是一个14 位的计数器,它以机器周期(晶振频率/12)增加,当计数值计满(16383/0 乘以3FFF)了就使单片机软复位;当启动了【看门狗计数器】之后,我们需要在它计数没有满之前复位计数器强制。

单片机看门狗(Watchdog)的工作原理及其应用

单片机看门狗(Watchdog)的工作原理及其应用

单片机看门狗(Watchdog)的工作原理及其应用2010年05月16日星期日 23:00在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。

程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。

所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。

看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。

这个时候,看门狗电路就会由于得不到单片机送来的信号。

便在它和单片机复位引脚相连的引脚上送出一个复位信号。

使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

看门狗,又叫 watchdog timer,是一个定时器电路。

一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。

如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。

看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。

所以,在使用有看门狗的芯片时要注意清看门狗。

STC89c52单片机 计算器C语言程序

STC89c52单片机 计算器C语言程序

STC89c52单片机计算器C语言程序STC89C52单片机计算器C语言程序下面是STC89C52单片机计算器的C语言程序,适用于P2位选P0段选时钟12MHZ。

程序代码如下:includedefine uchar unsigned chardefine uint unsigned intuchar Led[17] = {0x3f。

0x06.0x5b。

0x4f。

0x66.0x6d。

0x7d。

0x07.0x7f。

0x6f。

0x77.0x7c。

0x39.0x5e。

0x79.0x71.0x00};long float Number[]={0,0,0,0};uchar A[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};long int D[] = {0,0,0,0,0,0,0,0};uchar code C[] = {0x0.0xFE。

0xFD。

0xFB。

0xF7.0xEF。

0xDF。

0xBF。

0x7F};uchar k=16;uchar b;long float Out_put;uchar e=0;uchar g=0;uchar L=0;uchar g1=0;uchar g2=0;uchar g3=0;uchar g4=0;char j=-1;uchar m=0;uchar n=0;uchar x=0;程序中包含了头文件和宏定义,以及数码管段选、数码管显示位控制寄存器、数码管显示内容寄存器、数码管位选、按键控制变量等各种变量。

其中,Led数组存储了数码管的段选值,Number数组存储了数字,A数组存储了数码管的位选值,D数组存储了数码管的显示内容,C数组存储了数码管的位选值,k、b、Out_put、e、g、L、g1、g2、g3、g4、j、m、n、x 等变量用于按键控制和运算。

代码中没有明显的格式错误,可以直接使用。

下面是已经修改过的文章:uchar xo = 0./*控制开始计数小数点的变量*/long int result;void Delay(uint o) {uint i。

STC89C52RC单片机手册

STC89C52RC单片机手册

STC89C52单片机用户手册[键入作者姓名][选取日期]STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。

基于51单片机的看门狗程序

基于51单片机的看门狗程序
/*写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页*/
{
while((ReadReg()&0x01)==1); //the device is busy
CS=0;
WriteByte(WREN); //when write the wren , the cs must have a high level
CS=1;
CS=0;
if(bRegion==0)
{ WriteByte(WRITE0);} //write the page addr
else
{WriteByte(WRITE1);}
WriteByte(cAddress);
WriteByte(cData);
SCK=0; //
CS=1;
}
uchar ReadEpm(uchar cAddress,bit bRegion)
{
uchar ucLoop;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
if((ucData&0x80)==0) //the MSB send first
{SI=0;}
else
{SI=1;}
Hale Waihona Puke SCK=0;SCK=1;ucData<<=1;
}
}
uchar ReadReg() //read register
/*读入一个字节,cAddress为读入地址,bRegion为页*/
{
uchar cData;
while((ReadReg()&0x01)==1);//the device is busy

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍之迟辟智美创作STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择.主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用法式空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻.7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户法式,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位按时器/计数器.即按时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用按时器软件实现多个UART13.工作温度范围:40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式●失落电模式:典范功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原法式●空闲模式:典范功耗2mA●正常工作模式:典范功耗4Ma~7mA●失落电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口.作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入.在访问外部法式和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线.此时,P0口内部上拉电阻有效.在Flash ROM编程时,P0端口接收指令字节;而在校验法式时,则输出指令字节.验证时,要求外接上拉电阻.P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口.P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入.对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口.P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流().另外,P1.0和P1.1还可以作为按时器/计数器2的外部技术输入(P1.0/T2)和按时器/计数器2的触发输入(P1.1/T2EX),具体拜会下表:在对Flash ROM编程和法式校验时,P1接收低8位地址.引脚号功能特性T2(按时器/计数器2外部计数输入),时钟输出T2EX(按时器/计数器2捕捉/重装触发和方向控制)P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口.P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入.对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口.P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流().在访问外部法式存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址.在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变.在对Flash ROM编程和法式校验期间,P2也接收高位地址和一些控制信号.P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口.P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入.对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口.P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流().在对Flash ROM编程或法式校验时,P3还接收一些控制信号.P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:表XX P3口引脚复用功能引脚号复用功能RXD(串行输入口)TXD(串行输出口)(外部中断0)(外部中断1)T0(按时器0的外部输入)T1(按时器1的外部输入)(外部数据存储器写选通)(外部数据存储器读选通)RST(9引脚):复位输入.当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化把持.看门狗计时完成后,RST引脚输出96个晶振周期的高电平.特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效.DISRTO默认状态下,复位高电平有效.ALE/(30引脚):地址锁存控制信号(ALE)是访问外部法式存储器时,锁存低8位地址的输出脉冲.在Flash 编程时,此引脚()也用作编程输入脉冲.在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部按时器或时钟使用.然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过.如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE把持将无效.这一位置“1”,ALE仅在执行MOVX或MOV指令时有效.否则,ALE将被微弱拉高.这个ALE使能标识表记标帜位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效.(29引脚):外部法式存储器选通信号()是外部法式存储器选通信号.当AT89C51RC从外部法式存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活./VPP(31引脚):访问外部法式存储器控制信号.为使能从0000H到FFFFH的外部法式存储器读取指令,必需接GND.注意加密方式1时,将内部锁定位RESET.为了执行内部法式指令,应该接VCC.在Flash编程期间,也接收12伏VPP电压.XTAL1(19引脚):振荡器反相放年夜器和内部时钟发生电路的输入端.XTAL2(18引脚):振荡器反相放年夜器的输入端.特殊功能寄存器在STC89C52RC片内存储器中,80H~FFH共128个单位位特殊功能寄存器(SFR),SFR的地址空间如下表1所示.其实不是所有的地址都被界说,从80H~FFH共128个字节只有一部份被界说.还有相当一部份没有界说.对没有界说的单位读写将是无效的,读出的数值将不确定,而写入的数据也将丧失.不应将“1”写入未界说的单位,由于这些单位在将来的产物中可能赋予新的功能,在这种情况下,复位后这些单位数值总是“0”.STC89C52RC除有按时器/计数器0和按时器/计数器1之外,还增加了一个一个按时器/计数器 2.按时器/计数器2的控制和状态位位于T2CON(见表2)和T2MOD(见表4).按时器2是一个16位按时/计数器.通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为按时器或计数器(特殊功能寄存器T2CON的描述如表2所列).按时器2有3种把持模式:捕捉、自动重新装载(递增或递加计数)和波特率发生器,这3种模式由T2CON中的位进行选择(如表2所列)表1 STC89C52RC的特殊功能寄存器表2 特殊功能寄存器T2CON的描述表3 按时/计数器2控制寄存器各位功能说明载.EXEN2=0时,T2EX真个外部信号无效.TR2按时器2启动/停止控制位.TR2=1时,启动按时器2.C/按时器2按时方式或计数方式控制位.C/=0时,选择按时方式,C/=1时,选择对外部事件技术方式(下降沿触发).CP/捕捉/重装载选择.CP/=1时,如EXEN2=1,且T2EX端呈现负跳变脉冲时发生捕捉把持.CP/=1时,若按时器2溢出或EXEN2=1条件下,T2EX端呈现负跳变脉冲,城市呈现自动重装载把持.当RCLK=1或TCLK=1时,该位无效,在按时器2溢出时强制其自动重装载.表4 按时器2工作方式RCLK+TCLK CP/TR2模式00116位自动重装01116位捕捉1X1波特率发生器X X0(关闭)1、捕捉模式在捕捉模式中,通过T2CON中的EXEN2设置2个选项.如果EXEN2=0, 按时器2作为一个16位按时器或计数器(由T2CON中的C/位选择),溢出时置位TF2(按时器2溢出标识表记标帜位).该位可用于发生中断(通过使能IE寄存器中的按时器2中断使能位).如果EXEN2=1,与以上描述相同,但增加了一个特性,即外部输入T2EX由1变0时,将按时器2中TL2和TH2的以后值各自捕捉到RCAP2L和RACP2H.另外,T2EX的负跳变使T2CON中的EXF2置位,EXF2也像TF2一样能够发生中断(其向量与按时器2溢出中断地址相同,按时器2中断服务法式通过查询TF2和EXF2来确定引起中断的事件),捕捉模式如图X所示.在该模式中,TL2和TH2勿重新装载值,甚至当T2EX发生捕捉时间时,计数器仍以T2EX的负跳变或振荡频率的1/2(12时钟模式)或1/6(6时钟模式)计数.图XX 按时器2捕捉模式2、自动重装模式(递增/递加计数器)16位自动重装模式中,按时器2可通过C/T2配置为按时器/计数器,编程控制递增/递加.计数的方向有DCEN(递加计数使能位)确定,DCEN位于T2MMOD寄存器中,T2MOD寄存器各位的功能描述如表XX所示.当DCEN=0时,按时器2默认为向上计数;当DCEN=1时,按时器2可通过T2EX确定递增或递加计数.图XX显示了当DCEN=0时,按时器2自动递增计数.在该模式中,通过设置EXEN2位进行选择.如果EXEN2=0,按时器2递增计数到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L和RCAP2H中的16位值作为重新装载值装入按时器2.RCAP2L和RCAP2H的值是通过软件预设的.表5 按时器2模式(T2MOD)控制寄存器的描述*用户勿将其置1.这些为在将来80C51系列产物中用来实现新的特性.在这种情况下,以后用到保管位,复位时或非有效状态时,它的值应为0;而在这些位有效状态时,它的值为1.保管位读到的值不确定.如果EXEN2=1,16位重新装载可通过溢出或T2EX从1到0的负跳变实现.此负跳变同时将EXF2置位.如果按时器2中断被使能,则当TF2或EXF2置1时,按时器2递增计数,计数到0FFFFH后溢出并置位TF2,还将发生中断(如果中断被使能).按时器2的溢出将使RCAP2L和RCAP2H中的16位值作为重新装载值放入TL2和TH2.当T2EX置零时,将使按时器2递加计数.当TL2和TH2计数到即是RCAP2L和RCAP2H时,按时器发生中断.图XX 按时器2自动重装模式(DCEN=0)3、波特率发生器模式式中:n=16(6时钟模式)或32(12时钟模式);是的内容,为16位勿符号整数.如图XX(上面)所示,按时器2是作为波特率发生器,仅当寄存器T2CON中的RCLK和(或)TCLK=1时,按时器2作为波特率发生器才有效.注意:TH2溢出其实不置位TF2,也不发生中断.这样当按时器作为波特率发生器时,按时器2中断不用禁止.如果EXEN2(T2外部使能标识表记标帜)被置位,在T2EX中由1到0的转换会置位EXF2(T2外部标识表记标帜位),但其实不招致(TH2,TL2)重新装载().当按时器2用作波特率发生器时,如果需要,T2EX可用作附加的外部中断.当计时器工作在波特率发生器模式下,则不要对TH2和TL2进行读/写,每隔一个状态时间()或由T2进入的异步信号,按时器2将加1.在此情况下对TH2和TL2进行读/写是禁绝确的;可对RCAP2寄存器进行读,但不要进行写,否则将招致自动重装毛病.当对按时器2或寄存器RCAP进行访问时.应关闭按时器(清零TR2).表XX列出了经常使用的波特率和如何用按时器2获得这些波特率.表XX 由按时器2发生的经常使用波特率看门狗应用STC89C52RC单片机看门狗按时器特殊功能寄存器符号功能EN_WDT看门狗允许位,当设置为“1”,看门狗启动CLR_WDT看门狗清“0”位,当设为“1”时,看门狗将重新计数.硬件将自动清“0” 此位IDLE_WDT看门狗“IDLE”模式位,当设置为“1”时,看门狗按时器在“空闲模式”计数;当清“0”该位时,看门狗在“空闲模式”时不计数PS2,看门狗按时器预分频值,分歧值对应预分频数如表XX所示PS1,PS0表XX 20MHz晶振看门狗按时器预分频值PS2PS1PS0预分频看门狗溢出时间0002ms001478.6 ms0108157.3 ms01116314.6 ms10032629.1 ms101641101281112565s看门狗溢出时间与预分频值有直接的关系,公式如下:式中,N暗示STC单片机的时钟模式.STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在该模式下,STC单片机与其他公司51系列单片机具有相同的机器周期,即12个振荡周期为一个机器周期;另一种是双倍速,又称6时钟模式,在该模式下,STC单片机比其他公司的51单片机运行速度快一倍.。

单片机汇编语言实现看门狗

单片机汇编语言实现看门狗

CS=0; if(bRegion==0) //write the page addr else WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress 为读入地址,bRegion 为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) else WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; } main() { WriteReg(0x00);//set the watchdog time as 1.4s CS=1; CS=0; } //reset the watchdog
SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData 为写入的数,cAddress 为写入地址,bRegion 为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; //write register //read register

看门狗电路基本原理及屏蔽方法

看门狗电路基本原理及屏蔽方法

看门狗电路基本原理及屏蔽⽅法⼀、定义 看门狗,⼜叫watchdog timer,是⼀个定时器电路,⼀般有⼀个输⼊,叫喂狗(kicking the dog/service the dog),⼀个输出到MCU的RST端,MCU正常⼯作的时候,每隔⼀段时间输出⼀个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(⼀般在程序跑飞时),WDT定时超过,就会给出⼀个复位信号到MCU,使MCU复位。

防⽌MCU死机. 看门狗的作⽤就是防⽌程序发⽣死循环,或者说程序跑飞。

⼆、基本原理: 看门狗是⼀种监控系统的运⾏状况的⼿段,通过软硬件结合的⽅式实现对系统运⾏状况的监控。

稳定运⾏的软件会在执⾏完特定指令后进⾏喂狗,若在⼀定周期内看门狗没有收到来⾃软件的喂狗信号,则认为系统故障,会进⼊中断处理程序或强制系统复位。

系统上电后根据不同的⼯作模式可以选择使能看门狗的时机,若看门狗被使能则计数器开始计数,如果在设定的时间内没有及时喂狗则会发⽣看门狗超时。

看门狗主要由寄存器、计数器和狗叫模块构成:通过寄存器对看门狗进⾏基本设置,计数器计算狗叫时间,狗叫模块决定看门狗超时后发出的中断或复位⽅式。

三、分类:3.1硬件看门狗: 硬件看门狗是利⽤了⼀个定时器,来监控主程序的运⾏,也就是说在主程序的运⾏过程中,我们要在定时时间到之前对定时器进⾏复位。

如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单⽚机复位。

常⽤的WDT芯⽚如MAX813,5045,IMP 813等。

3.2软件看门狗: ⽽在某些情况下,也会采⽤纯软件的⽅法来设置看门狗,如在单⽚机系统中,利⽤闲置的定时器/计数器就可以设计⼀个软件看门狗。

具体实现步骤如下: ⾸先,在初始化程序中设置定时器/计数器的⽅式以控制寄存器(TMOD)和定时时间的初值,并且打开中断。

然后,根据定时器的时间,在主程序中按⼀定的时间间隔插⼈复位定时器的指令(喂狗),两条喂狗指令之间的时间间隔可以根据系统时钟与指令周期计算出来,⽽且该时间周期应该⼩于定时器的定时时间。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完整兼容传统8051单片机,12时钟/机械周期和6时钟/机械周期可以随意率性选择.重要特征如下:1.加强型8051单片机,6时钟/机械周期和12时钟/机械周期可以随意率性选择,指令代码完整兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率规模:0~40MHz,相当于通俗8051的0~80MHz,现实工作频率可达48MHz4.用户运用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩大用时,不必加上拉电阻,作为I/O口用时,需加上拉电阻.7.ISP(在体系可编程)/IAP(在运用可编程),无需专用编程器,无需专用仿真器,可经由过程串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功效9.具有看门狗功效10.共3个16位准时器/计数器.即准时器T0.T1.T211.外部中止4路,降低沿中止或低电平触发电路,PowerDown模式可由外部中止低电平触发中止方法叫醒12.通用异步串行口(UART),还可用准时器软件实现多个UART13.工作温度规模:40~+85℃(工业级)/0~75℃(贸易级)14.PDIP封装STC89C52RC单片机的工作模式●掉落电模式:典范功耗<0.1μA,可由外部中止叫醒,中止返回后,持续履行原程序●余暇模式:典范功耗2mA●正常工作模式:典范功耗4Ma~7mA●掉落电模式可由外部中止叫醒,实用于水表.气表等电池供电体系及便携装备STC89C52RC引脚图STC89C52RC引脚功效解释VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口.作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入.在拜访外部程序和数据存储器时,P0口也可以供给低8位地址和8位数据的复用总线.此时,P0口内部上拉电阻有用.在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节.验证时,请求外接上拉电阻.P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口.P1的输出缓冲器可驱动(接收或者输出电流方法)4个TTL输入.对端口写入1时,经由过程内部的上拉电阻把端口拉到高电位,这是可用作输进口.P1口作输进口运用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流().此外,P1.0和P1.1还可以作为准时器/计数器2的外部技巧输入(P1.0/T2)和准时器/计数器2的触发输入(P1.1/T2EX),具体拜见下表:在对Flash ROM编程和程序校验时,P1接收低8位地址.引脚号功效特征T2(准时器/计数器2外部计数输入),时钟输出T2EX(准时器/计数器2捕获/重装触发和偏向掌握)P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口.P2的输出缓冲器可以驱动(接收或输出电流方法)4个TTL输入.对端口写入1时,经由过程内部的上拉电阻把端口拉到高电平,这时可用作输进口.P2作为输进口运用时,因为有内部的上拉电阻,那些被外部旌旗灯号拉低的引脚会输出一个电流().在拜访外部程序存储器和16位地址的外部数据存储器(如履行“MOVX @DPTR”指令)时,P2送出高8位地址.在拜访8位地址的外部数据存储器(如履行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用存放器(SFR)区中的P2存放器的内容),在全部拜访时代不会转变.在对Flash ROM编程和程序校验时代,P2也接收高位地址和一些掌握旌旗灯号.P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口.P3的输出缓冲器可驱动(接收或输出电流方法)4个TTL输入.对端口写入1时,经由过程内部的上拉电阻把端口拉到高电位,这时可用作输进口.P3做输进口运用时,因为有内部的上拉电阻,那些被外部旌旗灯号拉低的引脚会输入一个电流().在对Flash ROM编程或程序校验时,P3还接收一些掌握旌旗灯号.P3口除作为一般I/O口外,还有其他一些复用功效,如下表所示:表XX P3口引脚复用功效引脚号复用功效RXD(串行输进口)TXD(串行输出口)(外部中止0)(外部中止1)T0(准时器0的外部输入)T1(准时器1的外部输入)(外部数据存储器写选通)(外部数据存储器读选通)RST(9引脚):复位输入.当输入持续两个机械周期以上高电日常平凡为有用,用来完成单片机单片机的复位初始化操纵.看门狗计时完成后,RST引脚输出96个晶振周期的高电平.特别存放器AUXR(地址8EH)上的DISRTO位可以使此功效无效.DISRTO默认状况下,复位高电平有用.ALE/(30引脚):地址锁存掌握旌旗灯号(ALE)是拜访外部程序存储器时,锁存低8位地址的输出脉冲.在Flash编程时,此引脚()也用作编程输入脉冲.在一般情形下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部准时器或时钟运用.然而,特别强调,在每次拜访外部数据存储器时,ALE脉冲将会跳过.假如须要,经由过程将地址位8EH的SFR的第0地位“1”,ALE操纵将无效.这一地位“1”,ALE仅在履行MOVX或MOV 指令时有用.不然,ALE将被微弱拉高.这个ALE使能标记位(地址位8EH的SFR的第0位)的设置对微掌握器处于外部履行模式下无效.(29引脚):外部程序存储器选通讯号()是外部程序存储器选通讯号.当AT89C51RC从外部程序存储器履行外部代码时,在每个机械周期被激活两次,而拜访外部数据存储器时,将不被激活./VPP(31引脚):拜访外部程序存储器掌握旌旗灯号.为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND.留意加密方法1时,将内部锁定位RESET.为了履行内部程序指令,应当接VCC.在Flash编程时代,也接收12伏VPP电压.XTAL1(19引脚):振荡器反相放大器和内部时钟产生电路的输入端.XTAL2(18引脚):振荡器反相放大器的输入端.特别功效存放器在STC89C52RC片内存储器中,80H~FFH共128个单元位特别功效存放器(SFR),SFR的地址空间如下表1所示.并不是所有的地址都被界说,从80H~FFH共128个字节只有一部分被界说.还有相当一部分没有界说.对没有界说的单元读写将是无效的,读出的数值将不肯定,而写入的数据也将丧掉.不该将“1”写入未界说的单元,因为这些单元在未来的产品中可能付与新的功效,在这种情形下,复位后这些单元数值老是“0”.STC89C52RC除了有准时器/计数器0和准时器/计数器1之外,还增长了一个一个准时器/计数器2.准时器/计数器2的掌握和状况位位于T2CON(见表2)和T2MOD(见表4).准时器2是一个16位准时/计数器.经由过程设置特别功效存放器T2CON中的C/T2位,可将其作为准时器或计数器(特别功效存放器T2CON的描写如表2所列).准时器2有3种操纵模式:捕获.主动从新装载(递增或递减计数)和波特率产生器,这3种模式由T2CON中的位进行选择(如表2所列)表1 STC89C52RC的特别功效存放器表2 特别功效存放器T2CON的描写表3 准时/计数器2掌握存放器列位功效解释符号功效TF2准时器2溢出标记.准时器2溢出时,又由硬件置位,必须由软件请0.当RCLK=1或TCLK=1时,准时器2溢出,不合错误TF2置位.EXF2准时器2外部标记.当EXEN2=1,且当T2EX引脚上消失负跳变而消失捕获或重装载时,EXF2置位,申请中止.此时假如许可准时器2中止,CPU将响应中止,履行准时器2 中止办事程序,EXF2必须由软件消除.当准时器2工作在向上或向下计数方法时(DCEN=1),EXF2不克不及激活中止.RCLK接收时钟许可.RCLK=1时,用准时器2溢出脉冲作为串口(工作于工作方法1或3时)的接收时钟,RCLK=0,用准时器1的溢出脉冲作为接收脉冲TCLK发送时钟许可.TCLK=1时,用准时器2溢出脉冲作为串口(工作于工作方法1或3时)的发送时钟,TCLK=0,用准时器1的溢出脉冲作为发送脉冲EXEN2准时器2外部许可标记.当EXEN2=1时,假如准时器2未用于作串行口的波特率产生器,在T2EX端口消失负跳变脉冲时,激活准时器2捕获或者重装载.EXEN2=0时,T2EX端的外部旌旗灯号无效.TR2准时器2启动/停滞掌握位.TR2=1时,启动准时器2.C/准时器2准时方法或计数方法掌握位.C/=0时,选择准时方法,C/=1时,选择对外部事宜技巧方法(降低沿触发).CP/捕获/重装载选择.CP/=1时,如EXEN2=1,且T2EX端消失负跳变脉冲时产生捕获操纵.CP/=1时,若准时器2溢出或EXEN2=1前提下,T2EX端消失负跳变脉冲,都邑消失主动重装载操纵.当RCLK=1或TCLK=1时,该位无效,在准时器2溢出时强迫其主动重装载.表4 准时器2工作方法RCLK+TCLK CP/TR2模式00116位主动重装01116位捕获1X1波特率产生器X X0(封闭)1、捕获模式在捕获模式中,经由过程T2CON中的EXEN2设置2个选项.假如EXEN2=0, 准时器2作为一个16位准时器或计数器(由T2CON中的C/位选择),溢出时置位TF2(准时器2溢出标记位).该位可用于产生中止(经由过程使能IE存放器中的准时器2中止使能位).假如EXEN2=1,与以上描写雷同,但增长了一个特征,即外部输入T2EX由1变0时,将准时器2中TL2和TH2的当前值各自捕获到RCAP2L和RACP2H.别的,T2EX的负跳变使T2CON中的EXF2置位,EXF2也像TF2一样可以或许产生中止(其向量与准时器2溢出中止地址雷同,准时器2中止办事程序经由过程查询TF2和EXF2来肯定引起中止的事宜),捕获模式如图X所示.在该模式中,TL2和TH2勿从新装载值,甚至当T2EX产生捕获时光时,计数器仍以T2EX的负跳变或振荡频率的1/2(12时钟模式)或1/6(6时钟模式)计数.图XX 准时器2捕获模式2、主动重装模式(递增/递减计数器)16位主动重装模式中,准时器2可经由过程C/T2设置装备摆设为准时器/计数器,编程掌握递增/递减.计数的偏向有DCEN(递减计数使能位)肯定,DCEN位于T2MMOD存放器中,T2MOD存放器列位的功效描写如表XX所示.当DCEN=0时,准时器2默以为向上计数;当DCEN=1时,准时器2可经由过程T2EX肯定递增或递减计数.图XX显示了当DCEN=0时,准时器2主动递增计数.在该模式中,经由过程设置EXEN2位进行选择.假如EXEN2=0,准时器2递增计数到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L和RCAP2H中的16位值作为从新装载值装入准时器2.RCAP2L和RCAP2H的值是经由过程软件预设的.表5 准时器2模式(T2MOD)掌握存放器的描写*用户勿将其置 1.这些为在未来80C51系列产品顶用来实现新的特征.在这种情形下,今后用到保存位,复位时或非有用状况时,它的值应为0;而在这些位有用状况时,它的值为 1.保存位读到的值不肯定.假如EXEN2=1,16位从新装载可经由过程溢出或T2EX从1到0的负跳变实现.此负跳变同时将EXF2置位.假如准时器2中止被使能,则当TF2或EXF2置1时,准时器2递增计数,计数到0FFFFH 后溢出并置位TF2,还将产生中止(假如中止被使能).准时器2的溢出将使RCAP2L和RCAP2H中的16位值作为从新装载值放入TL2和TH2.当T2EX置零时,将使准时器2递减计数.当TL2和TH2计数到等于RCAP2L和RCAP2H时,准时器产生中止.图XX 准时器2主动重装模式(DCEN=0)3、波特率产生器模式式中:n=16(6时钟模式)或32(12时钟模式);是的内容,为16位勿符号整数.如图XX(上面)所示,准时器2是作为波特率产生器,仅当存放器T2CON中的RCLK和(或)TCLK=1时,准时器2作为波特率产生器才有用.留意:TH2溢出其实不置位TF2,也不产生中止.如许当准时器作为波特率产生器时,准时器2中止不必制止.假如EXEN2(T2外部使能标记)被置位,在T2EX中由1到0的转换会置位EXF2(T2外部标记位),但其实不导致(TH2,TL2)从新装载().当准时器2用作波特率产生器时,假如须要,T2EX可用作附加的外部中止.当计时器工作在波特率产生器模式下,则不要对TH2和TL2进行读/写,每隔一个状况时光()或由T2进入的异步旌旗灯号,准时器2将加1.在此情形下对TH2和TL2进行读/写是不准确的;可对RCAP2存放器进行读,但不要进行写,不然将导致主动重装错误.当对准时器2或存放器RCAP进行拜访时.应封闭准时器(清零TR2).表XX列出了经常运用的波特率和若何用准时器2得到这些波特率.表XX 由准时器2产生的经常运用波特率看门狗运用STC89C52RC单片机看门狗准时器特别功效存放器表XX 20MHz晶振看门狗准时器预分频值看门狗溢出时光与预分频值有直接的关系,公式如下:式中,N暗示STC单片机的时钟模式.STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在该模式下,STC单片机与其他公司51系列单片机具有雷同的机械周期,即12个振荡周期为一个机械周期;另一种是双倍速,又称6时钟模式,在该模式下,STC 单片机比其他公司的51单片机运行速度快一倍.。

STC89C52RC单片机用户手册

STC89C52RC单片机用户手册

STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。

即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序空闲模式:典型功耗2mA正常工作模式:典型功耗4Ma~7mA掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。

第八章 单片机8051内部资源C语言编程

第八章 单片机8051内部资源C语言编程

第八章 8051内部资源C语言编程一、I/O口编程例1:用按键控制发光二极管。

并口是用的最多的资源,下面以P1口为例,见电路图,P1口低4位接了4个按钮,高4位接了4个指示灯,要求按下相应的按钮,对应的指示灯亮。

P10对应P14,依次类推。

指示灯是端口输出高电平亮。

源程序如下:#include<at89x51.h>void main(){unsigned char data x,i;while(1){P1=P1|0x0f; //给低4位置1,高4位不变x=P1&0x0f; //读低4位x=~x; //低4位取反P1=x<<4; //左移4位for(i=0;i<255;i++); //延时}}(端口编程)注意上面几种常见的用法。

二、中断的C语言编程C51编译器支持在C源程序中直接开发中断程序。

前面已经讲过,中断服务程序是通过按规定语法格式定义的一个函数。

(中断有关内容)Array中断服务程序的函数定义的语法格式如下:Void 函数名(void) interrupt m [using n] { 中断程序代码;}m为MCS-51中断源编号,见表using n 选项用于实现工作寄存器组的切换,n是中断服务子程序中选用的工作寄存器组号(0- 3)。

例2:设AT89C52 的时钟频率为12MHz,利用定时中断在其P1.0 引脚输出周期为4ms,占空比为1:1的方波。

确定定时器工作方式和计算定时器初值。

选用定时器T0工作方式1,每个机器周期为1μs,翻转一次电平需要2ms,则计数次数n=2000/1=2000,初值x=65536-2000=63536=F830H参考程序如下:#include<REG52.h>sbit P10 = P1^0;//定义位void clock_initial() reentrant using 0//在中断中调用,定义为重入函数{TR0=0;TH0=0XF8;//装载计数初值TL0=0X30;TR0=1;}main( ){TMOD = 0x01; //定时器T0方式1 工作P10 = 0; //初始值为低电平TF0=0;//清除中断标志位clock_initial();ET0=1;EA=1;do{ } while(1); //死循环,等价于汇编语言的SJMP $}void clk_int ( void ) interrupt 1 using 0{P10= !P10;//逻辑变量clock_initial();}(延时中断)例3:图示是利用优先权解码芯片74LS148,在单片机8031的一个外部中断INT1上扩展多个中断源的原理电路图。

stc89c52单片机技术资料

stc89c52单片机技术资料

stc89c52单片机技术资料STC89C52RC单片机是一款由XXX推出的新一代高速、低功耗、超强抗干扰单片机。

该单片机的指令代码完全兼容传统的8051单片机,同时12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性包括:增强型8051单片机,指令代码完全兼容传统8051,6时钟/机器周期和12时钟/机器周期可以任意选择。

工作电压范围为5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围为~40MHz,实际工作频率可达48MHz。

用户应用程序空间为8K字节,片上集成512字节RAM,通用I/O口有32个。

具有ISP(在系统可编程)/IAP(在应用可编程)功能,无需专用编程器和仿真器,可通过串口直接下载用户程序。

具有EEPROM功能和看门狗功能,共3个16位定时器/计数器,外部中断4路。

通用异步串行口(UART),还可用定时器软件实现多个UART。

工作温度范围为-40~+85℃(工业级)/0~75℃(商业级),PDIP封装。

STC89C52RC单片机的工作模式包括掉电模式、空闲模式和正常工作模式。

其中,掉电模式的典型功耗小于0.1μA,可由外部中断唤醒,中断返回后继续执行原程序。

空闲模式的典型功耗为2mA,正常工作模式的典型功耗为4Ma~7mA。

掉电模式适用于水表、气表等电池供电系统和便携设备。

STC89C52RC单片机引脚图如下所示,其中VCC为电源电压,VSS为接地,P0端口为一个漏极开路的8位双向I/O 口,可作为输出端口和复用总线。

在Flash ROM编程时,P0端口接收指令字节。

除了定时器/计数器和定时器/计数器1,STC89C52RC还新增了定时器/计数器2.定时器/计数器2的控制和状态位位于T2CON表格中。

定时器2是一个16位定时/计数器,可以通过特殊功能寄存器T2CON中的C/T2位设置为定时器或计数器。

定时器2有三种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这三种模式由T2CON中的位进行选择。

STC89C52RC单片机存储以及引脚应用和定时器2及看门狗定时

STC89C52RC单片机存储以及引脚应用和定时器2及看门狗定时

表 4 定时器 2 工作方式
RCLK+TCLK 0 0 1 X 1、捕获模式Βιβλιοθήκη CP/RL2 0 1 X X
TR2 1 1 1 0
模式 16 位自动重装 16 位捕获 波特率发生器 (关闭)
在捕获模式中,通过 T2CON 中的 EXEN2 设置 2 个选项。如果 EXEN2=0, 定时 器 2 作为一个 16 位定时器或计数器(由 T2CON 中的 C/������2位选择) ,溢出时置位 TF2(定时器 2 溢出标志位) 。该位可用于产生中断(通过使能 IE 寄存器中的定 时器 2 中断使能位) 。如果 EXEN2=1,与以上描述相同,但增加了一个特性,即 外部输入 T2EX 由 1 变 0 时, 将定时器 2 中 TL2 和 TH2 的当前值各自捕获到 RCAP2L 和 RACP2H。另外,T2EX 的负跳变使 T2CON 中的 EXF2 置位,EXF2 也像 TF2 一样 能够产生中断 (其向量与定时器 2 溢出中断地址相同,定时器 2 中断服务程序通 过查询 TF2 和 EXF2 来确定引起中断的事件) , 捕获模式如图 X 所示。 在该模式中, TL2 和 TH2 勿重新装载值,甚至当 T2EX 产生捕获时间时,计数器仍以 T2EX 的负 跳变或振荡频率的 1/2(12 时钟模式)或 1/6(6 时钟模式)计数。
定时器 2 是一个 16 位定时/计数器。通过设置特殊功能寄存器 T2CON 中的 C/T2 位,可将其作为定时器或计数器(特殊功能寄存器 T2CON 的描述如表 2 所 列) 。定时器 2 有 3 种操作模式:捕获、自动重新装载(递增或递减计数)和波 特率发生器,这 3 种模式由 T2CON 中的位进行选择(如表 2 所列) 表1 STC89C52RC 的特殊功能寄存器

51单片机 c语言看门狗程序怎么写

51单片机 c语言看门狗程序怎么写

51单片机c语言看门狗程序怎么写看门狗在51单片机电路里的作用是防止程序“跑飞”、“死机”后,系统不动作,而采取复位的办法“唤醒”系统。

89S51、89S52系列单片机自带有看门狗功能,片内数据区A6H寄存器具有看门狗功能,使用很简单:#include<reg51.h>...sfr WDTRST = 0xA6;...void main(){WDTRST=0x1E;;//初始化看门狗WDTRST=0xE1;//初始化看门狗for(;;){WDTRST=0x1E;;//喂狗指令WDTRST=0xE1;//喂狗指令}}可见,你只要在程序的大循环体内加一条喂狗指令就行。

但这种看门狗功能有限,不是很可靠的,它依靠晶振工作,一旦晶振不起振,就无效了。

实践中多采用外部看门狗的方法,可以选用的芯片很多:MAX708、MAX813、X25045.....具体编程就要看芯片的参考资料了。

例如:X25045是SPI总线的看门狗芯片,复位端和单片机复位端连接,SPI数据输入你可以选择合适的IO接口。

WREN 0x06 设置写允许位WRDI 0x04 复位写允许位RDSR 0x05 读状态寄存器WRSR 0x01 写状态寄存器READ 0x03/0x0b 读操作时内部EEPROM页地址WRITE 0x02/0x0a 写操作时内部EEPROM页地址#include <reg51.h>sbit CS= P2^7;sbit SO= P2^6;sbit SCK= P2^5;sbit SI= P2^4;#define WREN 0x06 //#define WRDI 0x04 //#define RDSR 0x05 //#define WRSR 0x01 //#define READ0 0x03 //#define READ1 0x0b //#define WRITE0 0x02 //#define WRITE1 0x0a //#define uchar unsigned charuchar ReadByte() //read a byte from device{bit bData;uchar ucLoop;uchar ucData;for(ucLoop=0;ucLoop<8;ucLoop++){SCK=1;SCK=0;bData=SO;ucData<<=1;if(bData){ ucData|=0x01; }}return ucData;}void WriteByte(uchar ucData)//write a byte to device {uchar ucLoop;for(ucLoop=0;ucLoop<8;ucLoop++){if((ucData&0x80)==0) //the MSB send first{SI=0;}else{SI=1;}SCK=0;SCK=1;ucData<<=1;}}uchar ReadReg() //read register{uchar ucData;CS=0;WriteByte(RDSR);CS=1;return ucData;}uchar WriteReg(uchar ucData) //write register{uchar ucTemp;ucTemp=ReadReg();if((ucTemp&0x01)==1) //the device is busyreturn 0;CS=0;WriteByte(WREN);//when write the WREN, the cs must have a high levelCS=1;CS=0;WriteByte(WRSR);WriteByte(ucData);CS=1;return 1;}void WriteEpm(uchar cData,uchar cAddress,bit bRegion)/* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页*/ {while((ReadReg()&0x01)==1); //the device is busyCS=0;WriteByte(WREN); //when write the wren , the cs must have a high levelCS=1;CS=0;if(bRegion==0){ WriteByte(WRITE0);} //write the page addrelse{WriteByte(WRITE1);}WriteByte(cAddress);WriteByte(cData);SCK=0; //CS=1;}uchar ReadEpm(uchar cAddress,bit bRegion)/* 读入一个字节,cAddress为读入地址,bRegion为页*/{uchar cData;while((ReadReg()&0x01)==1);//the device is busyCS=0;if(bRegion==0)else{WriteByte(READ1);}WriteByte(cAddress);cData=ReadByte();CS=1;return cData;}main(){WriteReg(0x00);//set the watchdog time as 1.4sCS=1;CS=0; //reset the watchdog}回复:xuzhimin9514所有的89S系列都带狗,所有的80C系列都不带狗。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注解:这里顺便说一下,一般教材上叫“看门狗定时器”,其实定时器原理 还是计数器,只是计的是时钟周期,所以我为了初学者好理解叫统一叫“计数 器”,这里阐明一下。
明白了上面的原理,我们在设计程序时,先根据看门狗计数器的位数和系统 的时钟周期算一下计数器计满数需要的时间,就是说在这个时间内“看门狗”计 数器是丌会装满的,然后在这个时间内告诉它重新开始计数,就是把计数器清零,
当计数值计满(16383/0x3FFF)了就使单片机软复位; 当启动了【看门狗计数器】之后,我们需要在它计数没有满之前复位计数器强制它不能够溢出,这个
过程称作喂狗。
"看门狗"原理: 1. 系统上电并不启动看门狗计数器,通过设置【看门狗重置寄存器(WDTRST SFR)】启动【看门狗计 数器】,一般设置是给 WDTRST 写入 0x1E 和 0xE1 启动; 2. 【看门狗计数器】一旦启动不可停止,除非是硬件 RST 或者看门狗的软复位才能使其停止; 3. 设计程序在适当的时间喂狗一次,使其不能计满,程序就能不间断执行; 4. 如果程序中出现死循环或者执行某一步超时,看门狗计数器就会计满溢出,(这个时候我们认为程 序没有按照预定计划执行--程序跑飞),则复位系统。
看门狗定时器预分频器,下表中 Prescale 表示预分频数
PS2 PS1 PS0 Prescale
0
0
0
2
0
0
1
4
0
1
0
8
0
1
1
16
1
0
0
32
1
0
1
64
1
1
0
128
1
1
1
256
看门狗溢出时间:(N*Prescale*32768)/晶振频率,其中 N 表示指令周期数 N=12 表示 12 时钟周 期模式;N=6 表示 6 时钟周期模式
~3~
下面我就以 STC89C52RC 单片机为例说说典型的 51 单片机的看门狗程序如 何写,关于 STC89C52RC 单片机的“看门狗”定义请看 STC89C51RC-RD 单片机使 用说明。以下程序在 Keil 2 和 Keil 3 下调时通过,下载在本校的实验板上达到预 期效果。STC89C52RC/54RD+/58RD+/516RD+单片机上测试正常运行。
Prescale 是预分频数,通过设置【看门狗控制寄存器】可以设置为 2、4、 8、16、32、64、128、256;
晶振频率就是系统选用的晶振。 所以如果同样选择 12MHz 晶振,使用传统的 12 时钟周期,它最小的溢出时 间是 (12*2*32768 ) /(12*106)=65.536ms , 最大 溢出时间是 (12*256*32768 ) /(12*106)≈8.38s。如果选择 256 分频,也就是说只要在 8.38 秒之内喂一次狗就可 以了。戏谑的说:这只狗比较抗饿,~~ 对于我们用户来说,看门狗的时间是越长越好,这样可以节省更多的单片机 资源,尤其是对时间要求精准的系统,如果执行过程中我们丌停地“喂狗”,那 么是比较浪费时间的。所以 STC89C5X 系列单片机的看门狗更有优势一些。当 然这个也是个人的选择,如果对时间要求的丌苛刻的话,勤喂几次狗也没关系。
每种单片机的“看门狗”实现方法丌尽相同,但是原理都一样,而且“看门 狗”都是启动了之后就丌能被关闭,只能系统复位(重新断电在上电)才能关闭。 设置“看门狗”的一般步骤如下:
1. 设置“看门狗”相关寄存器, 启动“看门狗”; 2. 隔一段时间清零一次,“喂狗”; 3. 如果程序正常,一直运行;如果程序出错,没有按时“喂狗”,“看门狗”就 在溢出的时候复位系统。
上电会通过串行口发送一次“I love MCU!”字符串,通过串口调试助手可 以查看;
同时信号灯每隔 1.5s 闪一下; 工作指示灯在上电约 800ms 会点亮,只要系统正常运行会一直亮着。 3. 我们通过设置 while 大循环中的延时时间来调节喂狗时间,如果在 1s 内喂狗, 系统会正常运行,如果超过 1s,比如 2 秒喂狗一次,那么看门狗就会复位系 统,表现的现象就是:通过串口不停地发送字符串,同时两盏灯都不亮。
由于现在 AT89S52 用的很广泛,所以我先说说 ATMEL 的看门狗;再说说本次试验用的 STC89C52RC 的看 门狗;注意两个不一样!!!
★下面是关于 ATMEL-51 单片机看门狗的描述 【看门狗计数器】(watchdog timer)是一个 14 位的计数器,它以机器周期(晶振频率/12)增加,
★下面是关于 STC89C5XX-51 单片机看门狗的描述(详细请看 STC89C51RC-RD 单片机使用说明)
WDT_CONTR 位置 0xE1; [-] [-] [EN_WDT] [CLR_WDT] [IDLE_WDT] [PS2] [PS1] [PS0]
EN_WDT: 看门狗允许位,置 1 启动看门狗,看门狗不能自动启动,需要设置该位后启动,一旦启
~2~
值得提一下: 由于现在 AT89S52 应用比较广泛,所以我先说说 ATMEL 的看门狗;再说
说本次试验用的 STC89C52RC 的看门狗;注意两个丌一样!!! AT89S52 单片机看门狗定时器是 14 位的,最大计数 214=16384 个数,每计
16384 个时钟周期就溢出一次。也就是说如果使用 12M 晶振的话,至少应该在 16.384ms 内喂一次狗。
候一直亮着;用于指示系统是否重启
uchar timer0_ctr,i;
const uchar str[]="I love MCU!"; //定义一句话,让他从串口输出,只有系统重启的时候才输 出一次,所以也是用于验证看门狗有没有重启系统
/*************************************************************************/ //延时函数,11.0592MHz 晶振下延时约 xms 毫秒 void delay_ms(unsigned xms) {
unsigned x,y; for(x=xms; x>0; x--)
for(y=110; y>0; y--); } /*************************************************************************/
/*************************************************************************/ //主程序初始化函数 void InitMain() {
STC89C5X 系 列 单 片 机 由 于 采 用 了 “ 预 分 频 技 术 ” , 它 的 溢 出 时 间 是 =(N*Prescale*32768)/晶振频率(不要问我为什么,他们就是这么设计的,我们就 这么用就行)。
其中 N 是单片机的时钟周期,STC89C5X 系列单片机提供 6 时钟周期和 12 时钟周期两种时钟周期,可以在烧写程序时修改;
//初始化时两盏灯都熄灭 LED=1; LED_busy=1;
TMOD=0x21; 为串行口波特率发生器
TH0=0x4C; TL0=0x00; IE=0x82; TR0=1;
//定时器 0 工作在方式 1,作为 16 位定时器;定时器 1 工作在方式 2,作
//定时器 0 装初值:每隔 50mபைடு நூலகம் 溢出一次
#define true 1
#define false 0
#define WEIGOU WDT_CONTR=0x34
//看门狗启动设置和“喂狗”操作
sbit LED=P1^6; sbit LED_busy=P1^7;
//信号灯,系统正常工作就一闪一闪的 //工作灯,上电灭一会儿(约 800ms),然后正常工作的时
文章:STC89C5X 单片机“看门狗”原理、详细说明和演示程序 作者:老鲁
原文地址:/article/45 (附 C 语言源程序)
“看门狗定时器”是这样一种东西,从功能上说它可以让微控制器在意外状 况下(比如程序陷入死循环)重新回复到系统上电状态,以保证系统出问题的时 候重启一次。就跟我们用电脑一样,死机了你就按一下 reset 键重启一次电脑, 看门狗就是负责干这个事儿的。它是 52 单片机增加的一个功能,以前 Intel 8031、……、AT 89C51 时代单片机片内都没有“看门狗”功能,需要我们外扩看门 狗芯片,比如 X5045。
~5~
程序代码:
/*************************************************************************** 程序功能:本程序演示 STC51 单片机看门狗程序 程序设计:燕山大学 鲁信琼 晶振选择:11.0592MHz, 如果晶振不匹配,请修改延时函数参数
//IE=(1000 0010)B, 使能定时器 0 中断 //启动定时器 0
~7~
} /*************************************************************************/
动不能关闭(只能系统重新上电和看门狗复位可以关闭)
CLR_WDT: 看门狗计数器清零位,置 1 清零看门狗计数器,当计数器开始重新计数,硬件清零该位。
IDLE_WDT: 单片机 IDLE 模式看门狗允许位,当 IDLE_WDT=1 时,单片机在 IDLE 模式(空闲模式)
依然启用看门狗
PS2~PS0:
如果没有我们的实验板,请按照下面的硬件原理图自己在最小系统上搭建一 个实验环境也很容易。 硬件电路图:
图 1. STC89C52 最小单片机系统+两个指示灯
~4~
图 2. 串行口接口(用于下载程序和测试本次试验) 实验现象及解释: 1. 我们设置 32 分频,看门狗溢出时间约为 1s。 2. 如果系统正常运行:
相关文档
最新文档