资深版主
 
- 积分
- 12012
- 金钱
- 12012
- 注册时间
- 2013-9-10
- 在线时间
- 427 小时
|

楼主 |
发表于 2013-9-16 14:46:57
|
显示全部楼层
回复【2楼】lxj19901115:
---------------------------------
我的连续读取代码
//从总线上挂的24cxx EEPROM读取n个字节数据
//slave_add:总线上设备地址
//start_add:读取数据起始地址
//*buff:读取数据存放缓存
//sum:要读取数组的数目
void EEPROM_Read_nByte(u8 slave_add,u8 start_add,u8 *buff,u8 sum)
{
u8 i;
IIC_Start();
if(!(IIC_Write_Byte(slave_add))) //发送设备地址并判断是否应答
{
IIC_Write_Byte(start_add); //发送读取数据起始地址
IIC_Start(); //重启总线
if(!(IIC_Write_Byte(slave_add + 1))) //发送读取命令
{
for(i = 0;i < sum;i++)
{
*buff = IIC_Read_Byte(); //读取数据放入缓存
buff++;
if(i == (sum - 1)) IIC_Send_Ack(0x01); //接收完最后一个字节发送非应答信号
else IIC_Send_Ack(0x00); //每接收一个字节发送一个应答信号
}
}
}
IIC_Stop();
delay_ms(2);
} |
|