AT24C02
EEPROM 连续写入 Stop 与 Start 间加入延时 6ms
但是页写可不加
IIC_SendByte(); 函数定义后面 加上 IIC_WaitAck(void);
unsigned char Write_24C02(unsigned char add, unsigned char dat)
{
IIC_Start();
IIC_SendByte(0xa0); // AT24C02 写
IIC_SendByte(add); / 选择内存地址,题中没有要求就写 0x00, 写入哪里,就从哪里读出
IIC_SendByte(dat); // 数据写入内存地址
// 此处可以页写 连续写入八个数据,地址按照 0x00 ~ 0x07
// 或者 0x08 ~ 0x16 C02 人为划分了
IIC_Stop(); // 终止信号
}
PCF8591
读取 A/D 值,连续读取时,请关闭中断
unsigned char read_adc(unsigned char add)
{
unsigned char val = 0;
/0x90 0x91 PCF8591 写 读 0xa0 0xa1 AT24C02 写 读
IIC_Start();
IIC_SendByte(0x90); // MCU向:PCF8591 发送写设备
IIC_SendByte(add); // 传入的内存设备地址
/ 0x03 Rb2 0x01 光敏电阻 0x00 J3 A/D 输入
IIC_Start();
IIC_SendByte(0x91); // MCU向:PCF8591 发送读设备
val = IIC_RecByte(); // 读取 A/D 转换值
IIC_Stop();
return val;
}
写入 D/A 值
unsigned char Write_adc(unsigned char val)
{
IIC_Start();
IIC_SendByte(0x90); /PCF8591 的 DA 输出
IIC_SendByte(0x40);