📄 24lc02.c
字号:
uchar read1byte(void)
{
uchar rdata = 0x00,i;
uchar flag;
for(i = 0;i < 8;i++)
{
SDA_H;
delay();
SCL_H;
SDA_in;
delay();
flag = SDA_val;
rdata <<= 1;
if(flag) rdata |= 0x01;
SDA_out;
SCL_L;
delay();
}
return rdata;
}
/*******************************************
函数名称:readNbyte
功 能:从IIC总线读取N个字节的数据
参 数:inbuffer--读取后数据存放的首地址
n--数据的个数
返回值 :无
********************************************/
void readNbyte(uchar * inbuffer,uchar n)
{
uchar i;
for(i = 0;i < n;i++)
{
inbuffer[i] = read1byte();
if(i < (n-1)) mack();
else mnack();
}
stop();
}
/*******************************************
函数名称:Write_1Byte
功 能:向EEPROM中写入1个字节的数据
参 数:Wdata--写入的数据
dataaddress--数据的写入地址
返回值 :写入结果:1--成功,0--失败
********************************************/
uchar Write_1Byte(uchar dataaddress,uchar wdata)
{
start();
write1byte(deviceaddress);
if(check())
write1byte(dataaddress);
else
return 0;
if(check())
write1byte(wdata);
else
return 0;
if(check()) stop();
else return 0;
delay_10ms(); //等待EEPROM完成内部写入
return 1;
}
/*******************************************
函数名称:Write_NByte
功 能:向EEPROM中写入N个字节的数据
参 数:outbuf--指向写入数据存放首地址的指针
n--数据个数,最大不能超过8,由页地址
决定其最大长度
dataaddress--数据写入的首地址
返回值 :写入结果:1--成功,0--失败
********************************************/
uchar WriteEEPROM (uchar dataaddress,uchar * outbuf,uchar n)
//uchar Write_NByte(,,)
{
uchar flag;
start();
write1byte(deviceaddress); //写入器件地址
if(check() == 1)
write1byte(dataaddress); //写入数据字地址
else
return 0;
if(check())
flag=writeNbyte(outbuf,n);
else
return 0;
delay_10ms(); //等待EEPROM完成内部写入
if(flag) return 1;
else return 0;
}
/*******************************************
函数名称:Read_1Byte_currentaddress
功 能:从EEPROM的当前地址读取1个字节的数据
参 数:无
返回值 :读取的数据
********************************************/
uchar Read_1Byte_currentaddress(void)
{
uchar temp;
start();
write1byte((deviceaddress|0x01));
if(check())
temp = read1byte();
else
return 0;
mnack();
stop();
return temp;
}
/*******************************************
函数名称:Read_NByte_currentaddress
功 能:从EEPROM的当前地址读取N个字节的数据
参 数:readbuf--指向保存数据地址的指针
n--读取数据的个数
返回值 :读取结果:1--成功,0--失败
********************************************/
uchar Read_NByte_currentaddress(uchar * readbuf,uchar n)
{
start();
write1byte((deviceaddress|0x01));
if(check())
readNbyte(readbuf,n);
else
return 0;
return 1;
}
/*******************************************
函数名称:Read_1Byte_Randomaddress
功 能:从EEPROM的指定地址读取1个字节的数据
参 数:dataaddress--数据读取的地址
返回值 :读取的数据
********************************************/
uchar Read_1Byte_Randomaddress(uchar dataaddress)
{
uchar temp;
start();
write1byte(deviceaddress);
if(check())
write1byte(dataaddress);
else
return 0;
if(check())
{
start();
write1byte((deviceaddress|0x01));
}
else
return 0;
if(check())
temp = read1byte();
else
return 0;
mnack();
stop();
return temp;
}
/*******************************************
函数名称:Read_NByte_Randomaddress
功 能:从EEPROM的指定地址读取N个字节的数据
参 数:readbuf--指向保存数据地址的指针
n--读取数据的个数
dataaddress--数据读取的首地址
返回值 :读取结果:1--成功,0--失败
********************************************/
//void ReadEEPROM(unsigned int wOffset,unsigned char *str,unsigned char count) //"Sequential READ
//uchar Read_NByte_Randomaddress(uchar * readbuf,uchar n,uchar dataaddress)
uchar ReadEEPROM(uchar dataaddress,uchar * readbuf,uchar n) //"Sequential READ
{
start();
write1byte(deviceaddress);
if(check())
write1byte(dataaddress);
else
return 0;
if(check())
{
start();
write1byte(deviceaddress|0x01);
}
else
return 0;
if(check())
readNbyte(readbuf,n);
else
return 0;
return 1;
}
float Varil;
void WriteSystemVar(U8 Flag)
{
//保存设置的值
WriteEEPROM(Mini_temperature_Addr, (unsigned char *)&envionment_variables.Mini_temperature, 4);
ReadEEPROM(Mini_temperature_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(Max_temperature_Addr, (unsigned char *)&envionment_variables.Max_temperature, 4);
ReadEEPROM(Max_temperature_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(Mini_humidity_Addr, (unsigned char *)&envionment_variables.Mini_humidity, 4);
ReadEEPROM(Mini_humidity_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(Max_humidity_Addr, (unsigned char *)&envionment_variables.Max_humidity, 4);
ReadEEPROM(Max_humidity_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(Zero_temperature_Addr, (unsigned char *)&envionment_variables.Zero_temperature, 4);
ReadEEPROM(Zero_temperature_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(Zero_humidity_Addr, (unsigned char *)&envionment_variables.Zero_humidity, 4);
ReadEEPROM(Zero_humidity_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(TC_CurrentType_Addr, (unsigned char *)&envionment_variables.TC_CurrentType, 4);
ReadEEPROM(TC_CurrentType_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(RH_CurrentType_Addr, (unsigned char *)&envionment_variables.RH_CurrentType, 4);
ReadEEPROM(RH_CurrentType_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(TC_DA4mA_Addr, (unsigned char *)&envionment_variables.TC_DA4mA, 4);
ReadEEPROM(TC_DA4mA_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(TC_DA20mA_Addr, (unsigned char *)&envionment_variables.TC_DA20mA, 4);
ReadEEPROM(TC_DA20mA_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(RH_DA4mA_Addr, (unsigned char *)&envionment_variables.RH_DA4mA, 4);
ReadEEPROM( RH_DA4mA_Addr, (unsigned char *)&Varil, 4);
WriteEEPROM(RH_DA20mA_Addr, (unsigned char *)&envionment_variables.RH_DA20mA, 4);
ReadEEPROM(RH_DA20mA_Addr, (unsigned char *)&Varil, 4);
if(Flag == 0)
{
for(U8 i = 0;i<9;i++)
{
WriteEEPROM(TCDATable_Addr+i*2, (unsigned char *)&envionment_variables.TCDATable[i], 2);
}
for(U8 i = 0;i<9;i++)
{
WriteEEPROM(RHDATable_Addr+i*2, (unsigned char *)&envionment_variables.RHDATable[i], 2);
}
}
}
void ReadSystemVar(U8 Flag)
{
ReadEEPROM(Mini_temperature_Addr, (unsigned char *)&envionment_variables.Mini_temperature, 4);
ReadEEPROM(Max_temperature_Addr, (unsigned char *)&envionment_variables.Max_temperature, 4);
ReadEEPROM(Mini_humidity_Addr, (unsigned char *)&envionment_variables.Mini_humidity, 4);
ReadEEPROM(Max_humidity_Addr, (unsigned char *)&envionment_variables.Max_humidity, 4);
ReadEEPROM(Zero_temperature_Addr, (unsigned char *)&envionment_variables.Zero_temperature, 4);
ReadEEPROM(Zero_humidity_Addr, (unsigned char *)&envionment_variables.Zero_humidity, 4);
ReadEEPROM(TC_CurrentType_Addr, (unsigned char *)&envionment_variables.TC_CurrentType, 4);
ReadEEPROM(RH_CurrentType_Addr, (unsigned char *)&envionment_variables.RH_CurrentType, 4);
ReadEEPROM(TC_DA4mA_Addr, (unsigned char *)&envionment_variables.TC_DA4mA, 4);
ReadEEPROM(TC_DA20mA_Addr, (unsigned char *)&envionment_variables.TC_DA20mA, 4);
ReadEEPROM(RH_DA4mA_Addr, (unsigned char *)&envionment_variables.RH_DA4mA, 4);
ReadEEPROM(RH_DA20mA_Addr, (unsigned char *)&envionment_variables.RH_DA20mA, 4);
if(Flag == 0)
{
for(U8 i = 0;i<9;i++)
{
ReadEEPROM(TCDATable_Addr+i*2, (unsigned char *)&envionment_variables.TCDATable[i], 2);
}
for(U8 i = 0;i<9;i++)
{
ReadEEPROM(RHDATable_Addr+i*2, (unsigned char *)&envionment_variables.RHDATable[i], 2);
}
}
}
float FacVaril;
void WriteFacSystemVar()
{
//保存设置的值
WriteEEPROM(Fac_Addr + Mini_temperature_Addr, (unsigned char *)&envionment_variables.Mini_temperature, 4);
ReadEEPROM(Fac_Addr +Mini_temperature_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr +Max_temperature_Addr, (unsigned char *)&envionment_variables.Max_temperature, 4);
ReadEEPROM(Fac_Addr +Max_temperature_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + Mini_humidity_Addr, (unsigned char *)&envionment_variables.Mini_humidity, 4);
ReadEEPROM(Fac_Addr + Mini_humidity_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + Max_humidity_Addr, (unsigned char *)&envionment_variables.Max_humidity, 4);
ReadEEPROM(Fac_Addr + Max_humidity_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + Zero_temperature_Addr, (unsigned char *)&envionment_variables.Zero_temperature, 4);
ReadEEPROM(Fac_Addr + Zero_temperature_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + Zero_humidity_Addr, (unsigned char *)&envionment_variables.Zero_humidity, 4);
ReadEEPROM(Fac_Addr + Zero_humidity_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + TC_CurrentType_Addr, (unsigned char *)&envionment_variables.TC_CurrentType, 4);
ReadEEPROM(Fac_Addr + TC_CurrentType_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + RH_CurrentType_Addr, (unsigned char *)&envionment_variables.RH_CurrentType, 4);
ReadEEPROM(Fac_Addr + RH_CurrentType_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + TC_DA4mA_Addr, (unsigned char *)&envionment_variables.TC_DA4mA, 4);
ReadEEPROM(Fac_Addr + TC_DA4mA_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + TC_DA20mA_Addr, (unsigned char *)&envionment_variables.TC_DA20mA, 4);
ReadEEPROM(Fac_Addr + TC_DA20mA_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + RH_DA4mA_Addr, (unsigned char *)&envionment_variables.RH_DA4mA, 4);
ReadEEPROM(Fac_Addr + RH_DA4mA_Addr, (unsigned char *)&FacVaril, 4);
WriteEEPROM(Fac_Addr + RH_DA20mA_Addr, (unsigned char *)&envionment_variables.RH_DA20mA, 4);
ReadEEPROM(Fac_Addr + RH_DA20mA_Addr, (unsigned char *)&FacVaril, 4);
}
void ReadFacSystemVar()
{
ReadEEPROM(Fac_Addr + Mini_temperature_Addr, (unsigned char *)&envionment_variables.Mini_temperature, 4);
ReadEEPROM(Fac_Addr + Max_temperature_Addr, (unsigned char *)&envionment_variables.Max_temperature, 4);
ReadEEPROM(Fac_Addr + Mini_humidity_Addr, (unsigned char *)&envionment_variables.Mini_humidity, 4);
ReadEEPROM(Fac_Addr + Max_humidity_Addr, (unsigned char *)&envionment_variables.Max_humidity, 4);
ReadEEPROM(Fac_Addr + Zero_temperature_Addr, (unsigned char *)&envionment_variables.Zero_temperature, 4);
ReadEEPROM(Fac_Addr + Zero_humidity_Addr, (unsigned char *)&envionment_variables.Zero_humidity, 4);
ReadEEPROM(Fac_Addr + TC_CurrentType_Addr, (unsigned char *)&envionment_variables.TC_CurrentType, 4);
ReadEEPROM(Fac_Addr + RH_CurrentType_Addr, (unsigned char *)&envionment_variables.RH_CurrentType, 4);
ReadEEPROM(Fac_Addr + TC_DA4mA_Addr, (unsigned char *)&envionment_variables.TC_DA4mA, 4);
ReadEEPROM(Fac_Addr + TC_DA20mA_Addr, (unsigned char *)&envionment_variables.TC_DA20mA, 4);
ReadEEPROM(Fac_Addr + RH_DA4mA_Addr, (unsigned char *)&envionment_variables.RH_DA4mA, 4);
ReadEEPROM(Fac_Addr + RH_DA20mA_Addr, (unsigned char *)&envionment_variables.RH_DA20mA, 4);
}
void InitSettting()
{
unsigned char aucTemp[2];
U16 DAPWM,DAPWM0;
ReadEEPROM(140, aucTemp, 2);
if((aucTemp[0]!=0x55) && (aucTemp[1]!=0x55) )
//if((aucTemp[0]!=0x51) && (aucTemp[1]!=0x51) )
{
envionment_variables.Mini_temperature = 0.0;
envionment_variables.Max_temperature = 50.0;
envionment_variables.Mini_humidity = 0.0;
envionment_variables.Max_humidity = 100.0;
envionment_variables.Zero_temperature = 0.0;
envionment_variables.Zero_humidity = 0.0;
envionment_variables.TC_CurrentType = 4.0;
envionment_variables.RH_CurrentType = 4.0;
envionment_variables.TC_DA4mA = 999;
envionment_variables.TC_DA20mA = 100;
envionment_variables.RH_DA4mA = 999;
envionment_variables.RH_DA20mA = 100;
// 985 75
DAPWM = 985;
DAPWM0 = 910/8;
envionment_variables.TCDATable[0] = DAPWM;//4
DAPWM -= DAPWM0;
envionment_variables.TCDATable[1] = DAPWM;//6
DAPWM -= DAPWM0;
envionment_variables.TCDATable[2] = DAPWM;//8
DAPWM -= DAPWM0;
envionment_variables.TCDATable[3] = DAPWM;//10
DAPWM -= DAPWM0;
envionment_variables.TCDATable[4] = DAPWM;//12/
DAPWM -= DAPWM0;
envionment_variables.TCDATable[5] = DAPWM;//14
DAPWM -= DAPWM0;
envionment_variables.TCDATable[6] = DAPWM;//16
DAPWM -= DAPWM0;
envionment_variables.TCDATable[7] = DAPWM;//16
DAPWM -= DAPWM0;
envionment_variables.TCDATable[8] = DAPWM;//18
DAPWM = 985;
envionment_variables.RHDATable[0] = DAPWM;//4
DAPWM -= DAPWM0;
envionment_variables.RHDATable[1] = DAPWM;//6
DAPWM -= DAPWM0;
envionment_variables.RHDATable[2] = DAPWM;//8
DAPWM -= DAPWM0;
envionment_variables.RHDATable[3] = DAPWM;//10
DAPWM -= DAPWM0;
envionment_variables.RHDATable[4] = DAPWM;//12/
DAPWM -= DAPWM0;
envionment_variables.RHDATable[5] = DAPWM;//14
DAPWM -= DAPWM0;
envionment_variables.RHDATable[6] = DAPWM;//16
DAPWM -= DAPWM0;
envionment_variables.RHDATable[7] = DAPWM;//16
DAPWM -= DAPWM0;
envionment_variables.RHDATable[8] = DAPWM;//18
aucTemp[0]=aucTemp[1]=0x55;
WriteSystemVar(0);
ReadSystemVar(0);
WriteEEPROM(140, aucTemp, 2);
}
else
{
ReadSystemVar(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -