rtc.c

来自「这个是单片机4200的ui程序」· C语言 代码 · 共 126 行

C
126
字号
/******************************************************************************
*         Copyright (c) 2006 Primax Corporation,Ltd. All rights reserved.
*
* Author:            Junny Fu
*
* Description:     API of ZR4200 RTC
*
* Revision History:
* Date      Author   Description

******************************************************************************/

#include "RTC.h"
#include "Fireregs.h"
#include "Nucleus.h"



API_RET	EnableRTCAccess()
{
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x40);//WRITE_ADR(RTCCTL,0x40000000);
	
	WRITE_BYTE(RTCCTL+3,0xC0);//WRITE_ADR(RTCCTL,0xc0000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x40);//WRITE_ADR(RTCCTL,0x40000000);
	
	WRITE_BYTE(RTCCTL+3,0xC0);//WRITE_ADR(RTCCTL,0xc0000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);

	return API_OK;
}

API_RET	DisableRTCAccess()
{
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);
	
	WRITE_BYTE(RTCCTL+3,0x80);//WRITE_ADR(RTCCTL,0x80000000);
	
	WRITE_BYTE(RTCCTL+3,0x00);//WRITE_ADR(RTCCTL,0x00000000);

	return API_OK;
}

API_RET	SetRTC_C(Uint32 RTdata)
{
	Uint32 read;	

	WRITE_ADR(RTCCNT, RTdata);
	//WRITE_ADR(RTCCTL,0x00000001);
	WRITE_BYTE(RTCCTL,0x01);
	
	read = 0x01;
	while((read & 0x01) != 0)
	{
		NU_Sleep(20);
		read = READ_BYTE(RTCCTL);
	}
	
	return API_OK;
}

Uint32 ReadRTC_C()
{
	Uint32 read,RTdata;
	
	//WRITE_ADR(RTCCTL,0x00000003);
	WRITE_BYTE(RTCCTL,0x03);
	read = 0x01;
	while((read & 0x01) != 0)
	{
		read = READ_BYTE(RTCCTL);
//		NU_Sleep(20);
	}
	
	RTdata = READ_ADR(RTCCNT);
	
	return RTdata;
}

Bool IsRTCValid()
{
	Uint32 RTdata;
	
	RTdata = READ_BYTE(RTCCTL);
	if((RTdata & 0x04) != 0)
		return TRUE;
	else
		return FALSE;
}

API_RET	SetRTCValid()
{
//	Uint32 read;
	Uint8 RTdata;
	
	RTdata = 0x04;
	WRITE_BYTE(RTCCTL,RTdata);
/*	read = 0x05;
	while((read & 0x05) != 0x04)
	{
		read = READ_BYTE(RTCCTL);
	}
*/
	return API_OK;
}

⌨️ 快捷键说明

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