PCF8591中整合了AD转换和EEPROM两个功能
虽然给出驱动程序,但使用仍需要写几个子函数用于调用
AD转换程序
uchar AD_Read(uchar add)
{
uchar temp;
IIC_Start();
IIC_SenByte(0x90);
IIC_WaitAck();
IIC_SenByte(add);
IIC_WaitAck();
IIC_Stop();
//================== start switch
IIC_Start();
IIC_SenByte(0x91);
IIC_WaitAck();
temp = IIC_RecByte();
IIC_Stop();
return temp;
}
EEROM写入函数
void EEPROM_Write(uchar add, uchar dat)
{
IIC_Start();
IIC_SenByte(0xa0); //write operating
IIC_WaitAck();
IIC_SenByte(add);// write address if 0x10
IIC_WaitAck();
IIC_SenByte(dat);// write date if 234
IIC_WaitAck();
IIC_Stop();
}
EEPROM读取函数
uchar EEPROM_Read(uchar add)
{
uchar temp;
IIC_Start();
IIC_SenByte(0xa0); //read operating
IIC_WaitAck();
IIC_SenByte(add);//write need read is address
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SenByte(0xa1);//read operating
IIC_WaitAck();
temp = IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
return temp;
}
值得注意的是我们使用的是1T单片机,但驱动程序给出的代码都是基于12T,所以所有延时需扩大12倍
故someop此宏定义需复制多几遍_NOP_();