📄 rtc.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 + -