|
发表于 2009-4-1 08:07:35
|
显示全部楼层
void write_add(unsigned char address,unsigned char date)
{
bit ack;
I2C_start(); //开始信号
ack=I2C_write(0xa2); //写要寻的设备地址 既8563的地址 //找芯片所在地址
// if(ack==0) DisplayOneChar(0,14,'e'); // //调用应答信号
I2C_write(address); //写控制寄存器00H //找芯片内部存储器地址
delay_us(20);
I2C_write(date); //写入的内容为 // 写入数据,写进芯片内部存储器
I2C_stop(); //停止信号 //调用终止信号子程序,终止信号写入
}
void write_8563(unsigned char w_miao,unsigned char w_fen,unsigned char w_shi,unsigned char w_day,unsigned char w_week,unsigned char w_month,unsigned char w_year)
{
//I2C_init();//init();
I2C_start(); //开始信号//调用起始信号子程序
write_add(0x00,0x00); //写控制字
delay_us(2000);
write_add(0x01,0x00); //写中断控制字
write_add(0x02, w_miao); //写秒的初始值
delay_us(2000);
write_add(0x03,w_fen);
delay_us(200);
write_add(0x4,w_shi);
delay_us(2000);
write_add(0x05,w_day);
delay_us(2000);
write_add(0x06,w_week);
delay_us(2000);
write_add(0x7,w_month);
delay_us(2000);
write_add(0x8,w_year);
delay_us(2000);
}
在main()中是这样调用这个函数来初始化的:
write_8563(0x51,0x59,0x23,0x11,0x01,0x09,0x2008);//初始化秒 分 时,日,星期,月,年
能读出来秒位是0X51,但是一直不变,分和年也一样,写入什么,读出的也是什么,大家看是什么回事?共用的I2C的读写24C16G正常. |
|