供应FC2720,FC2721,FC2722,FC2723,FC3703,FC3722,FC3723,FC2522,FC2523
FC2720的定时器:
定时器
看门狗定时器
看门狗定时器WDT是一个4位二进制计数器,用于监控程序的正常执行。如果由于干扰,程序进入了未知状态,看门狗定时器溢出,系统复位。看门狗的工作模式由OPTION选项控制,其时钟源由内部低速 RC 振荡器(32KHz /5V)提供。
看门狗溢出时间 = 256 /内部低速振荡器周期(sec)分频系数
看门狗定时器的 3 种工作模式由OPTION选项“WatchDog”控制:
Disable:禁止看门狗定时器功能;
Enable:使能看门狗定时器功能,在普通模式和低速模式下有效,在睡眠模式和绿色模式下看门狗不工作;
Always_On:使能看门狗定时器功能,在睡眠模式和绿色模式下,看门狗仍会正常工作;
注意: 1.不分频时wdt溢出时间为8ms。
2.在高干扰环境下,强烈建议将看门狗设置为“Always_On”以确保系统在出错状态和重启时正常复位。
看门狗清零的方法是对看门狗计数器清零寄存器 WDTR 写入清零控制字 5AH。 0CCH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
WDTR
WDTR7
WDTR6
WDTR5
WDTR4
WDTR3
WDTR2
WDTR1
WDTR0
复位
0
0
0
0
0
0
0
0
例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零。
MOV A,#5AH
B0MOV WDTR,A
……
CALL SUB1
CALL SUB2
……
JMP MAIN
看门狗定时器应用注意事项如下:
对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性;
不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况;
程序中应该只在主程序中有一次清看门狗的动作,这种架构能够较大限度的发挥看门狗的保护功能;
例:如下是对看门狗定时器的操作,在主程序开头对看门狗清零
MAIN:
…… ;检测 I/O 口的状态
…… ;检测 RAM 的内容
ERR: ;I/O 或 RAM 出错,不清看门狗等看门狗计时溢出
JMP$
CORRECT: ;I/O 和 RAM 正常,看门狗清零
MOV A,#5AH ;在整个程序中只有一处地方清看门狗
B0MOV WDTR,A
……
CALL SUB1
CALL SUB2
……
JMP MAIN
FC2720:
功能特色:
1K OTP程序存储器
128Byte SRAM
1*4路8bit PWM,带死区控制
5路12bit ADC
具有一个字长的系统复位向量(0000H)。
上电复位;
看门狗复位;
掉电复位;
发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。下面一段程序演示了如何定义 ROM 中的复位向量。 例:定义复位向量
ORG 0000H
JMP START ;跳至用户程序
…
ORG 10H
START: ;用户程序起始地址
… ;用户程序
…
ENDP ;程序结
注:PCH只支持PC增量运算,而不支持PC减量运算。当PCL+ACC后如有进位,PCH的值会自动加1。PCL-ACC后若有借位,PCH 的值将保持不变,用户在设计应用时要加以注意。
例:跳转表
ORG 0100H ; 跳转表从 ROM 前端开始
B0ADD PCL, A ; PCL = PCL + ACC,PCL 溢出时 PCH 加 1
JMP A0POINT ; ACC = 0,跳至 A0POINT
JMP A1POINT ; ACC = 1,跳至 A1POINT
JMP A2POINT ; ACC = 2,跳至 A2POINT
JMP A3POINT ; ACC = 3,跳至 A3POINT
FC2720单片机提供一个宏以保证可靠执行跳转表功能,它会自动检测 ROM 边界并将跳转表移至适当的位置。但采用该宏程序会占用部分 ROM 空间。