RTC初始化:
- P_SW2|=EAXFR;
- P1M1=0xC0; P1M0=0x00; //设置IO模式(晶振IO高阻)
- X32KCR=0x80; //启动外部32.768KHz晶振
- while(!(X32KCR&0x01)); //等待外部32.768KHz晶振稳定
- RTCCFG=0x00; //RTC选择外部32.768KHz时钟源
- INIYEAR =25; //初始化年
- INIMONTH =1; //初始化月
- INIDAY =1; //初始化日
- INIHOUR =0; //初始化时
- INIMIN =0; //初始化分
- INISEC =0; //初始化秒
- INISSEC =0; //初始化1/128秒
- INIWEEK =3; //初始化星期
- RTCCFG|=0x01; //初始化RTC
- RTCIF=0x00; //清除RTC中断标志
- RTCIEN=0x08; //启用RTC秒中断
- RTCCR=0x01; //打开RTC
- EA=1; //启用总中断
复制代码
RTC中断:
- void RTC_Isr(void) interrupt RTC_VECTOR
- {
- // if(RTCIF&0x80) //闹钟中断
- // {
- // RTCIF&=~0x80;
- // }
- // if(RTCIF&0x40) //日中断
- // {
- // RTCIF&=~0x40;
- // }
- // if(RTCIF&0x20) //时中断
- // {
- // RTCIF&=~0x20;
- // }
- // if(RTCIF&0x10) //分中断
- // {
- // RTCIF&=~0x10;
- // }
- if(RTCIF&0x08) //秒中断
- {
- RTCIF&=~0x08;
- RTC_1s_Flag=1;
- }
- // if(RTCIF&0x04) //1/2秒中断
- // {
- // RTCIF&=~0x04;
- // }
- // if(RTCIF&0x02) //1/8秒中断
- // {
- // RTCIF&=~0x02;
- // }
- // if(RTCIF&0x01) //1/32秒中断
- // {
- // RTCIF&=~0x01;
- // }
- }
复制代码
|