微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机I2C总线协议的实现

51单片机I2C总线协议的实现

时间:11-27 来源:互联网 点击:

--------------------------------------------------------------------------------------

voidwriteNbyte(unsignedcharslave_add, unsignedcharn)

{

unsignedcharidata send_da,i=0;

iic_start();// 启动I2C

IICSendByte(slave_add);// 发送地址位

check_ACK();// 检查应答位

if(F0 == 1)

{

SystemError = 1;

return;// 若非应答表明器件错误或已坏,置错误标志位SystemError

}

while(n--)

{

send_da = sendbuf[i++];

IICSendByte(send_da);

check_ACK();// 检查应答位

if(F0 == 1)

{

SystemError=1;

return;// 若非应答表明器件错误或已坏,置错误标志位SystemError

}

}

iic_stop();// 全部发完则停止

}

//------------------------------------------------------------------------------------------------

// 函数名称: receiveNbyte

// 入口参数: slave_add从机地址,n要接收的数据个数

// 函数功能: 接收n位数据子程序

//------------------------------------------------------------------------------------------------

voidreceiveNbyte(unsignedcharidata slave_add, unsignedcharn)

{

unsignedcharidata receive_da,i=0;

iic_start();

IICSendByte(slave_add);

check_ACK();

if(F0 == 1)

{

SystemError = 1;

return;

}

while(n--)

{

receive_da=IICreceiveByte();

receivebuf[i++]=receive_da;

slave_ACK();// 收到一个字节后发送一个应答位

}

slave_NOACK();// 收到最后一个字节后发送一个非应答位

iic_stop();

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top