51单片机IIC总线通信 20

有一个缓存数组xdataunsignedcharBuffer[13]=“123456781467”;用IIC总线保存到24c64eeprom中延时一会然后读出... 有一个缓存数组
xdata unsigned char Buffer[13]=“123456781467”;
用IIC总线保存到24c64eeprom中
延时一会
然后读出
展开
 我来答
欲伤之叶
2013-11-18 · 超过23用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:50.8万
展开全部
我把iic通信的代码给你吧
/**************************************
向IIC总线发送一个字节数据
**************************************/
/*******************************/
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
{;}}
}

/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5us()
{
_nop_();_nop_();_nop_();_nop_();
_nop_();/*_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_(); */
}

/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5ms()
{
WORD n = 1000;

while (n--)
{
_nop_();_nop_();_nop_();_nop_();
};
}
void MMA8452_SendByte(BYTE dat)
{
BYTE i;

for (i=0; i<8; i++) //8位计数器
{
dat <<= 1; //移出数据的最高位
SDA = CY; //送数据口
SCL = 1; //拉高时钟线
Delay5us(); //延时
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
MMA8452_RecvACK();
}

/**************************************
从IIC总线接收一个字节数据
**************************************/
BYTE MMA8452_RecvByte()
{
BYTE i;
BYTE dat = 0;

SDA = 1; //使能内部上拉,准备读取数据,
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1;
SCL = 1; //拉高时钟线
Delay5us(); //延时
dat |= SDA; //读数据
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
return dat;
}

这是我以前读取传感器信息时候用的。正好是iic通信的那部分,你自己学一下iic吧,我的程序是没问题的哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式