2(7
(HI
根据 $A8DD 的 文档,系统启动后,看门狗寄存器是被使能的,所以,如果不在
预计的时间内“喂狗”,就有“被狗咬”的可能。别说啥了,赶紧先喂狗。上面这段代码即为喂
狗代码。 代码编写者把它放在 8B 上电修改 $@8 模式后的第一个代码,是可以理解
的。这个代码,也是修改寄存器的代码,它的思路依旧是:读—修改—写。
实际上, 代码在喂狗代码之前,还有一段代码,如下:
7+/*)89:;<"$A8D
7*)&G89:CA
7*):$?DDJ6)&8)6
7*)8?K@:DJD6''+2++6
7+/*)89:;<"$A8D
7*)&G89:CA6喂狗寄存器6
7*):$?D#J6)&8)6
7*):$$?D#8
7*)8?K@:D8D6''+2++6
7)+/
这是定义寄存器用的。比如根据 $A8DD 的 文档,喂狗寄存器 &G89: 的寄存器
地址是 CA,需要定义后才能使用。同理,这里还定义了时钟除数寄存器 8?K@:
和中断掩码的 :$? 寄存器的地址。在后续代码中会陆续用到。
3.2.5 关掉中断
63=>L)++):3/6
2(7MMMM
(F:$?
(HI
7+/*)89:;<"$A8D
(FAM
(F:$$?
(HI
7)+/
从注释可以看出此段代码的作用:屏蔽掉所有的 +0 中断。为了屏蔽这些中断,我们只要把
:$? 的所有的 + 位都置 即可。:$? 寄存器共 A+ 位,每个 + 对应着不同的中断
源。事实上,笔者认为这个代码是多余的,只是为了“心里更踏实”而已。因为 $A8DD 的
文档里明确指出,'& 在复位的时候,这个寄存器的值就是 !;;;;;;;;,以防止
发生异常中断。
3.2.6 修改时钟除数寄存器
6;8?%N8?%B8?F%%D6
6/;8?+NOP6
(F8?K@:
2(76原先的值是 A(现在是 %%6
(HI
在 源码中,给 8?K@: 寄存器赋值的是7A,表示 ;8?%N8?%B8?F%%D,这
里笔者将其比例改为 %%,没啥特殊的目的,调试代码的时候试验用的,后来调试完毕,
就没有再修改了。