#2
小焦叔叔2020-07-14 23:56
|
void Init_IIC()
{
P0M1=0x03;
P0M0=0x03;
SCL=0;
SDA=0;
}
void Reset_IIC()
{
unsigned char i;
SCL=0;
SDA=1;
for(i=0;i<16;i++)
{
SCL=1;
Delay_uS();
//Feleer();
while(SDA==0);
//Feleer();
SCL=0;
Delay_uS();
}
//Start_IIC();
//Feleer();
}
void Start_IIC()
{
SDA=1;
Delay_uS();
SCL=1;
Delay_uS();
SDA=0;
Delay_uS();
SCL=0;
Delay_uS();
}
void Stop_IIC()
{
SCL=0;
Delay_uS();
SDA=0;
Delay_uS();
SCL=1;
Delay_uS();
SDA=1;
}
void Addr_Dive(unsigned char addr_dive,bit p0,bit opr)
{
//Write_Byte(addr_dive|((unsigned char)p0)<<1|opr);
Write_Byte(0x50<<1);
//Feleer();
while(Read_ACK());
Feleer();
}
void Addr_Word(unsigned char addr_word)
{
Write_Byte(addr_word);
while(Read_ACK());
}
void Write_Byte(unsigned char byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCL=0;
Delay_uS();
if(byte&(0x80>>i))
{
SDA=1;
}
else
{
SDA=0;
}
Delay_uS();
SCL=1; //上升沿写入
Delay_uS();
}
SCL=0;
}
bit Read_ACK()
{
bit ack;
SCL=0;
Delay_uS();
SDA=1;
Delay_uS();
SCL=1;
Delay_uS();
SCL=0; //下降沿输出
ack=SDA;
return(ack);
}
void Delay_uS()
{
;
}
搞了好久还是没寻址成功......哪位做过2片AT24C1024读写的网友,说明书上面关于复位的2点说明是什么意思?有空的时候可否指点一下,谢谢啦!!!
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
[此贴子已经被作者于2020-7-12 23:23编辑过]