声明:代码确实写的不好,用的都是最笨的方法实现功能,不喜勿喷
对于EEPROM来说难就难在怎样看懂时序图,说实话其实我自己有的时候也看不太懂,我一般都会借助一下视屏来好好的理解一下。EEPROM在蓝桥板的电路图如下:
它的datasheet大家去百度就可以了,百度上有很多,在乎这里我只给出我自己写的关于EEPROM的驱动函数,供大家参考一下:
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
//IIC开始函数
void IIC_statrt(void)
{
SDA = 1;
_nop_();
SCL = 1;
_nop_();
SDA = 0;
_nop_();
SCL = 0;
}
//IIC停止函数
void IIC_stop(void)
{
SDA = 0;
_nop_();
SCL = 1;
_nop_();
SDA = 1;
}
//将地址和数据写进IIC
void IIC_write(uchar add ,uchar dat)
{
IIC_statrt();
writebyte(0xa0);
ACK();
writebyte(add);
ACK();
writebyte(dat);
ACK();
IIC_stop();
Delay10ms();Delay10ms();//一定要加
}
//向IIC写一个字节
void writebyte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
SCL = 0;
_nop_();