我写的pic18f66k90单片机内实时时钟程序,请高手看看,错误在哪里?谢谢!
程序包括rtcc启动,中断服务程序,程序通过编译后运行,可进入到中断处理程序中,但定时时间不对,例如想定时10分钟后,再进入rtcc中断处理,但实际上不到1秒就进中断了,...
程序包括rtcc启动,中断服务程序,程序通过编译后运行,可进入到中断处理程序中,但定时时间不对,例如想定时10分钟后,再进入rtcc中断处理,但实际上不到1秒就进中断了,而且不管定时时间设置的是多少,实际进中断的时间没区别。
void RtccEnable( unsigned char TimerHour, unsigned char TimerMinute, unsigned char TimerSecond )
{
TimePoint.f.hour = 0 ;
TimePoint.f.sec = 0 ;
TimePoint.f.min = 0 ;
AlrmTimePoint.f.hour = TimePoint.f.hour + TimerHour ;
AlrmTimePoint.f.sec = TimePoint.f.sec + TimerMinute ;
AlrmTimePoint.f.min = TimePoint.f.min + TimerSecond ;
RtccInitClock(); //初始化时钟
RtccWrOn(); //RTCC写使能
RtccWriteAlrmTimeDate( & AlrmTimePoint ); //设置闹钟时间
RtccWriteTimeDate( & TimePoint , 1 );
RTCCIP = 1 ; // RTCC中断优先级设置为高优先级
RTCCIF = 0 ;
RTCCIE = 1 ; //使能 RTCC中断
mRtccOn();
mRtccAlrmEnable(); //使能闹钟
}
知道原因了,RTCC时钟的中断按设置的中断时间可设为1S,10S,1m,10m,与日期设置无关! 展开
void RtccEnable( unsigned char TimerHour, unsigned char TimerMinute, unsigned char TimerSecond )
{
TimePoint.f.hour = 0 ;
TimePoint.f.sec = 0 ;
TimePoint.f.min = 0 ;
AlrmTimePoint.f.hour = TimePoint.f.hour + TimerHour ;
AlrmTimePoint.f.sec = TimePoint.f.sec + TimerMinute ;
AlrmTimePoint.f.min = TimePoint.f.min + TimerSecond ;
RtccInitClock(); //初始化时钟
RtccWrOn(); //RTCC写使能
RtccWriteAlrmTimeDate( & AlrmTimePoint ); //设置闹钟时间
RtccWriteTimeDate( & TimePoint , 1 );
RTCCIP = 1 ; // RTCC中断优先级设置为高优先级
RTCCIF = 0 ;
RTCCIE = 1 ; //使能 RTCC中断
mRtccOn();
mRtccAlrmEnable(); //使能闹钟
}
知道原因了,RTCC时钟的中断按设置的中断时间可设为1S,10S,1m,10m,与日期设置无关! 展开
若以下回答无法解决问题,邀请你更新回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询