rtc.c

来自「基于arm9的,usb设备(u盘)的读写操作实现.」· C语言 代码 · 共 75 行

C
75
字号

#include "mx_types.h"
#include "2410addr.h"
#include "2410lib.h"


#include "rtc.h"

//#define _XTAL_

u_8 BCD2DEC(u_8 BCDnum)
{
	return ((((BCDnum>>4)&0x0f)*10)+(BCDnum&0x0f));
}

u_8 DEC2BCD(u_8 DECnum)
{
	return ((((DECnum/10)&0x0f)<<4)|((DECnum%10)&0x0f));
}

void RTC_Reset(void)
{
	rRTCCON = CLKRST |RTCEN;
	Delay(20);
	rRTCCON = RTCEN;
	Delay(20);
	
#ifdef _XTAL_
	rRTCCON |= CLKSEL;
#endif //_XTAL_
}


void RTC_Start(void)
{
	rRTCRST = 0x08; 	//
	
	rTICNT = 0xFF;	//Tick time interrupt enable, and tick counter vlaue is 127

	rBCDSEC = 0;
	rBCDMIN = 0;
	rBCDHOUR = 0;
	rBCDDATE = 1;
	rBCDMON = 2;
	rBCDYEAR = 0;
}


void RTC_GetTime(RTC_Time *prTime)
{
	prTime->second =BCD2DEC(rBCDSEC);
	prTime->minute =BCD2DEC(rBCDMIN);
	prTime->hour =BCD2DEC(rBCDHOUR);
	prTime->date =BCD2DEC(rBCDDATE);
	prTime->month =BCD2DEC(rBCDMON);
	prTime->year =BCD2DEC(rBCDYEAR) + 2007;
}

void RTC_AlarmEnable(u_8 Almen, RTC_Time * prTime)
{
	rALMYEAR = DEC2BCD(prTime->year);
	rALMMON= DEC2BCD(prTime->month);
	rALMDAY= DEC2BCD(prTime->date);
	rALMHOUR= DEC2BCD(prTime->hour);
	rALMMIN= DEC2BCD(prTime->minute);
	rALMSEC= DEC2BCD(prTime->second);
	
	rRTCALM = Almen; // alarm interrupt or wake_up from power down mode.
}





⌨️ 快捷键说明

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