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

📄 rtc.c

📁 这个是单片机4200的ui程序
💻 C
字号:
/******************************************************************************
*         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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -