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

📄 rtc.c

📁 smdk40100 40mhz test code
💻 C
字号:
/*******************************************************************/
/*  TITLE : rtc.c                                                  */
/*  DATE  : 30, JULY 1998                                          */
/*-----------------------------------------------------------------*/
/*  COPY RIGHTS @SAMSUNG ELECTRONICS CO., LTD.                     */
/*******************************************************************/

#include "..\include\k401.h"
#include "..\include\k401lib.h"
#include "..\include\rtc.h"

char *date[8] = {"","SUN","MON","TUE","WED","THU","FRI","SAT"};

void Rtc_Init(void)
{
    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset

    rBCDYEAR = TESTYEAR;
    rBCDMON  = TESTMONTH;
    rBCDDATE = TESTDATE;    // SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
    rBCDDAY  = TESTDAY;
    rBCDHOUR = TESTHOUR;
    rBCDMIN  = TESTMIN;
    rBCDSEC  = TESTSEC;
}


void Test_Rtc(void)
{
    int year;
    int month,day,weekday,hour,min,sec1,sec2;
    Uart_Printf("RTC test for KS17C40100\n");

    Rtc_Init();

    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset

    sec1=rBCDSEC;
    Delay(10000);
    sec2=rBCDSEC;

    year = 0x2000 + rBCDYEAR;
    month=rBCDMON;
    day=rBCDDAY;
    weekday=rBCDDATE;
    hour=rBCDHOUR;
    min=rBCDMIN;

    Uart_Printf("%x, %x, %x, %s, %x:%x:%x\n",
           year, month, day, date[weekday], hour, min, sec2);

    rRTCCON = 0x00;    // R/W disable, 1/32768, Normal(merge), No reset
}


void Display_Rtc(void)
{
    int year;
    int month,day,weekday,hour,min,sec;

    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset

    year = 0x2000 + rBCDYEAR;
    month=rBCDMON;
    day=rBCDDAY;
    weekday=rBCDDATE;
    hour=rBCDHOUR;
    min=rBCDMIN;
    sec=rBCDSEC;

    Uart_Printf("%x, %x, %x, %s, %x:%x:%x\n",
           year, month, day, date[weekday], hour, min, sec);

    rRTCCON = 0x00;    // R/W disable, 1/32768, Normal(merge), No reset
}

volatile int isRtcInt;

void __irq RtcAlarm_Int(void)
{
    rINTPND=~(BIT_RTCA);
    Uart_Printf("RTC Alarm Interrupt O.K.\n");
    isRtcInt=1;  
}

void Test_RtcAlarm(void)
{
    Uart_Printf("[RTC Alarm Test for KS17C40100]\n");    
    Rtc_Init();

    rRTCCON = 0x01; // R/W enable, 1/32768, Normal(merge), No reset

    rALMYEAR=TESTYEAR2 ;
    rALMMON =TESTMONTH2;
    rALMDAY =TESTDAY2  ;
    rALMHOUR=TESTHOUR2 ;
    rALMMIN =TESTMIN2  ;
    rALMSEC =TESTSEC2+1; 

    isRtcInt=0;
    pISR_RTCA=(unsigned)RtcAlarm_Int;
    rRTCALM=0x7f;

    rSYSCON|=BIT_GLOBAL;
    rINTMSK=BIT_RTCA;

    while(isRtcInt==0);
    
    rSYSCON&=~(BIT_GLOBAL);
    rRTCCON = 0x00;    // R/W disable, 1/32768, Normal(merge), No reset
}

⌨️ 快捷键说明

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