📄 zhuancun.lst
字号:
C51 COMPILER V7.50 ZHUANCUN 08/06/2008 16:43:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ZHUANCUN
OBJECT MODULE PLACED IN zhuancun.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bottom\zhuancun.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS MODDP2 INCDIR(C:\DO
-CUMENTS AND SETTINGS\ADMINISTRATOR.LENOVO-80B42371\桌面\VANGO\程序\var\) DEBUG OBJECTEXTEND PRINT(.\zhuancun.lst) OBJECT
-(zhuancun.obj)
line level source
1 /*************************************************************************************
2
3 文件类型:
4 文件作用:转存历史数据
5 修改权限:
6 文件相关:
7
8 创 建 人:chenbo
9 创建日期:2007.11.24
10 当前版本:Ver0.1
11
12 版本信息:Ver0.1
13
14 **************************************************************************************/
15 #include "Tiger.h"
16 #include "typemeter.h"
17
18 struct flzandstrstruct
19 { unsigned int lasttimeaddr; //上次冻结电量时间存放地址
20 unsigned int poinadd; //存放指针地址
21 unsigned int DATAID; //存放数据id号
22 unsigned char acttims; //最大存放次数
23 };
24
25 const struct flzandstrstruct code flzandstrtable[]=
26 {{EEP_lastflzengtime,EEP_point_dong,0xc160,8}, //冻结数据
27 {EEP_laststrengtime,EEP_point_zhun,0x0110,11} //转存
28 };
29
30
31 //===================================================
32 //函数功能:初始化转存模块
33 //
34 //====================================================
35 void int_zhuancun(void)
36 { flag_zhuancun_run=0;
37 1 sta_zhuancun=no_zhuncun;
38 1 // F_askerashistdata=0;
39 1 // bufftime=(ram[RAM_rtcmin]&0xf0);
40 1 }
41
42 //====================================================
43 //完成夸月停电时的转存
44 //====================================================
45 void complet_zhuncun(void)
46 {
47 1 }
48
49 //========================================================
50 //函数功能:判断上月电量是否已经转存
51 //入口参数:当前时间,判断类型 0冻结,1转存
52 //出口参数:1:尚未转存,0:已经转存
53 //========================================================
C51 COMPILER V7.50 ZHUANCUN 08/06/2008 16:43:21 PAGE 2
54 unsigned char check_laststortime(unsigned char * pointtime,unsigned char type)
55 { unsigned char value;
56 1 data_addr.word[1]=flzandstrtable[type].lasttimeaddr;
57 1 Read_data(EEPROM,3); //读取上次转存时间
58 1 value=0;
59 1 if(pointtime[0]>=wr_buff[0]) //年判断
60 1 { if(pointtime[0]>wr_buff[0]) //如果已经夸年,则表示未保存
61 2 value=1;
62 2 else
63 2 { if(pointtime[1]>wr_buff[1]) //未夸年,判断月份
64 3 { value=1;
65 4 }
66 3 else if(pointtime[1]==wr_buff[1]) //未夸月
67 3 { if(type==0) //如果时冻结,继续日判断
68 4 { if(pointtime[2]>wr_buff[2]) //夸日
69 5 value=1;
70 5 }
71 4 }
72 3 }
73 2 }
74 1
75 1 return value;
76 1 }
77
78 //=======================================================
79 //函数功能:保存电量
80 //入口参数:存贮类型,当前时间
81 //=======================================================
82 void cun_energe(unsigned char type,unsigned char *pointime)
83 { unsigned char point,len;
84 1 data_addr.word[1]=flzandstrtable[type].poinadd; //获取指针
85 1 Read_data(EEPROM,1);
86 1 point=wr_buff[0];
87 1 if(point<flzandstrtable[type].acttims-2) //指针累加
88 1 { point+=1;
89 2 }
90 1 else
91 1 point=0;
92 1 wr_buff[0]=point; //保存新指针
93 1 Write_data(EEPROM,1);
94 1
95 1 addr_baseonIDandtype(RAM,ID_POSENGSUM); //读取存放电量
96 1 data_addr.word[1]= (*ID_coretalbpoint[0]).dataaddr;
97 1 len=(*ID_coretalbpoint[0]).datalong;
98 1 Read_data(RAM,len);
99 1 if(type==0) //如果是冻结,则保存冻结日
100 1 wr_buff[4]=pointime[2];
101 1
102 1 addr_baseonIDandtype(0,flzandstrtable[type].DATAID); //获取存放电量德首地址
103 1 len=(*ID_coretalbpoint[0]).datalong;
104 1 data_addr.word[1]= (*ID_coretalbpoint[0]).dataaddr;
105 1 data_addr.word[1]+=point*len;
106 1 Write_data((*ID_coretalbpoint[0]).stortype,len); //存贮地址
107 1
108 1 wr_buff[0]=pointime[0]; //保存时间 年 月 日
109 1 wr_buff[1]=pointime[1];
110 1 wr_buff[2]=pointime[2];
111 1 data_addr.word[1]=flzandstrtable[type].lasttimeaddr;
112 1 Write_data(EEPROM,3);
113 1 }
114
115 //=======================================================
C51 COMPILER V7.50 ZHUANCUN 08/06/2008 16:43:21 PAGE 3
116 //函数功能:转存历史数据模块
117 //
118 //=========================================================
119 void zhuncun_mode(void)
120 { unsigned char timebuff[4];
121 1 if(flag_zhuancun_run==1) //1秒运行一次
122 1 { flag_zhuancun_run=0;
123 2
124 2 addr_baseonIDandtype(RAM,ID_DATAMETER); //获取当前时间
125 2 data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
126 2 Read_data((*ID_coretalbpoint[0]).stortype,7);
127 2 timebuff[0]=wr_buff[0]; //年
128 2 timebuff[1]=wr_buff[1]; //月
129 2 timebuff[2]=wr_buff[2]; //日
130 2 timebuff[3]=wr_buff[3]; //时
131 2
132 2 if(timebuff[3]==0) //零时操作
133 2 { if(1==check_laststortime(timebuff,0)) //判断是否已经冻结
134 3 { cun_energe(0,timebuff); //0 表示电量日冻结
135 4 }
136 3 if(timebuff[2]==1) //1日,电量转存
137 3 { if(1==check_laststortime(timebuff,1)) //判断是否已经转存
138 4 { cun_energe(1,timebuff); //1 表示电量转存
139 5 }
140 4 }
141 3 }
142 2 }
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 557 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- 14
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -