while(1)
{
i=AT24CXX_ReadOneByte(key);
printf("key=%d,i=%d, \n", key,i);
LED0=!LED0;//DS0éá˸
delay_us(10);
key++;
i++;
AT24CXX_WriteOneByte(key,i);
delay_ms(20);
}
请教原子哥这是实验24c02读写主程序部分,key是写入的地址,i是写入的数据,为什么地址变,数据不变,地址和数据都是执行的void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)这个函数,pintf出来的结构请看
key=0,i=27,
key=1,i=0,
key=2,i=0,
key=3,i=0,
key=4,i=0,
key=5,i=0,
key=6,i=0,
key=7,i=0,
key=8,i=0,
key=9,i=0,
key=10,i=0,
key=11,i=0,
key=12,i=0,
key=13,i=0,
key=14,i=0,
key=15,i=0,
key=16,i=255,
key=17,i=255,
key=18,i=255,
key=19,i=255,
key=20,i=255,
key=21,i=255,
key=22,i=255,
key=23,i=255,
key=24,i=255,
key=25,i=255,
key=26,i=255,
key=27,i=255,
key=28,i=255,
key=29,i=255,
key=30,i=255,
key=31,i=255,
key=32,i=255,
key=33,i=255,
key=34,i=255,
key=35,i=255,
key=36,i=255,
key=37,i=255,
key=38,i=255,
key=39,i=255,
key=40,i=255,
key=41,i=255,
key=42,i=255,
key=43,i=255,
key=44,i=255,
key=45,i=255,
key=46,i=255,
key=47,i=255,
key=48,i=255,
key=49,i=255,
key=50,i=255,
key=51,i=255,
key=52,i=255,
key=53,i=255,
key=54,i=255,
key=55,i=255,
key=56,i=255,
key=57,i=255,
key=58,i=255,
key=59,i=255,
key=60,i=255,
key=61,i=255,
key=62,i=255,
key=63,i=255,
key=64,i=255,
key=65,i=255,
key=66,i=255,
key=67,i=255,
key=68,i=255,
key=69,i=255,
key=70,i=255,
key=71,i=255,
key=72,i=255,
key=73,i=255,
key=74,i=255,
key=75,i=255,
key=76,i=255,
key=77,i=255,
key=78,i=255,
key=79,i=255,
key=80,i=255,
key=81,i=255,
key=82,i=255,
key=83,i=255,
key=84,i=255,
key=85,i=255,
key=86,i=255,
key=87,i=255,
key=88,i=255,
key=89,i=255,
key=90,i=255,
key=91,i=255,
key=92,i=255,
key=93,i=255,
key=94,i=255,
key=95,i=255,
key=96,i=255,
key=97,i=255,
key=98,i=255,
key=99,i=255,
key=100,i=255,
key=101,i=255,
key=102,i=255,
key=103,i=255,
key=104,i=255,
key=105,i=255,
key=106,i=255,
key=107,i=255,
key=108,i=255,
key=109,i=255,
key=110,i=255,
key=111,i=255,
key=112,i=255,
key=113,i=255,
key=114,i=255,
key=115,i=255,
key=116,i=255,
key=117,i=255,
逻辑分析仪检测的波形
上图是读,下图是写,发现写数据,函数没有执行i里面的数据,上面的key和i的值,一直都不变,写不成功,数据部分也传递不进去,使用的是战舰版的IIC实验,没有找到问题在哪,请原子哥分析一下,多谢
void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;//à-μíê±Öó¿aê¼êy¾Y′«êä
for(t=0;t<8;t++)
{
IIC_SDA=(txd&0x80)>>7;
// if((txd&0x80)>>7)
// IIC_SDA=1;
// else
// IIC_SDA=0;
txd<<=1;
delay_us(2); //¶ÔTEA5767Õaèy¸öÑóê±¶¼êDZØDëμÄ
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
delay_us(2);
}
}
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{
IIC_Start();
// if(EE_TYPE>AT24C16)
// {
// IIC_Send_Byte(0XA0); //·¢ËíD′Ãüáî
// IIC_Wait_Ack();
// IIC_Send_Byte(WriteAddr>>8);//·¢Ëí¸ßμØÖ·
// }else
IIC_Send_Byte(0XA0);//+((WriteAddr/256)<<1)); //·¢ËíÆ÷¼tμØÖ·0XA0,D′êy¾Y
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr%256); //·¢ËíμíμØÖ·
IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite); //·¢Ëí×Ö½ú
IIC_Wait_Ack();
IIC_Stop();//2úéúò»¸öí£Ö1ìõ¼t
delay_ms(10);
}
|