看门狗芯片怎么编程

时间:2025-01-23 11:02:11 游戏攻略

看门狗芯片的编程方法取决于具体的芯片类型和单片机系统。以下是一些常见单片机看门狗的编程示例:

89S51/89S52系列单片机

初始化看门狗

```c

include sfr WDTRST = 0xA6;

void main() {

WDTRST = 0x1E; // 初始化看门狗

for (;;) {

WDTRST = 0x1E; // 喂狗指令

WDTRST = 0xE1; // 喂狗指令

}

}

```

ARM9看门狗

初始化看门狗

```c

void watchdog_init(void) {

rWTCNT = 8448 * 2; // 看门狗电路设初值

rWTCON = WDT_ENABLE | WDT_RST_ENABLE | WDT_CLK_SEL | WDT_PRE_SCALER; // 使能看门狗

}

```

喂狗

```c

void rtc_tick_isr(void) {

Isr_Clear(IRQ_TICK); // 清TICK中断

rWTCNT = 8448 * 2; // 喂狗

}

```

P18F458单片机

初始化看门狗

```c

include "p18f458.h"

unsigned long i;

void initial(void) {

TRISD = 0X00; // D口设为输出

}

void delay(void) {

for (i = 19999; --i;) continue;

}

void main(void) {

initial(); // 初始化,设定看门狗的相关寄存器

PORTD = 0X00; // D口送00H,发光二极管亮

delay(); // 给予一定时间的延时

PORTD = 0XFF; // D口送FFH,发光二极管灭

while (1); // 死循环,等待看门狗溢出复位

}

```

STC单片机

设置看门狗

```c

include

define uchar unsigned char

define uint unsigned int

sfr WDT_CONTR = 0xe1; // 定义看门狗寄存器

void delayms(uint xms) {

int i, j;

for (i = xms; i > 0; i--)

for (j = 110; j > 0; j--);

}

void main(void) {

while (1) {

WDT_CONTR = 0x35; // 看门狗设置2秒复位

P1 = 0x00; // P1灯全亮1秒

delayms(1000); // P1灯全亮1秒

while (1) {

P1 = 0x55; // 当P1灯间隔亮约1秒后会全亮,说明芯片已经被看门狗复位了

}

}

}

```

总结

89S51/89S52:通过设置WDTRST寄存器来进行初始化和喂狗。

ARM9:使用寄存器RWTCNT和RWTCON进行初始化和喂狗,并通过中断服务程序(如RTC_tick_ISR)来喂狗。

P18F458:使用初始化函数和延时函数来设置和喂狗,并通过一个死循环来等待看门狗复位。

STC单片机:使用WDT_CONTR寄存器进行设置,并通过延时函数和循环来喂狗。

这些示例展示了不同单片机看门狗编程的基本方法。具体实现时,需要根据实际硬件和需求进行调整。