简介:pic单片机看门狗计时器(Watch Dog Timer)是一个片内自振式的RC振荡计时器,无需任何的外接元件。这意味着即使芯片OSC1/OSC2上振荡停止了(例如执行指令SLEEP后),WDT照样保持计时。WDT计时溢出将产生RESET。在PIC16C5X 芯片内有一个特殊的谓之"定义EPROM"(Configuration EPROM)的单元,其中的一个位是用于定义WDT的。
pic单片机看门狗计时器(Watch Dog Timer)是一个片内自振式的RC振荡计时器,无需任何的外接元件。这意味着即使芯片OSC1/OSC2上振荡停止了(例如执行指令SLEEP后),WDT照样保持计时。WDT计时溢出将产生RESET。在PIC16C5X 芯片内有一个特殊的谓之"定义EPROM"(Configuration EPROM)的单元,其中的一个位是用于定义WDT的。你可以将其置"0"来抑制WDT使之永远不起作用。这将在第七章的烧写器介绍部分详细说明,请参阅。
1、WDT周期
WDT有一个基本的溢出周期16ms(无预分频器pic16F917),如果你需要更长的WDT周期,可以把预分频器分配给WDT,最大分频比可达1:128,这时的WDT溢出周期约为2.5S。pic16F917看门狗还提供了一个16位的预分频器,使WTD的超时值提高到268s。WDT溢出周期和环境温度、VDD等参数有关系,请参阅附录的图表。
"CLRWDT"和"SLEEP"指令将清除WDT计时器以及预分频器里已有的计数值(当预分频器分配给WDT时)。WDT一般用来防止系统失控或者说防止单片机程序运行"失控"。在正常情况下,WDT应在计满溢出前被CLRWDT指令清零,以防止产生RESET。如果程序由于某种干扰而失控,那么不能在WDT溢出前执行一条CLRWDT指令,就会使WDT溢出而产生RESET,使系统重新启动运行而不至失去控制。若WDT溢出产生RESET,则状态寄存器STATUS的"TO"位会被清零,用户程序可藉此判断复位是否由WDT溢时所造成。
2、pic单片机WDT编程注意事项
如果使用WDT,一定要仔细在程序中的某些地方放一条"CLRWDT"指令,以保证在WDT在溢出前能被请零。否则会造成芯片不停地产生RESET,使系统无法正常工作。
关键字:PIC 看门狗定时器 WDT
引用地址:
PIC看门狗定时器WDT的理解
推荐阅读最新更新时间:2024-11-12 12:37
PIC最简约的PWM波形产生程序(PIC16F877A)
// Author : Ma Kai // Date : 2011/05/14 // Function : CCP1模块产生规定占空比的PWM波形 // MCU : PIC16F877A // C Compiler : PICC 9.60 // IDE : MPLAB IDE v8.10 #include pic.h __CONFIG(0x1832); void main() { T2CON=0X04; //打开定时器2 PR2=0X30; //PWM 的工作周期(可以调整频率1/T)=(PR2+1)*4*Tosc*TMR2预分频比 CCPR1L=0X0
[单片机]
PIC 定时器0中断
#include //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H __CONFIG(1,XT) ; //晶振为外部4M __CONFIG(2,WDTDIS) ; //看门狗关闭 __CONFIG(4,LVPDIS) ; //禁止低电压编程 #define uint unsigned int #define uchar unsigned char uint count=0; void timer0init(void) { T0CS=0; //TMR0工作于定时器方式 PSA=1; //TMR0不分频 TMR0IF=0; //TMR0IF是中断标志,定时一段时
[单片机]
pic单片机计数
1 #include pic.h //用的是PICC编译器 2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); 3 //PIC单片机都需要配置该位,HS是外部晶振模式 4 // 使能PROTECT保护程序存储器 5 //BOREN使能掉电保护 6 7 //WDTDIS关闭看门狗 8 void display(int pulse_amount); 9 void
[单片机]
PIC单片机开发环境_PIC单片机引脚的三种状态
PIC单片机开发环境 1.PIC单片机的开发环境常用的是MPLAB, MPLAB可以从微芯公司网站上下载;这个开发环境自带的是汇编程序的编译器,如果想用C语言做开发,那么需要下载相应的C语言编译器并安装,配套的C语言编译器为 MPLAB-C18, 可以从微芯公司网站上下载。 2.首先下载好MPLAB和MPLAB-C18两个软件并解压。 首先安装MPLAB,解压好的MPLAB如下图所示: 双击setup,前半部分直接点击next即可,到中间部分会出现如下图所示的选择框: 这里可以选择是,后面的点击next即可。MPLAB安装完成之后,重启系统(这一步很重要)。 接着安装 MPLAB-C
[单片机]
PIC12F508单片机学习之三—按键唤醒
PIC12F508单片机是没有中断的,按键中断只能是查询方式。 编译器用的XC8,编译环境IDE用的是MPLAB X IDE。 下载器是PICKIT3. //*************************************************** // __________________ // VDD-| 1 8 |-VSS // GP5-| 2 27 |-GP0/DAT // GP4-| 3 26 |-GP1/CLK //GP3/RMCLR--| 4 25 |-GP2 // |_______________
[单片机]
PIC 单片机软件编程技巧
控制部分采用P IC l6F7X系列 单片机 ,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。 1、 动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: list P=16c73 call lefthand
[单片机]
PIC单片机警报声程序设计
pIC16c54警报声程序 #include“pic.h” #definebeep_outRA2//音效输出 chartmr_buff; charcycle_buff; charcycle_set; intchange_set; intchange_count; bitchange_flag; voidmain(void) {TRISA=0X0; PORTA=0; OP TI ON=4; cycle_buff=52; cycle_set=100; change_set=196; TMR0=0; while(1) { if(TMR0==0) {TMR0=(cycle_set-1)^0XFF; beep_out=!beep_ou
[单片机]
PIC单片机控制DS18B20数字温度传感器原理及实现
#include pic.h #define uchar unsigned char #define uint unsigned int #define DQ RC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31); const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; const uchar table1 ={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,
[单片机]