新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2018-1-30
- 在线时间
- 5 小时
|
//3õê¼»ˉIIC½ó¿ú
void AT24CXX_Init(void)
{
IIC_Init();
}
//ÔúAT24CXXÖ¸¶¨μØÖ·¶á3öò»¸öêy¾Y
//ReadAddr:¿aê¼¶áêyμÄμØÖ·
//·μ»ØÖμ :¶áμ½μÄêy¾Y
u8 AT24CXX_ReadOneByte_A1(u16 ReadAddr)
{
u8 temp=0;
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA6); //·¢ËíD′ÃüáîA0
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//·¢Ëí¸ßμØÖ·
}else IIC_Send_Byte(0XA6+((ReadAddr/256)<<1)); //·¢ËíÆ÷¼tμØÖ·0XA0,D′êy¾Y
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //·¢ËíμíμØÖ·
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0XA7); //½øèë½óêÕÄ£ê½A1
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();//2úéúò»¸öí£Ö1ìõ¼t
return temp;
}
//ÔúAT24CXXÖ¸¶¨μØÖ·D′èëò»¸öêy¾Y
//WriteAddr ′èëêy¾YμÄÄ¿μÄμØÖ·
//DataToWrite:òaD′èëμÄêy¾Y
void AT24CXX_WriteOneByte_A1(u16 WriteAddr,u8 DataToWrite)
{
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA6); //·¢ËíD′Ãüáî
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//·¢Ëí¸ßμØÖ·
}else IIC_Send_Byte(0XA6+((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_us(10*1000);
}
//----------------------------------
//ÔúAT24CXXÖ¸¶¨μØÖ·¶á3öò»¸öêy¾Y
//ReadAddr:¿aê¼¶áêyμÄμØÖ·
//·μ»ØÖμ :¶áμ½μÄêy¾Y
u8 AT24CXX_ReadOneByte_A2(u16 ReadAddr)
{
u8 temp=0;
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //·¢ËíD′ÃüáîA0
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//·¢Ëí¸ßμØÖ·
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //·¢ËíÆ÷¼tμØÖ·0XA0,D′êy¾Y
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //·¢ËíμíμØÖ·
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0XA1); //½øèë½óêÕÄ£ê½A1
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();//2úéúò»¸öí£Ö1ìõ¼t
return temp;
}
//------------------------
//ÔúAT24CXXÖ¸¶¨μØÖ·D′èëò»¸öêy¾Y
//WriteAddr ′èëêy¾YμÄÄ¿μÄμØÖ·
//DataToWrite:òaD′èëμÄêy¾Y
void AT24CXX_WriteOneByte_A2(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_us(10*1000);
}
|
|