看门狗芯片的编程方法取决于具体的芯片类型和单片机系统。以下是一些常见单片机看门狗的编程示例:
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寄存器进行设置,并通过延时函数和循环来喂狗。
这些示例展示了不同单片机看门狗编程的基本方法。具体实现时,需要根据实际硬件和需求进行调整。