單片機對24C02的讀寫,有一點要注意的,就是關于延時的問題。讀寫操作的間隔時間不能太短,否則會導致在Proteus仿真時正常,實際應用出錯的結果。
下面是一個毫秒級延時程序:
void delay_ms(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
以下是部分操作24C02的程序:
init_24C02();//初始化24C02
delay_ms(20);//延時
write_add(1,18);//寫入數據1
delay_ms(20);//延時
write_add(2,92);//寫入數據2
delay_ms(20);//延時
write_add(3,56);//寫入數據3
delay_ms(20);//延時
for(i=1;i<4;i++)
{
delay_ms(10);
//write_add(0x02,12);
delay_ms(10);
n=read_add(i);//讀取數據
temp[i*2-2]=n/10;
temp[i*2-1]=n%10;
}
實際上,上面的程序在Proteus仿真時通過,但寫到板子上卻無法正常讀取剛剛寫入的數據。后來把延時參數增大到50,一切正常了!這說明合理的延時對讀寫24C02是至關重要的,特別是寫入數據后應該保證24C02有充分的歇息!