⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtccwritealrmdate.c

📁 Mplab C30编译器
💻 C
字号:
#if defined(__PIC24F__)
#include <p24Fxxxx.h>
#endif
#include "Rtcc.h"



#ifdef _TMR_RTCC_V1

/*********************************************************************
 Function:        void RtccWriteAlrmDate(const rtccDate* pDt)
 
 PreCondition:    pDt a valid rtccDate pointer having proper values:
                      wday: BCD codification, 00-06 
                      mday: BCD codification, 01-31
                      mon: BCD codification, 01-12
 
 Input:           pDt - pointer to a constant rtccDate union
 
 Output:          None
 
 Side Effects:    None
 
 Overview:        The function sets the alarm date in the RTCC device.
 
 Note:            The write is successful only if Wr Enable is set.
                  The function will enable the write itself, if needed.
                  Also, the Alarm will be temporarily disabled in order
                  to safely perform the update of the ALRMTIME register.
                  However, the device status will be restored. 
                  Note that the alarm date does not contain a year field.
 ********************************************************************/
BOOL RtccWriteAlrmDate(const rtccDate* pDt)
{
   WORD_VAL tempHourWDay ;
   WORD_VAL tempDayMonth ;

   BOOL    wasWrEn;
   BOOL    wasAlrm;

   if((MAX_MON < pDt->f.mon) || (MIN_MON > pDt->f.mon) || (MAX_MDAY < pDt->f.mday) || (MIN_MDAY > pDt->f.mday) || 
      (MAX_YEAR < pDt->f.year))
   {
       return FALSE;
   }

   tempDayMonth.byte.LB = pDt->f.mday;
   tempDayMonth.byte.HB = pDt->f.mon;

   if(!(wasWrEn=mRtccIsWrEn()))
   {
       RtccWrOn();            // have to allow the WRTEN in order to write the new value
   }
   if(wasAlrm=mRtccIsAlrmEnabled())
   {
       mRtccAlrmDisable();     // avoid spurious alarm interrupts
   }

   mRtccClearAlrmPtr();
   mRtccSetAlrmPtr(RTCCPTR_MASK_HRSWEEK);

   tempHourWDay.Val = ALRMVAL;
   tempHourWDay.byte.LB = pDt->f.wday;

   mRtccClearRtcPtr();
   mRtccSetRtcPtr(RTCCPTR_MASK_DAYMON);

   ALRMVAL =tempDayMonth.Val;
   ALRMVAL = tempHourWDay.Val;

   if(wasAlrm)
   {
       mRtccAlrmEnable();
   }
   if(!wasWrEn)
   {
       mRtccWrOff();
   }

   return(TRUE);
}


#else
#warning "Does not build on this target"
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -