找回密码
 立即注册
查看: 271|回复: 2

只能一次性写入掉电唤醒定时器计数寄存器

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-05-01 10:06:01

44

主题

124

回帖

1437

积分

金牌会员

积分
1437
发表于 2024-5-27 05:21:20 | 显示全部楼层 |阅读模式
使用掉电唤醒定时器,想让单片机(STC32G8K64)每隔 10秒 唤醒一次,最开始看了寄存器就直接操作了,但是实验现象未达预期。
经计算,想要让单片机掉电10秒,{WKTCH[6:0], WKHCL[7:0]}大致等于24000D,代码如下
  1. MOV                WKTCL, #LOW 24000D
  2. MOV                WKTCH, #HIGH 24000D
  3. ORL                WKTCH, #80H
复制代码
这样不准,或者说没用。但是把24000D加上8000H,之后再给{WKTCH[6:0], WKHCL[7:0]}赋值,就又可以了:
  1. MOV                WKTCL, #LOW        56768D
  2. MOV                WKTCH, #HIGH 56768D
复制代码
这是为什么?难道是有什么隐含的约定吗?
即便是在20240513发布的手册中,也未见说明。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-04-30 09:01:34

1

主题

66

回帖

682

积分

高级会员

积分
682
发表于 2024-5-27 08:15:32 | 显示全部楼层
掉电唤醒定时器的寄存器WKTCL和WKTCH的读取好像有些特殊
写入的值和读出的值不一样。
后来我有测试,发现可能读取的值是掉电唤醒定时器当前的计数值,而不是写入的预定值
如果确实是这样,那么这两个寄存器就相当于是只写寄存器
不能用ORL/ANL/XRL这些“读-修改-写”指令进行访问
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-5-27 08:44:48 | 显示全部楼层
虽然但是,确实如你所说需要一次性写入寄存器,,忘了哪里看到得了,,可能是例程里面 或者是论坛的帖子里面
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:13 , Processed in 0.104917 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表