前面章节有说到经过设置option_byte来装备看门狗,我手上拿到的项目工程是没有装备option_byte的,可是发现coder是在程序中见缝插针般刺进以下代码:
WDTE = 0xac;
这个赋值操作便是喂狗,至今我也不知道option_byte的复位值是多少,从官网下载的数据手册也没有阐明。其实能够经过一些方法来验证,即不设置option_byte,不喂狗,看程序是否会不断复位。废话说完,言归正传,咱们用守时器来完成守时喂狗。
这儿用到的是78K0/FY-2系列单片机,运用TM51作为守时器,需求装备的存放器有:
TCL51——挑选守时器时钟频率,是在外部硬件时钟频率的基础上进行分频。
TMC51——此存放只要最高位TCEN51,舱位/封闭守时器。
CR51——计数比较存放器,当计数存放器TM51的值等于CR51时,会置位对应中止标识位。此处的值不同于STC守时器的设备值。
TMMK51——TM51中止屏蔽存放器位
TMPR51——TM51中止优先级存放器位
自己喜爱将某个部件的初始化代码编写为一个函数
void init_TM51(void)
{
TCL51 = 0x05; //根据20MHz分频为312.5KHz ,守时距离为3.2us
TMC51 = 0x80; //翻开守时器
CR51 = 0xfa; //0.8ms会发生中止
TMMK51 = 0; //使能中止
TMPR51 =0; //设置为高优先级中止
EI(); //还记得前面增加的#pragma EI 吗?总中止使能,刚开始探索的时分便是忘掉增加此行代码
}
中止函数:
#pragma interrupt INTTM51 inter_TM51 rb1
__interrupt void inter_TM51(void)
{
//增加自己的代码
}