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

📄 r_w_sd2304.txt

📁 这是时钟芯片时SD2304的底层访问函数。希望大家能有用。
💻 TXT
字号:

//*************写SD2304时钟芯片************************//

void wr2304byte(unsigned char cmd,unsigned char add,unsigned char data)
{
	i2c_start();
	i2c_write(cmd);
	i2c_write(add);
	i2c_write(data);
	i2c_stop();
}

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

void  write2304(void)
{

	restart_wdt();
	wr2304byte(0x64,0x10,realtime.time.min);	//分钟
	wr2304byte(0x64,0x20,realtime.time.hour);	//小时
	wr2304byte(0x64,0x40,realtime.time.date);	//天
//	wr2304byte(0x64,0x50,realtime.time.month);	//月
//	wr2304byte(0x64,0x60,realtime.time.year);	//年
	wr2304byte(0x64,0x70,0x00);
	wr2304byte(0x64,0xf0,0x20);  //24小时制,秒调整,禁止32K脉冲输出
}


//**********************读SD2304实时时钟*********************//
void  read2304(unsigned char cmd,unsigned char add,unsigned char mmd)
{
	UCHAR i;

	restart_wdt();
	i2c_start();
	i2c_write(cmd);
	i2c_write(add);
	i2c_start();
	i2c_write(mmd);
//	i=i2c_read();
	realtime.time.min=i2c_read();
	realtime.time.hour=i2c_read();
	i=i2c_read();
	realtime.time.date=i2c_read();
	realtime.time.month=i2c_read();
	realtime.time.year=i2c_read();
	i2c_stop();
}
void dis_hour()
{
	long int	sethour;


	//$$$$$$$$$$$$$$$$$$$$$$$$$$$CS_LCD 为低电平 SPI设为从动方式,与LCD板通信 $$$$$$$$$$$$$//
	if(EXT1_LOW_FLAG)			//cs是否为低电平
	{
		output_low(INHIBIT);	//禁止语音芯片APR9600和电能表数据
		output_low(PCS);		//选通LCD板的SPI
		init_spi(slave);		
		delay_us(5);
//		protocol_deal();		//调用与LCD板通讯的协议处理	

	}
		
	if(!EXT1_LOW_FLAG)
	{
		disable_interrupts(int_ssp);
		//******************** CS_LCD是高电平,读SD2304 *********************//
		ON_I2C_SPI=1;

		output_low(INHIBIT);	//禁止语音芯片APR9600和电能表数据
		output_high(PCS);		//选通SD2304的I2C
		delay_us(5);
//		write2304();

			read2304(0x64,0x10,0x65);	//读取分、时,日,月,年
		//	read2304(0x64,0x00,0x65);


		delay_us(5);
		//******************* CS_LCD是高电平,读电能表数据 *******************//
		if(read_att7026_flag==1)
		{
		output_high(INHIBIT);	//禁止读写SD2304和与LCD板通讯
		output_low(PCS);		//选通电能表数据
		init_spi(master);
		delay_us(5);
		ReadReal();
		Verify();
		while(1)
			Readreal();//读电能芯片7026A的数据
		RS_getcmd();
		init_spi(slave);
		read_att7026_flag=0;
		}
		//******************* CS_LCD是高电平,读APR9600 **********************//
		output_high(INHIBIT);	//禁止读写SD2304和与LCD板通讯
		output_high(PCS);		//选通语音芯片APR9600
		ON_I2C_SPI=0;

		if(EXT1_LOW_FLAG)
		{
		//处理完读写SD2304或电能表数据后,再检测EXT2(CS)是否是低电平
			output_low(INHIBIT);	//禁止语音芯片APR9600和电能表数据
			output_low(PCS);		//选通LCD板的SPI	
			init_spi(slave);		//配置成从动模式,开中断

		}
	}
	//$$

⌨️ 快捷键说明

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