HyunYong_7782 发表于 2026-1-29 08:46:45

STC8H1K08/17T RTC功能

现在我的程序需要长时间进入空闲模式,通过RTC的闹钟模式 10分钟 中断一次 退出空闲 然后查询一次ADC
查询完成处理好数据以后再次进入空闲


还有一个是记录工作时间 最大不超过12小时 中途工作结束则12小时计时清零,再次工作从零计时
用ADC来判断是否需要工作结束,需要的时候清零就可以了

但是问题是,是否一定要使用外部32K晶振 ,还是说内部低速晶振也可以,只要像我这样 不工作的时候及时清零误差就不会累计太大
因为我这个差一两秒没关系



RTC的例程下面这个程序吗?
#include "STC8Hxxx.h"

bit B_Alarm;                  // 闹钟触发标志

void RTC_config(void);          // RTC 初始化函数声明

void main(void)
{
    P_SW2 |= 0x80;            // 使能扩展寄存器(XFR)访问

    RTC_config();               // 配置并启动 RTC
    EA = 1;                     // 开启总中断

    while(1)
    {
      if(B_Alarm)             // 检测到闹钟中断
      {
            B_Alarm = 0;      // 清标志
            // 可在此添加蜂鸣器、LED、继电器等闹钟动作
      }
    }
}

void RTC_Isr() interrupt 13   // RTC 中断服务函数(中断向量13)
{
    if(RTCIF & 0x80)            // 闹钟中断标志(bit7 = ALAIF)
    {
      RTCIF &= ~0x80;         // 软件清中断标志
      B_Alarm = 1;            // 置闹钟处理标志
    }
}

void RTC_config(void)         // RTC 初始化函数
{
    INIYEAR= 21;            // 初始化年:2021
    INIMONTH = 12;            // 月:12
    INIDAY   = 31;            // 日:31
    INIHOUR= 23;            // 时:23
    INIMIN   = 59;            // 分:59
    INISEC   = 50;            // 秒:50
    INISSEC= 0;               // 亚秒(1/128秒):0

    ALAHOUR= 0;               // 闹钟小时:0
    ALAMIN   = 0;               // 闹钟分钟:0
    ALASEC   = 0;               // 闹钟秒:0
    ALASSEC= 0;               // 闹钟亚秒:0

    IRC32KCR = 0x80;            // 启动内部 32K RC 振荡器
    while(!(IRC32KCR & 1));   // 等待内部 32K 时钟稳定

    RTCCFG   = 0x03;            // 选内部 32K 时钟源 + 触发 RTC 寄存器初始化

    RTCIF    = 0x00;            // 清所有 RTC 中断标志
    RTCIEN   = 0x88;            // 使能闹钟中断(0x80) + 秒中断(0x08)
    RTCCR    = 0x01;            // RTC 模块使能

    while(RTCCFG & 0x01);       // 等待 RTC 初始化完成(约 30μs)
}






HyunYong_7782 发表于 2026-1-29 11:35:03

图中这个闹钟是每天更新一次
有没有什么办法一直产生十分钟的中断

最下下册就采用分钟中断叠加十次算10分钟 但是会唤醒IDLE十次 再重新进入空闲的间隔就产生功耗了

ercircle 发表于 2026-1-29 11:42:41

需要外部晶振,内部晶振我记版主提过只能用来判断在走时


闹钟可以设置当前时间+ 十分钟之后的时间。

HyunYong_7782 发表于 2026-1-29 14:11:26

ercircle 发表于 2026-1-29 11:42
需要外部晶振,内部晶振我记版主提过只能用来判断在走时




我看规格书有测试表 偏差太多了 外部接一个吧还是
页: [1]
查看完整版本: STC8H1K08/17T RTC功能