📄 define data struct.lst
字号:
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE DEFINE_DATA_STRUCT
OBJECT MODULE PLACED IN define data struct.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE define data struct.c BROWSE DEBUG OBJECTEXTEND SYMBOLS TABS(2) PREPRINT
stmt level source
1
2 /*
3 */
4 #include <absacc.h>
5 #include <stdlib.h>
6 #include <AT89X52.H>
7 #include <INTRINS.h>
8
9 #include "charger.h"
10 #include "mylib.h"
11
12 //
13 //-----------------------------
14 //define data struct
15
16
17 //-----------------------------
18 //System flag,char of control;
19 //-----------------------------
20 static bit bdata boostflag=1;
21 static unsigned char idata switchchar=0x3f;
22
23 /*
24 //init_system_work_point , counter rate flow
25 */
26
27 #define BENCHMARK 5
28 #define AMPLIFICATORY 10//predefine 0.1 proccess, amplificatory 10
29 #define ADMAX 1024
30 #define BUFFSIZE 0xa0
31
32 //static array daydata change to loop link
33 //sizeof(daydata)=0x2B
34 static daydata xdata looplink[BUFFSIZE] _at_ 0xC500;
35
36 void init_system_work_point(void)
37 {
38 1 unsigned char idata i;
39 1
40 1 for(i=0;i<12;i++)
41 1 {
42 2 if(i<7)
43 2 {
44 3 sys[i]=dtab[2][i];//default=2,system is 220V
45 3 }
46 2 else
47 2 {
48 3 sys[i]=stab[i-7][2];
49 3 }
50 2 }
51 1 sys[12]=0;//tested temperature
52 1
53 1
54 1 for(i=0;i<0xa0-1;i++)
55 1 {
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 2
56 2 looplink[i].next=&looplink[i+1];
57 2 looplink[i+1].up=&looplink[i];
58 2 }
59 1 looplink[BUFFSIZE-1].next=&looplink[0];
60 1 looplink[0].up=&looplink[0xa0-1];
61 1
62 1 today.next=&looplink[0];
63 1 today.up=&looplink[0xa0-1]; //is head->up;
64 1
65 1 init_rate();
66 1 }
67
68 #define system_volatage sys[7]
69 #define discharge_model sys[8]
70 #define charge_model sys[9]
71 #define float_revise sys[10]
72 #define desinged_rate sys[11]
73
74 void init_rate(void)
75 {
76 1 unsigned int data i;
77 1
78 1 i=BENCHMARK*AMPLIFICATORY;
79 1 crate.temperature = i*100;
80 1 crate.volatage = i*desinged_rate;//battery volatage
81 1 crate.discharge = i*discharge_model;
82 1 crate.charge = i*charge_model;
83 1 }
84 /*
85 //intput data from tlc1543,changed and saved
86 */
87 void getadin(void)
88 {
89 1 unsigned char data i;
90 1 unsigned long data tmp;
91 1
92 1 for(i=0;i<6;i++)
93 1 {
94 2 tmp=tlc1543(i);tmp*=crate.charge;
95 2 tmp /= ADMAX; adin[i]=tmp;
96 2 }
97 1 tmp=tlc1543(6);tmp*=crate.discharge;
98 1 tmp /= ADMAX; adin[6]=tmp;
99 1 tmp=tlc1543(8);tmp*=crate.temperature;
100 1 tmp /= ADMAX; adin[7]=tmp;
101 1 tmp=tlc1543(9);tmp*=crate.volatage;
102 1 tmp /= ADMAX; adin[8]=tmp;//9way
103 1 }
104
105 /*
106 //count today working result
107 */
108 void account(void)
109 {
110 1 if(tlong%60==0)
111 1 //count Ah, per 10s //count max & min per 10s
112 1 {char i;
113 2 for(i=0;i<9;i++)
114 2 {
115 3 if(i<7)
116 3 { //save current integral value
117 4 today.work[i*2+1]+=(today.work[i*2+1]+adin[i])/(60*2);
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 3
118 4 }
119 3 else
120 3 {//save max & min value
121 4 if(adin[i]>today.work[i*2+1])today.work[i*2+1]=adin[i];
122 4 else if(adin[i]<today.work[2*i])today.work[i*2]=adin[i];
123 4 }
124 3 //only save max value
125 3 if(adin[i]>today.work[2*i])today.work[i*2]=adin[i];
126 3 }
127 2 }
128 1 }
129
130 /*
131 //output control,switch operation
132 */
133
134 #define boostvolatage sys[0]
135 #define booststart sys[1]
136 #define floatvolatage sys[2]
137 #define floatrecover sys[3]
138 #define moterstart sys[4]
139 #define lowlevel sys[5]
140 //alarm overload
141 #define overload sys[6]
142 #define dischargecurrent today.work[13]
143
144 #define BatteryVolatage adin[8]
145
146 //-----------------------------
147
148 #pragma DISABLE
149
150 static void controlswitch (unsigned char i)
151 {
152 1 _nop_();_nop_();_nop_();
153 1 P8255B=~i;
154 1 _nop_();_nop_();_nop_();
155 1 P8255B=~i;
156 1 }
157 //-----------------------------
158 static void alarm_overload()
159 {
160 1 }
161 //-----------------------------
162 void control(void)
163 {
164 1
165 1 if(dischargecurrent>overload)alarm_overload();
166 1
167 1 if(BatteryVolatage > boostvolatage*AMPLIFICATORY)
168 1 {
169 2 switchchar=0x0;
170 2 controlswitch(switchchar);//all close & wcharge=0
171 2 boostflag=0;
172 2 }
173 1 else
174 1 if(boostflag)
175 1 {
176 2 //boost charge start
177 2 if(BatteryVolatage > booststart*AMPLIFICATORY);
178 2 else
179 2 {
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 4
180 3 switchchar=0x3f;
181 3 controlswitch(switchchar);//6 way start
182 3 boostflag=1;
183 3
184 3 if(BatteryVolatage > moterstart*AMPLIFICATORY);
185 3 else
186 3 {
187 4 switchchar=0x7f;
188 4 controlswitch(switchchar);//6 way start and motor start
189 4
190 4 if(BatteryVolatage >lowlevel *AMPLIFICATORY);
191 4 else {switchchar=0xff;controlswitch(switchchar);}//not enough volatage alarm,6 way start and motor sta
-rt
192 4 }
193 3 }
194 2 }
195 1 else
196 1 {
197 2 if(BatteryVolatage >floatvolatage*AMPLIFICATORY)
198 2 {
199 3 switchchar &= 0x3f;
200 3 switchchar>>=1;
201 3 controlswitch(switchchar);
202 3 }//close 1 way ,stop motor
203 2 else
204 2 {
205 3 if(BatteryVolatage >floatrecover *AMPLIFICATORY);
206 3 else {switchchar=0x3f;controlswitch(switchchar);}
207 3 }
208 2 }
209 1 }
210
211 //----------------------------------------
212 ///save tab to xdata at the one day
213 //-----Xsave the first value---------
214
215 void save(void)
216 {
217 1 static unsigned char data day;
218 1 unsigned char data i;
219 1
220 1 link p;
221 1
222 1 i=today.date[2];
223 1 if(i!=day)
224 1 {
225 2 p=today.next;
226 2 //save data to linktable
227 2 for(i=0;i<18;i++)//copy today to today.next
228 2 {
229 3 if(i<3)p->date[i]=today.date[i];
230 3 p->work[i]=today.work[i];
231 3 }
232 2 today.next=p->next;//point next node
233 2 today.up=p;
234 2 }
235 1 day= i;//day of the month
236 1 }
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
bitseg . . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 2
byte . . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 2
i. . . . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
control. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
crate. . . . . . . . . . . . . . . . . EXTERN XDATA STRUCT ----- 8
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
dtab . . . . . . . . . . . . . . . . . EXTERN CODE ARRAY ----- 56
adin . . . . . . . . . . . . . . . . . EXTERN XDATA ARRAY ----- 20
today. . . . . . . . . . . . . . . . . EXTERN XDATA STRUCT ----- 43
tlong. . . . . . . . . . . . . . . . . EXTERN DATA U_INT ----- 2
stab . . . . . . . . . . . . . . . . . EXTERN CODE ARRAY ----- 40
rate . . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 8
volatage . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
temperature. . . . . . . . . . . . . MEMBER ----- U_INT 0002H 2
discharge. . . . . . . . . . . . . . MEMBER ----- U_INT 0004H 2
charge . . . . . . . . . . . . . . . MEMBER ----- U_INT 0006H 2
link . . . . . . . . . . . . . . . . . TYPEDEF ----- PTR ----- 2
save . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
day. . . . . . . . . . . . . . . . . STATIC DATA U_CHAR 0000H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
p. . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 2
switchchar . . . . . . . . . . . . . . STATIC IDATA U_CHAR 0000H 1
word . . . . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 2
ah . . . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
al . . . . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
init_rate. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
boostflag. . . . . . . . . . . . . . . STATIC DATA BIT 0000H 1
ACC. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E0H 1
alarm_overload . . . . . . . . . . . . STATIC CODE PROC 0000H -----
daydata. . . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 43
date . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 3
work . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0003H 36
next . . . . . . . . . . . . . . . . MEMBER ----- PTR 0027H 2
up . . . . . . . . . . . . . . . . . MEMBER ----- PTR 0029H 2
sys. . . . . . . . . . . . . . . . . . EXTERN XDATA ARRAY ----- 26
getadin. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
tmp. . . . . . . . . . . . . . . . . AUTO DATA U_LONG 0001H 4
workdata . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 43
date . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 3
work . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0003H 36
next . . . . . . . . . . . . . . . . MEMBER ----- PTR 0027H 2
up . . . . . . . . . . . . . . . . . MEMBER ----- PTR 0029H 2
wchar_t. . . . . . . . . . . . . . . . TYPEDEF ----- CHAR ----- 1
looplink . . . . . . . . . . . . . . . STATIC XDATA ARRAY C500H 6880
account. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1
_tlc1543 . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
init_system_work_point . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO IDATA U_CHAR 0000H 1
_controlswitch . . . . . . . . . . . . STATIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1477 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.02a DEFINE_DATA_STRUCT 04/16/2003 10:13:02 PAGE 6
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 8
IDATA SIZE = 1 1
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -