📄 main.c
字号:
/******************************************************************************/
#include "sfr22.h"
#include "41hard.h"
#include "Global_ram.h"
#include "Global_fm.h"
#include "Global_ep1.h"
#include "Global_eplock.h"
#include "global.h"
#include "Eeprom_rw.h"
#include "fmeeprom_rw.h"
#include "Data_readwrite.h"
#include "Program_function.h"
#include "display_table.h"
#include "Global_twotable_type.h"
#include "Alarm.h"
#include "global_function.h"
#include "rtc8025.h"
#include "lm75.h"
#include "Pluse_out.h"
#include "Ade7758p.h"
#include "an_quan_ren zhen.h"
#include "data_check.h"
#include "Display_drive.h"
#include "display_mode.h"
#pragma INTERRUPT timer_a0_10ms
#pragma INTERRUPT comm_485_1
#pragma INTERRUPT comm_485_1_send
//#include "comm_485_1.h"
#include "Time_10ms.h"
#include "Key.h"
#include "price_switch.h"
#include "Soft_rtc.h"
#include "Kwhkvarh_count.h"
#include "Xuliang.h"
#include "Zhejiang.h"
#include "comm_remote.h"
//delete by zhanglong ---->start
//#include "hualong.h"
// delete by zhanglong ---->end
#include "Hualong_v10.h"
#include "comm_1_mode.h"
#include "comm_0_mode.h"
#include "Lost_v.h"
#include "Cut_v.h"
#include "over_kwh.h"
#include "Phasic_power_error.h"
#include "zhuancun.h"
#include "dongjie.h"
#include "Status_check.h"
#include "ad.h"
#include "biaogaiduanniugai.h"
/******************************************************************************/
// ting 停电状态确认AAAAAA
// 1 tingdian
unsigned char tingdian_ack()
{
unsigned char l;
pindir_vcc=0;
if(1==pin_vcc)
return 0;
for(l=0;l<3;l++)
{
if(1==pin_vcc)
{
return 0;
}
}
return 1;
}
// shang dian 上电确认AAAA
// 1 SHANG DIAN
unsigned char shangdian_ack()
{
unsigned char l;
pindir_vcc=0;
if(0==pin_vcc)
return 0;
for(l=0;l<3;l++)
{
if(0==pin_vcc)
{
return 0;
}
}
return 1;
}
// ting dian bao cun 停电保存AAAA
void tingdian_baocun()
{
// bao cun
data_addr.addri=FM_DIANLIANG_ADD1;
wr_data[0]=Dianliang1.byte;
wr_data[1]=Dianliang2.byte;
write(FM,2);
data_addr.addri=FM_KWH_F_COUNT;
wr_data[0]=RKWH_F_COUNT%256;
wr_data[1]=RKWH_F_COUNT/256;
wr_data[2]=RKWH_R_COUNT%256;
wr_data[3]=RKWH_R_COUNT/256;
wr_data[4]=RKVARH_F_COUNT%256;
wr_data[5]=RKVARH_F_COUNT/256;
wr_data[6]=RKVARH_R_COUNT%256;
wr_data[7]=RKVARH_R_COUNT/256;
wr_data[8]=RKVARH_1_COUNT%256;
wr_data[9]=RKVARH_1_COUNT/256;
wr_data[10]=RKVARH_2_COUNT%256;
wr_data[11]=RKVARH_2_COUNT/256;
wr_data[12]=RKVARH_3_COUNT%256;
wr_data[13]=RKVARH_3_COUNT/256;
wr_data[14]=RKVARH_4_COUNT%256;
wr_data[15]=RKVARH_4_COUNT/256;
write(FM,16);
}
// ting chao dian ci 停抄电池AAAAA
// 1 <
unsigned char tingchao_dianchi()
{
pindir_tingchaodianchi=0;
if(1==pin_tingchaodianchi)
return 1;
else
return 0;
}
// hong wai da kai ------>dalay 1 s zai da kai
void jiehuo_set()
{unsigned char a;
opendr_battery_tingdianchaobiao;
open_battery_tingdianchaobiao;
prc0=1;
cm16=0;
cm17=0;
cm05=0;
cm06=0;// l0
prc0=0;
for(a=0;a<150;a++)
{;}
opendr_battery_ctlir;
open_battery_ctlir;
prc0=1;
cm07=0;
prc0=0;
asm("FCLR I");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
timer_a0_10ms_set();
// changed by zhanglong ---->start
//adset();// 2003-8-27 add
// changed by zhanglong ---->end
init_remote();
init_485_1();
init_485_0();
// delete by zhanglong ---->start
//init_hualong();
// delete by zhanglong ---->end
init_display();
lcd_set();
init_ta2();
jiehou_use=1;
RLCD_DISPLAY_STATUS=DISPLAY_AUTO;
asm("FSET I");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
}
void chushi()
{
chushi_io();
prc0=1;
cm16=0;
cm17=0;
cm06=0;
cm05=0;
cm04=1;
cm07=0;
prc0=0;
lm75_adset();
lcd_set();
rtc8025_set();
adset();
init_485_1();
init_485_0();
init_remote();
init_display();
init_dongjie();
// delete by zhanglong ---->start
// init_hualong();
// delete by zhanglong ---->end
ledspeekset();
mochongset();
init_ni_xiang_xu_fan_xian();
init_outside();
init_over_kwh();
init_quanshiya();
init_lost_v();
init_cut_v();
init_7758();
timer_a0_10ms_set();
int12set(); //dianliang
time_1s_a1_set();
init_xuliang();
init_zhuancun();
init_check();
init_renzhen();
init_priceswitch();
init_biaogaiduanniugai();
init_ta2();
}
void huifu()
{
huifu_dianliang1();
huifu_xuliang();
huifu_data();
}
// num ----cishu a--0 dianliang 1---yongdianliang 2--xuliang 3---dianwanjiance
void shangdiancun(num,a,day,hour)
unsigned char num,a,day,hour;
{unsigned char l;
for(l=0;l<num;l++)
{
shangdiancun_onetime(a,day,hour);
}
}
// month-day-hour yi cun shi jian ,a lei xing
// a--0 dianliang 1---yongdianliang 2--xuliang 3---dianwanjiance
void cun_from_currenttime_hadcuntime(day,hour,a,beforetime)
unsigned char day,hour,a,*beforetime;
{unsigned char l,month,value,n;
unsigned int m1,m2;
cun_from_currenttime_addri(a);
value=read(FM,3);
month=wr_data[2];
if(value==1)
{
m1=12*value_hex_from_bcd(RSOFT_RTC_YEAR)+value_hex_from_bcd(RSOFT_RTC_MONTH);
m2=12*value_hex_from_bcd(*(beforetime+6))+value_hex_from_bcd(*(beforetime+5));
if((256*(*(beforetime+4))+(*(beforetime+2)))<=(hour+256*day))
if(month!=*(beforetime+5))
m1=m1+1;
if(m1>m2) // m1=m2 ben yue yu cun
{
m1=m1-m2;
if(m1>12)
l=12;// 11
else
l=m1;
n=0;
if(l>1)
n=l-1; //shangdiancun(l-1,a,day,hour);// changed
if(RSOFT_RTC_DAY>day)
n=n+1; //shangdiancun(1,a,day,hour);
else
{
if(RSOFT_RTC_DAY==day)
if(RSOFT_RTC_HOUR>=hour)
n=n+1; //shangdiancun(1,a,day,hour);
}
if(n>0)
{
shangdiancun(n,a,day,hour);
wr_data[0]=hour;
wr_data[1]=day;
if((hour+256*day)>(RSOFT_RTC_DAY*256+RSOFT_RTC_HOUR))
{
l=value_hex_from_bcd(RSOFT_RTC_MONTH)-1;
if((l>12)||(l==0))
l=12; // i1---->0 MY MONTH NO STOR
wr_data[2]=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
}
else
wr_data[2]=RSOFT_RTC_MONTH;
cun_from_currenttime_addri(a);
write(FM,3);
zhuancun_status_copy_to_fm();
}
}
}
}
/************************************************************/
init_quanshiya()
{
opendr_battery_quanshiya;
close_battery_quanshiya;
RSTATUS_QUANSHIYA=no_quanshiya;
RQINGQIU_PANDUAN_QUANSHIYA=nodo_panduanquanshiya;
}
void quan_shi_ya_start()
{unsigned char l;
data_addr.addri=EP1_POWERDOWNALLLOSTV_NUM;
if(1==read(EP1,3))
{
for(l=0;l<3;l++)
RAM[R_USER0+l]=wr_data[l];
byte_3_bcd_add(R_USER0);
for(l=0;l<3;l++)
wr_data[l]=RAM[R_USER0+l];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -