模拟IIC程序
时间:10-02
整理:3721RD
点击:
MSP430F149 片子 模拟IIC程序
外部晶振8M 一条指令执行时间在1-6us
AT24C256 A0A1A2接到
现在我要做的第一件事情是:发送一个字节到器件AT24C256 然后接收应答 IC反回来的回应应该是低电平,但是我这里一直是高 朋友帮忙 看看为什么 不甚感激啊
void StorageStart(void)
{
SDA_H;
OSRdyTbl(55);
SCK_H;
OSRdyTbl(55);
SDA_L;
OSRdyTbl(55);
}
uchar iic_Answer(uchar number)
{
uchar i=0;
for(i=0;i<8;i++)
{
SCK_L;
OSRdyTbl(55);
if(number&0x80==0x80)
{ SDA_H;
}
else
{
SDA_L;
}
SCK_H;
OSRdyTbl(55);
number<<=1;
}
SCK_H;
OSRdyTbl(55);
P5DIR&=0xdf;
if((P5IN&0x20)==0x20)
return 0;
else
return 1;
}
main()
{
.....
C_WP;//去除写保护 0
OSRdyTbl(55);
StorageStart();//起始
flag=iic_Answer(0xa0);//发送a0 并且返回 回应
OSRdyTbl(55);//延时
OSRdyTbl(55);
}
外部晶振8M 一条指令执行时间在1-6us
AT24C256 A0A1A2接到
现在我要做的第一件事情是:发送一个字节到器件AT24C256 然后接收应答 IC反回来的回应应该是低电平,但是我这里一直是高 朋友帮忙 看看为什么 不甚感激啊
void StorageStart(void)
{
SDA_H;
OSRdyTbl(55);
SCK_H;
OSRdyTbl(55);
SDA_L;
OSRdyTbl(55);
}
uchar iic_Answer(uchar number)
{
uchar i=0;
for(i=0;i<8;i++)
{
SCK_L;
OSRdyTbl(55);
if(number&0x80==0x80)
{ SDA_H;
}
else
{
SDA_L;
}
SCK_H;
OSRdyTbl(55);
number<<=1;
}
SCK_H;
OSRdyTbl(55);
P5DIR&=0xdf;
if((P5IN&0x20)==0x20)
return 0;
else
return 1;
}
main()
{
.....
C_WP;//去除写保护 0
OSRdyTbl(55);
StorageStart();//起始
flag=iic_Answer(0xa0);//发送a0 并且返回 回应
OSRdyTbl(55);//延时
OSRdyTbl(55);
}
看不懂~~~~~