📄 lm75.h
字号:
// lm75
unsigned int lm75_remain_clk;// bu cang sheng xia de ge shu(clk)
#define eeprom_rtc8025_addclk_by_ic EPLOCK_TIMER_8025_CLOCK
//ADD 2005-1-6----------------->START
unsigned char lm75_wrnbyte(ad,b)
//ad word adderss, b word counter
unsigned char ad,b;
{unsigned char i,value;
rtc_8025star();
rtc_8025wbyte(0x90);
if(1==rtc_8025chack())
{rtc_8025wbyte(ad);
if(1==rtc_8025chack()) //word adderss
{value=1;
for (i=0;i<b;i++)
{
rtc_8025wbyte(rtc8025_timevalue[i]);
if(0==rtc_8025chack())
{value=0;
//date
i=b;
}
}
}
else
value=0;
}
else
value=0;
rtc_8025stop();
return value;
}
unsigned char lm75_rdnbyte(ad,b) //ad word adderss, b word counter
unsigned char ad,b;
{unsigned char i,value;
value=1;
rtc_8025star();
rtc_8025wbyte(0x90);
if(1==rtc_8025chack())
{rtc_8025wbyte(ad);
if(1==rtc_8025chack())
{rtc_8025star();
rtc_8025wbyte(0x91);
if(1==rtc_8025chack())
for (i=0;i<b;i++)
{
rtc8025_timevalue[i]=rtc_8025rbyte();
if (i+1<b) rtc_8025ack();
else rtc_8025noack();
}
else value=0;
}
else value=0;
}
else value=0;
rtc_8025stop();
return value;
}
void lm75_adset()
{rtc8025_timevalue[0]=00;
rtc8025_timevalue[1]=00;
lm75_wrnbyte(01,2);
}
void lm75_lowpower()
{rtc8025_timevalue[0]=01;
rtc8025_timevalue[1]=01;
lm75_wrnbyte(01,2);
}
//const unsigned char table_lm75[]={0,0,0,1,1,1,2,2,3,3,4,5,5,6,7,8,9,10,12,13,14,16,17,19,20,22,23,25,27,
// 29,31,33,35,37,39,42,44,46,49,52,54,57,60,62,65,68,71,74,77,80,84,
// 87,90,94,97,101,105,108,112,116,120,124,128,132,136,140};
//const unsigned int table_lm75[]={0,0,4,10,19,30,40,67,74,87,100,110,125,136,148,163,178,195,215,229,244,275,305,320,347,
//373,400,430,462,493,527,560,593,622,652,678,714,734,778,791,801,841,880,915,950,985,1025,1065,1105,1145,1185,1225,1270,
//1310,1355,1400,1445,1500,1555,1600,1660,1710,1770,1830,1900,1970};
// rtc 固定偏差 EEPROM
//#define eeprom_rtc8025_addclk_by_ic 0x7f00
void lm75_read1() // 15 minute one time ,one hour=4
{unsigned char l1,l3;
lm75_rdnbyte(00,2);
l1=rtc8025_timevalue[0];
lm75_rdnbyte(00,2);
l3=rtc8025_timevalue[0];
if(l1==l3)
RAM[R_TEMP]=l1;
//RAM[0xb34]=l2;
}
/************************************************/
//ADD 2005-1-6----------------->END
void lm75_cal_clk(unsigned char a) // 15 minute one time ,one hour=4
{unsigned char l1,l2,l3,l4;
unsigned int i1,i2,i3;
unsigned long la;
l1=RAM[R_TEMP];
l2=l1&0x7f;
if((0x80&l1)==0) // +
{
if(l2>25)
l2=l2-25;
else
l2=25-l2;
}
else // -
l2=128-l2+25;
if(l2>64) // <=64
l2=0;
// BU GU CHA
data_addr.addri=eeprom_rtc8025_addclk_by_ic;
if(0==read(EP1,2))
{
wr_data[0]=0;
wr_data[1]=0;
}
i1=a;
i3=l2;// sub temp
// tmp*tmp*6488/10000
// k=0 dot 6488 wen du bu cang xi shu
la=i3*i3;
la=la*6488;
i3=la/10000;
lm75_remain_clk=lm75_remain_clk+i1*i3;//i1*(i3+i2*i2);
i1=i1*wr_data[1];// t0
if(wr_data[0]!=0x00)//-
{
if(lm75_remain_clk<i1)
lm75_remain_clk=0;
else
lm75_remain_clk=lm75_remain_clk-i1;
}
else//+
lm75_remain_clk=lm75_remain_clk+i1;
}
// power on lm75set,,power down lm75lowpower
unsigned char rtc8025_addonesecond()
{unsigned char value,l;
value=0;
// second pulse(8025) pin low continue time
if(0!=time_pd51_low)// >9ms <450ms
if(time_pd51_low<45)
if(lm75_remain_clk>=32768)// one second==32768 clk
if(1==rtc8025_read_check())
if(rtc8025_timevalue[0]<0x59)
{
l=rtc8025_timevalue[0];
l=value_hex_from_bcd(l)+1;// second add one
rtc8025_timevalue[0]=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
delay_1ms();
delay_1ms();// delay 18us
timenotchanged=1;
value=rtc8025_write();
delay_1ms();// delay 18us
if(1==rtc8025_read_check())
move_rtc8025_to_softrtc();
timenotchanged=0;// xu liang cal, no change minute
}
if(value==1)
lm75_remain_clk=lm75_remain_clk-32768+328*time_pd51_low+163;// ii163 --5ms
return value;
}
unsigned char lm75usesecond;
unsigned int numlm75second;
unsigned char num_lm75read;
void lm75_main_mode()
{
if(RSOFT_RTC_SECOND!=lm75usesecond)
{
lm75usesecond=RSOFT_RTC_SECOND;
num_lm75read=num_lm75read+1;
if(num_lm75read>9)// ll 10 second read lm75
{
num_lm75read=0;
lm75_read1();
}
numlm75second= numlm75second+1;
if(numlm75second>=900)// ii900 15 minute
{
numlm75second=0;
lm75_cal_clk(1);
}
}
rtc8025_addonesecond();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -