📄 r_w_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 + -