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

📄 rtc_eeprom.c.bak

📁 一个以前开发的实际应用的交通灯控制器程序
💻 BAK
字号:
#include "iic.h"
//////////////////////////////////////////////////////////////////////////

//RTC
void RTC_FirstInit()
{
	XBYTE[RTC_BASE+CtrlRegB]=0x80;//SET
	
	//XX:00:00
	XBYTE[RTC_BASE+RegSeconds]=0x00;
	XBYTE[RTC_BASE+RegSeconds_Alarm]=0x00;
	XBYTE[RTC_BASE+RegMinutes]=0x00;
	XBYTE[RTC_BASE+RegMinutes_Alarm]=0x00;
	XBYTE[RTC_BASE+RegHours]=0x00;
	XBYTE[RTC_BASE+RegHours_Alarm]=0xff;

	XBYTE[RTC_BASE+RegDay]=SYS_BEGIN_DAY;
	XBYTE[RTC_BASE+RegDate]=SYS_BEGIN_DATE;
	XBYTE[RTC_BASE+RegMonth]=SYS_BEGIN_MONTH;
	XBYTE[RTC_BASE+RegYear]=SYS_BEGIN_YEAR;
	XBYTE[RTC_BASE+RegCentury]=20;

	temp=XBYTE[RTC_BASE+CtrlRegC];//clear interrupts
	XBYTE[RTC_BASE+CtrlRegB]=0x37;//AIE+UIE+DM+24+DSE

	XBYTE[RTC_BASE+CtrlRegA]=0x20;//begin the oscilators
}

void RTC_GeneralInit()
{
	temp=XBYTE[RTC_BASE+CtrlRegC];//clear interrupts
	XBYTE[RTC_BASE+CtrlRegB]=0x37;//AIE+UIE+DM+24+DSE
}

//////////////////////////////////////////////////////////////////////////
//EEPROM
void EPR_Write(unsigned int addr,unsigned char dat)
{
	unsigned int xdata lgtemp;

//锁定不可写
	addr+=EEPROM_BASE;
	XBYTE[addr]=dat;
	lgtemp=1000;
	while (lgtemp)
	{
		temp=XBYTE[addr];
		if(temp==dat)
			break;
		lgtemp-=1;
	}
}

unsigned char EPR_Read(unsigned int addr)
{
	unsigned char xdata dat;
	addr+=EEPROM_BASE;
	dat=XBYTE[addr];
	return dat;
}

void EPR_Page_0()
{
	//缓冲页面
	EEPROM_PAGE = 0;
	EPRChangeFlag=1;
}

void EPR_Page_1()
{
	EEPROM_PAGE = 1;
}

void EPR_Reset()
{//重新恢复EEPROM
	unsigned int xdata i,k;
	EPR_Page_0();
	for(i=0;i<13*2;i++)
	{//一共26个相组
		for(k=0;k<7*8;k++)
			EPR_Write(i*PHASE_GROUP_LEN+k,DefaultPhaseGroup[k]);
	}
	k=0;
	for(i=0x0fff;i>ADDR_LOW_END;i--)
	{
		EPR_Write(i,DefaultSetting[k]);
		k++;
	}

	EPR_Page_1();
	for(i=0;i<13*2;i++)
	{//一共26个相组
		for(k=0;k<7*8;k++)
			EPR_Write(i*PHASE_GROUP_LEN+k,DefaultPhaseGroup[k]);
	}
	k=0;
	for(i=0x0fff;i>ADDR_LOW_END;i--)
	{
		EPR_Write(i,DefaultSetting[k]);
		k++;
	}
	
	EPRChangeFlag=0;
}

void EPR_CopyPage()
{
	unsigned int xdata i;
	unsigned char xdata k1,k2;
	for(i=0;i<13*2*PHASE_GROUP_LEN;i++)
	{
		EPR_Page_0();
		k1=EPR_Read(i);
		EPR_Page_1();
		k2=EPR_Read(i);
		if(k2!=k1)
			EPR_Write(i,k1);
	}
	
	for(i=0x0fff;i>ADDR_LOW_END;i--)
	
	EPRChangeFlag=0;
}
//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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