📄 zhuancun_n.h
字号:
unsigned char dianliang_zhuancun_qingqiu;
unsigned char xuliang_zhuancun_qingqiu;
void init_zhuancun()
{
xuliangqingling_qingqiu=0;
dianliang_zhuancun_qingqiu=0;
xuliang_zhuancun_qingqiu=0;
}
unsigned char had_zhuancun(fmaddr,hour,day) // return 1 no cun ,0----had cun
unsigned int fmaddr;
unsigned char hour,day;
// fmaddr------fm store had store (last hour day month)
// hour day------chao biao or 1 day 0 hour
{
data_addr.addri=fmaddr;
read(FM,3);
if((wr_data[0]!=hour)||(wr_data[1]!=day)||(wr_data[2]!=RSOFT_RTC_MONTH))
{
wr_data[0]=hour;
wr_data[1]=day;
wr_data[2]=RSOFT_RTC_MONTH;
write(FM,3);
system_use_time=1;
return 1;
}
return 0;
}
void zhuancun_use(type_biao,valuestatus,len)
unsigned char type_biao,valuestatus,len;
// type_biao-------------zhuan cun de er ci biao lei xing
// valuestatus------------zhe ge er ci biao xu zhuan cun de zong ci shu
// example dian liang fen 4 kuai, zhi wei 3(0,1,2,3)
// len ------------------mei kuai de ge shu
{unsigned char l1;
unsigned int l2;
if(rcurrent_status_zhuancun>valuestatus)
{
rstatus_zhuan_cun=zhuancun_no;
rcurrent_status_zhuancun=0;
}
else
{// read zhi zhen
data_addr.addri=current_twobiaofm_block_addr(type_biao,0);
if(data_addr.addri!=0xffff)
{ l2=len;
l2=l2*rcurrent_status_zhuancun;// offset addr
data_addr.addri=data_addr.addri+l2;
for(l1=0;l1<len;l1++)
{
wr_data[l1]=zhuancun[l2];// ram[]
l2++;
}
write(EP1,len);
}
system_use_time=1;
rcurrent_status_zhuancun=rcurrent_status_zhuancun+1;
if(rcurrent_status_zhuancun>valuestatus)
{
rstatus_zhuan_cun=zhuancun_no;
rcurrent_status_zhuancun=0;
}
}
}
void zhuancun_dianliang()
{
zhuancun_use(TYPE_EP1_HISTROY_KWH,3,24);// block 4
}
void zhuancun_xuliang()
{
zhuancun_use(TYPE_EP1_HISTROY_KW,5,28); // block 6
}
void zhuancun_xuliangqingling()
{
zhuancun_use(TYPE_EP1_CLRKWSTOR_RECORD,5,28);// block 6
}
void zhuancun_fuheqi()
{
zhuancun_use(TYPE_EP1_SEASONCHANGE_RECORD,3,22); // block 4
}
void zhuancun_dianliang_start(hour,day)
unsigned char hour,day;
// hour day------->chao biao ri huo 1 day 0 hour
{unsigned char l;
for(l=0;l<96;l++)
{
zhuancun[l]=RAM[R_KWH_F_BAKA+l]; // data--------->
wr_data[l]=zhuancun[l];
}
data_addr.addri=FM_ZHUANCUN_BUFFER;
write(FM,96);
next_point(TYPE_EP1_HISTROY_KWH,10);// kuai gun dong 0----->10(left)
rstatus_zhuan_cun=zhuancun_yes;// yao zhuan cun
rzhuancun_tpye_ercibiao=TYPE_EP1_HISTROY_KWH;// zhuan cun de er ci biao
rcurrent_status_zhuancun=0; // dang qian zhuan cun de zhuang tai
}
void zhuancun_clr_xulianguse()
{
unsigned char l,l1;
unsigned int l2;
for(l2=0;l2<168;l2++)
{
zhuancun[l2]=RAM[R_KW_F+l2];
RAM[R_KW_F+l2]=0;// xu liang qing ling
}
// fm_eeprom zhu yi add -----jiao yuan (must)
copy_ram_to_fm(R_KW_F,168,FM_KW_F);
for(l=0;l<168;l++)
wr_data[l]=zhuancun[l];
data_addr.addri=FM_ZHUANCUN_BUFFER;
write(FM,168);
init_xuliang();
system_use_time=1;
rstatus_zhuan_cun=zhuancun_yes;
rcurrent_status_zhuancun=0;
}
void zhuancun_xuliang_start(hour,day)
unsigned char hour,day;
{
zhuancun_clr_xulianguse();
next_point(TYPE_EP1_HISTROY_KW,10);
rzhuancun_tpye_ercibiao=TYPE_EP1_HISTROY_KW;
}
void zhuancun_xuliangqingling_start(hour,day)
unsigned char hour,day;
{
zhuancun_clr_xulianguse();
next_point(TYPE_EP1_CLRKWSTOR_RECORD,4);
rzhuancun_tpye_ercibiao=TYPE_EP1_CLRKWSTOR_RECORD;//l 2
}
void zhuancun_cuofeng(day,hour)
unsigned char day,hour;
{unsigned char l;
if(1==had_zhuancun(FM_CUOFENG_YICUN,hour,day))
{// RU HE PAN DUAN FU CUO FENG----->
next_point(TYPE_EP1_CUOFENGKWH_RECORD,2);// block num=3
data_addr.addri=current_twobiaofm_block_addr(TYPE_EP1_CUOFENGKWH_RECORD,0);
if(data_addr.addri!=0xffff)
{
for(l=0;l<45;l++)
wr_data[l]=RAM[R_CUOFENG_KWH_F+l];
write(EP1,45);//
for(l=0;l<30;l++)
RAM[R_CUOFENG_KW_1+l]=0;
copy_ram_to_fm(R_CUOFENG_KW_1,30,FM_CUOFENG_KW_1);
}
}
}
// a 0 dianliang 1--yongdianliang 2--xuliang 19 jiance
void shangdiancun_onetime(a,day,hour)
unsigned char a,hour,day;
// a----------------twotabletype
// day hour----------chao biao ri
{unsigned char l,l1;
unsigned int l2;
switch(a)
{
case TYPE_EP1_HISTROY_KWH:
zhuancun_dianliang_start(hour,day);
for(l=0;l<4;l++)
{
watchdog();
zhuancun_dianliang();
}
break;
case TYPE_EP1_HISTROY_KW:
zhuancun_xuliang_start(hour,day);
for(l=0;l<6;l++)
{
watchdog();
zhuancun_xuliang();
}
break;
case TYPE_EP1_CUOFENGKWH_RECORD: // cuo feng
watchdog();
zhuancun_cuofeng(day, hour);
break;
}
}
void gzhuancun_use0()// zhuan cun yong
{
switch(rzhuancun_tpye_ercibiao)
{
case TYPE_EP1_HISTROY_KWH: // write eeprom
zhuancun_dianliang();
break;
case TYPE_EP1_HISTROY_KW:
zhuancun_xuliang();
break;
case TYPE_EP1_SEASONCHANGE_RECORD: // fu he qi
zhuancun_fuheqi();
break;
case TYPE_EP1_CLRKWSTOR_RECORD: // xuliang qing ling
zhuancun_xuliangqingling();
break;
default:
rstatus_zhuan_cun=zhuancun_no;
rcurrent_status_zhuancun=0;
break;
}
}
void zhuancun_status_copy_to_fm()
{
wr_data[0]=rstatus_zhuan_cun;
wr_data[1]=rzhuancun_tpye_ercibiao;
wr_data[2]=rcurrent_status_zhuancun;
data_addr.addri=FM_STATUS_ZHUANCUN;
write(FM,3);
}
void zhuancun_mode()
{unsigned char hour,day,l,l1,chaobiaoriok,value,d1,d2;
unsigned int l2;
static unsigned char g,g1,g2,g3,g4,g5;
static unsigned char use1,use2,use3; // zhuang tai ,when change ---->write fm
if(g!=RSOFT_RTC_SECOND) // one second one time
{
g=RSOFT_RTC_SECOND;// mu di shao du tie dian
g1=1;
g2=1;
g3=1;
g4=1;
g5=1;
}
system_use_time=0;
// cao biao ri
//-------20081220--add--lzh------->>..-----3 chaobiaori-----
hour=RAM[R_CHAOBIAORI];
day=RAM[R_CHAOBIAORI+1];
chaobiaoriok=0;
if(2==(testhour(hour)+testday(day)))
if(day<0x29)
chaobiaoriok=1;
if(chaobiaoriok=0)
{
hour=RAM[R_CHAOBIAORI2];
day=RAM[R_CHAOBIAORI2+1];
if(2==(testhour(hour)+testday(day)))
if(day<0x29)
chaobiaoriok=1;
}
if(chaobiaoriok=0)
{
hour=RAM[R_CHAOBIAORI3];
day=RAM[R_CHAOBIAORI3+1];
if(2==(testhour(hour)+testday(day)))
if(day<0x29)
chaobiaoriok=1;
}
//----20081220-add--lzh-----------..<<-----------
// chu li tong xun qing ling xuliang
if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
if( xuliangqingling_qingqiu==1)
{
byte_2_bcd_add(R_CLRKW_NUM);// num
copy_ram_to_fm(R_CLRKW_NUM,2,R_CLRKW_NUM);
one_time_two_table_start(TYPE_FM_CLRKW_RECORD);
if(chaobiaoriok==1) // you chao biao ri
{
xuliangqingling_qingqiu=0;
zhuancun_xuliangqingling_start(hour,day);
}
else
{
xuliangqingling_qingqiu=0; // wu chao biao ri
dianliang_zhuancun_qingqiu=1;
xuliang_zhuancun_qingqiu=1;
}
// RFLAG_DEMANGCLR_LOCK=1;
// RTIMER_DEMANGCLR_LOCK=timevalue_xuliangqingling_lock;
// if((RSTATUS_RUN==TEST)&&(progfunction_security==yes))
// {
// RFLAG_DEMANGCLR_LOCK=0;
// RTIMER_DEMANGCLR_LOCK=0;
// }
// move_int_to_fm( RTIMER_DEMANGCLR_LOCK,FM_TIMER_DEMANGCLFM_LOCK);
}
if(dianliang_zhuancun_qingqiu==1)
{
if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
{
zhuancun_dianliang_start(hour,day);
dianliang_zhuancun_qingqiu=0;
}
}
else
{
if(chaobiaoriok==1)
if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))// one second can zhuangcun
// DIANLIANG
if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
if(g1==1)// second one time
{ g1=0;
{
if(1==had_zhuancun(FM_YIZHUANCUN_DIANLIANG,hour,day))
{
zhuancun_dianliang_start(hour,day);
}
}
}
}
if(xuliang_zhuancun_qingqiu==1)
{
if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
{
zhuancun_xuliang_start(hour,day);
xuliang_zhuancun_qingqiu=0;
}
}
else
{if(chaobiaoriok==1)
if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))// one second can zhuangcun
//xuLIANG
if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
// WRITE Ram
{ if(g3==1)// second one time
{ g3=0;
if(1==had_zhuancun(FM_XULIANG_YIZHUANCUN_DATE,hour,day))
{
zhuancun_xuliang_start(hour,day);
}
}
}
}
// cuofeng ZHUAN CUN
#if(progfunction_cuofeng==yes)
{if((system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
{ value=0;
if(chaobiaoriok==1)
{ if((RSOFT_RTC_HOUR==hour)&&(RSOFT_RTC_DAY==day))
if(g5==1)// second one time
{ g5=0;
value=1;
d1=hour;
d2=day;
}
}
else
{if((RSOFT_RTC_DAY==1)&&(RSOFT_RTC_HOUR==0))
if(g5==1)// second one time
{ g5=0;
value=1;
d1=0;
d2=1;
}
}
if(1==value)
zhuancun_cuofeng(d2,d1);
}
}
#endif
// add fu he qi zhuan cun
if((fuhe_changed==1)&&(system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
{
fuhe_changed=0;
time_to_wrdata();
for(l=0;l<6;l++)
zhuancun[l]=wr_data[l];
for(l=0;l<80;l++)
zhuancun[l+6]=RAM[R_KWH_F_BAKA+l];
for(l=0;l<86;l++)
wr_data[l]=zhuancun[l];
data_addr.addri=FM_ZHUANCUN_BUFFER;
write(FM,86);
next_point(TYPE_EP1_SEASONCHANGE_RECORD,3);
system_use_time=1;
rstatus_zhuan_cun=zhuancun_yes;
rzhuancun_tpye_ercibiao=TYPE_EP1_SEASONCHANGE_RECORD;
rcurrent_status_zhuancun=0;
wr_data[0]=RAM[R_ONUS_1+0+3*current_fuheqi];//day
wr_data[1]=RAM[R_ONUS_1+1+3*current_fuheqi];// month
data_addr.addri=FM_FUHEQIYIZHUANCUN_DATE;
write(FM,2);
}
// add yu yue 0 1 FM 2--11 ---->EEPROM
if((rqingqiu_yuyue_cun==1)&&(system_use_time==0)&&(rstatus_zhuan_cun!=zhuancun_yes))
{rqingqiu_yuyue_cun=0;
data_addr.addri=FM_YUYUE_ZHUANCUNQINGQIU;
wr_data[0]=0;
write(FM,1);
time_to_wrdata();
data_addr.addri=FM_YUYUEDONGJIE_BUFFER;
for(l=0;l<96;l++)
wr_data[l+6]=RAM[R_KWH_F_BAKA+l];
for(l=0;l<7;l++)
{
wr_data[l+96+6]=RAM[R_KW_F+l];
wr_data[l+96+7+6]=RAM[R_KW_R+l];
}
write(FM,116);
system_use_time=1;
}
if(system_use_time==0)
{ if(rstatus_zhuan_cun==zhuancun_yes)
gzhuancun_use0();
}
// ZHUAN TAI BAO CUN ZHI TIE DIAN
if((use1!=rstatus_zhuan_cun)||(use2!=rzhuancun_tpye_ercibiao)||(use3!=rcurrent_status_zhuancun))
{
use1=rstatus_zhuan_cun;
use2=rzhuancun_tpye_ercibiao;
use3=rcurrent_status_zhuancun;
zhuancun_status_copy_to_fm();
}
// add fu he qi zhuan cun
if(1==system_use_time) system_control_time2=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -