void BH1750_Cmd_Write(uint8_t cmd) { I2C_Start(); //起始信号 I2C_Send_Byte(BH1750_Addr+0); //发送设备地址+写信号 while(I2C_Wait_Ack())__NOP;; I2C_Send_Byte(cmd); //内部寄存器地址 while(I2C_Wait_Ack())__NOP;; I2C_Stop(); //发送停止信号 Delay_NOP_ms(5); }
/************************************************ * 函 数: AT24CXX_ReadByte(u16) * 功 能: 从AT24CXX指定地址读出一个字节数据 * * 参 数: addr - 开始读取的地址 * * 返回值: 读取到的字节数据 *************************************************/ u8 AT24CXX_ReadByte(u16 addr) { u8 ret_data = 0x00; I2C_Start(); if (AT24CXX > AT24C16) { I2C_Send_Byte(0XA0); // 发送写命令 I2C_Wait_Ack(); I2C_Send_Byte(addr>>8); // 发送高地址 I2C_Wait_Ack(); } else { // 发送器件地址0XA0, 写数据
void BH1750_Read(void) { I2C_Start(); //起始信号 I2C_Send_Byte(BH1750_Addr+1); //发送设备地址+读信号 while(I2C_Wait_Ack()); BH1750_Data_Buf[0]=I2C_Read_Byte(1); //发送ACK BH1750_Data_Buf[1]=I2C_Read_Byte(0); //发送NACK I2C_Stop(); //停止信号 Delay_NOP_ms(5); }