找回密码
 注册
搜索
查看: 565|回复: 0

[讨论] 44B0 RTC模块应用问题

[复制链接]
发表于 2007-10-28 21:22:39 | 显示全部楼层 |阅读模式
我编写了一个RTC的小程序,实现计算程序运行时间,发现,如果我把分和秒都设为0则运行结果正常,如果我把分和秒设置大,即运行后产生进位,则分还是之前的设置值,秒发生变化,计算结果也不正确,而用把分和秒都设为0则不管是否产生进位,结果都正确,以下是我的程序:
U32 run_time;

typedef struct _TIME_VALUE
{
    U8  year;
    U8  month;
    U8  day;
    U8  date;
    U8  hour;
    U8  minute;
    U8  second;
} time_value;

time_value time;


void rtc_init(U8 min, U8 sec)
{
    rRTCCON  = 0x01;     //读写使能,1/32768预分频,整合BCD计数器,不复位
    rBCDYEAR = 07;
    rBCDMON  = 10;
    rBCDDAY  = 25;
    rBCDDATE = 4;
    rBCDHOUR = 15;
    rBCDMIN  = min;
    rBCDSEC  = sec;
    rRTCCON  = 0x00;     //读写禁止
}

void Main(void)
{

    rSYSCFG = 0x0;   
   
    rtc_init(55, 59);
         
    delay(10000000);
   
    rRTCCON = 0x01;
   
    //time.year   = rBCDYEAR;
    //time.month  = rBCDMON;
    //time.day    = rBCDDAY;
    //time.date   = rBCDDATE;
    //time.hour   = rBCDHOUR;
    time.minute = rBCDMIN;
    time.second = rBCDSEC;
   
    if( time.second == 0 )//解决1s偏离
    {
        //time.year   = rBCDYEAR;
        //time.month  = rBCDMON;
        //time.day    = rBCDDAY;
        //time.date   = rBCDDATE;
        //time.hour   = rBCDHOUR;
        time.minute = rBCDMIN;
        //time.second = rBCDSEC;
    }
        
    rRTCCON  = 0x00;    //读写禁止
   
    //run_time = time.minute * 60 + time.second;//程序运行多长时间
    run_time = ( time.minute -55 ) * 60 + time.second - 59;
    while(1);
   
}
请大家帮忙看看有什么问题,先谢谢了
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-7 10:14 , Processed in 0.044068 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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