xxkj2010 发表于 2024-11-21 14:12:55

lezjin 发表于 2024-11-21 14:07
嗯,代码都差不多的,应该没有什么逻辑上的问题,我感觉是共用一个地址造成的,不过看你的好像月份变化的 ...

不知道STC8H系列有没有这问题,有空再试试

xxkj2010 发表于 2024-11-24 14:13:43

不知道手头的为个STC8H8K64U是什么版本的,内部RTC测试结果如下:


附:RTC初始化(不开RTC中断)代码
void RTC_config(void)
{
    INIYEAR = 24;   //年
    INIMONTH = 11;    //月
    INIDAY = 30;      //日
    INIWEEK=3;      //星期
    INIHOUR = 23;   //H:23
    INIMIN = 59;      //M:59
    INISEC = 55;      //S:55
    INISSEC = 0;      //S/128:0

    ALAHOUR = 0;    //闹钟小时
    ALAMIN= 0;    //闹钟分钟
    ALASEC= 0;    //闹钟秒
    ALASSEC = 0;    //闹钟1/128秒

    IRC32KCR = 0x80;   //启动内部32K晶振.
    while (!(IRC32KCR & 1));//等待时钟稳定
    RTCCFG = 0x03;    //选择内部32K时钟源,触发RTC寄存器初始化

//    X32KCR = 0x80 + 0x40;   //启动外部32K晶振, 低增益+0x00, 高增益+0x40.
//    while (!(X32KCR & 1));//等待时钟稳定
//    RTCCFG = 0x01;    //选择外部32K时钟源,触发RTC寄存器初始化

//    RTCIF = 0x00;   //清中断标志
//    RTCIEN = 0x88;    //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
    RTCCR = 0x01;   //RTC使能

    while(RTCCFG & 0x01);    //等待初始化完成,需要在 "RTC使能" 之后判断.
    //设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
    //如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.
}

页: 1 2 [3]
查看完整版本: AI8051U RTC星期计数器没有计数