在弄i2c的eeprom,写进去的跟读出来的数不一样,用4位数码管显示的,读取的eeprom值进行了强制类型转换,还是超出255,下面是程序一部分,数码管显示的是a694,第四位显示4是检测eeprom有回复。数码管是正常的。
void display_led(uchar x,uchar y)//x表示数码管位,从左到右:0-3;y为要显示的数字
{
P2=~(0x01<<x);
P3=table[y];
delay(10);
P2=0xff;
P3=0xff;//数码管消隐
}
void main()
{
uchar x,a,b,c;
bit y=1;
delay(15000);
y=eewrite(0x0f,1);//eeprom的地址0x0f处写入1
delay(60000);
delay(60000);
while(1)
{
x=0;
x=(uchar)eeread(0x0f);//读取0x0f地址的值
a=x/100;
b=x%100/10;
c=x%10;
display_led(0,a);
display_led(1,b);
display_led(2,c);
if(y==0)
{
display_led(3,4);
}
else
display_led(3,9);
delay(100);
}
}
|