只能一次性写入掉电唤醒定时器计数寄存器
使用掉电唤醒定时器,想让单片机(STC32G8K64)每隔 10秒 唤醒一次,最开始看了寄存器就直接操作了,但是实验现象未达预期。经计算,想要让单片机掉电10秒,{WKTCH, WKHCL}大致等于24000D,代码如下
MOV WKTCL, #LOW 24000D
MOV WKTCH, #HIGH 24000D
ORL WKTCH, #80H这样不准,或者说没用。但是把24000D加上8000H,之后再给{WKTCH, WKHCL}赋值,就又可以了:
MOV WKTCL, #LOW 56768D
MOV WKTCH, #HIGH 56768D这是为什么?难道是有什么隐含的约定吗?
即便是在20240513发布的手册中,也未见说明。
掉电唤醒定时器的寄存器WKTCL和WKTCH的读取好像有些特殊
写入的值和读出的值不一样。
后来我有测试,发现可能读取的值是掉电唤醒定时器当前的计数值,而不是写入的预定值
如果确实是这样,那么这两个寄存器就相当于是只写寄存器
不能用ORL/ANL/XRL这些“读-修改-写”指令进行访问 虽然但是,确实如你所说需要一次性写入寄存器,,忘了哪里看到得了,,可能是例程里面 或者是论坛的帖子里面
页:
[1]