📄 light.lst
字号:
C51 COMPILER V7.20 LIGHT 02/21/2006 08:36:07 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LIGHT
OBJECT MODULE PLACED IN .\output\light.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE light.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\light.lst) OBJECT(
-.\output\light.obj)
line level source
1 #ifndef _LIGHT_C_
2 #define _LIGHT_C_
3
4 #include "api.h"
5
6 void task_light_process(void)
7 {
8 1 SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
9 1
10 1 if( gSystemInfo.light_process_flag == TASK_EXECUTE )
11 1 {
12 2 light_alarm( psdev );
13 2 gSystemInfo.light_process_flag = TASK_READY;
14 2 }
15 1 }
16
17 BYTE light_e1_alarm( BYTE *e1_status )
18 {
19 1 BYTE xdata counter;
20 1 BYTE xdata light = INVALID;
21 1 SYSTEM_INFOMATION *psys = &gSystemInfo;
22 1
23 1 for( counter=0; counter<psys->max_system_e1; counter++ )
24 1 {
25 2 if( ((*e1_status)&(~E1_NOALARM)) == E1_ALARM )
26 2 {
27 3 light &= ~(BIT0<<counter);
28 3 }
29 2 e1_status ++;
30 2 }
31 1 return light;
32 1 }
33
34 void get_e1_light( BYTE *show, BYTE alarm, BYTE loop )
35 {
36 1 BYTE xdata counter;
37 1 SYSTEM_INFOMATION *psys = &gSystemInfo;
38 1
39 1 for( counter=0; counter<psys->max_system_e1; counter++ )
40 1 {
41 2 if( !(loop & (BIT0<<counter)) )
42 2 show[counter] = FALSH;
43 2 else if( !(alarm&(BIT0<<counter)) )
44 2 show[counter] = SHINE;
45 2 else
46 2 show[counter] = DROEN;
47 2 }
48 1 }
49
50 BYTE light_e1_loop( BYTE *e1_status )
51 {
52 1 BYTE xdata counter;
53 1 BYTE xdata light = INVALID;
54 1 SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
C51 COMPILER V7.20 LIGHT 02/21/2006 08:36:07 PAGE 2
55 1
56 1 for( counter=0; counter<psys->max_system_e1; counter++ )
57 1 {
58 2 if( ((*e1_status)&(~E1_NOLOOP)) == E1_LOOP )
59 2 {
60 3 light &= ~(BIT0<<counter);
61 3 }
62 2 e1_status ++;
63 2 }
64 1 return light;
65 1 }
66
67 bit falsh_light_local = 0;
68 bit falsh_light_remote = 0;
69 BYTE light_e1_status( BYTE end, BYTE *show )
70 {
71 1 BYTE xdata counter;
72 1 BYTE xdata light = INVALID;
73 1 SYSTEM_INFOMATION *psys = &gSystemInfo;
74 1 bit falsh_light;
75 1
76 1 if( end == LOCAL_END_LIGHT )
77 1 {
78 2 falsh_light_local = ~falsh_light_local;
79 2 falsh_light = falsh_light_local;
80 2 }
81 1 else
82 1 {
83 2 falsh_light_remote = ~falsh_light_remote;
84 2 falsh_light = falsh_light_remote;
85 2 }
86 1
87 1 for( counter=0; counter<psys->max_system_e1; counter++ )
88 1 {
89 2 switch( show[counter] )
90 2 {
91 3 case FALSH:
92 3 if( falsh_light )
93 3 light |= (BIT0<<counter);
94 3 else
95 3 light &= ~(BIT0<<counter);
96 3 break;
97 3
98 3 case SHINE:
99 3 light &= ~(BIT0<<counter);
100 3 break;
101 3
102 3 case DROEN:
103 3 light |= (BIT0<<counter);
104 3 break;
105 3
106 3 default:
107 3 break;
108 3 }
109 2 }
110 1
111 1 return light;
112 1 }
113
114 /*本端E1告警点灯程序*/
115 void light_local_e1_alarm( SYSTEM_DEVICE_STATUS *psdev )
116 {
C51 COMPILER V7.20 LIGHT 02/21/2006 08:36:07 PAGE 3
117 1 BYTE xdata alarm = INVALID;
118 1 BYTE xdata loop = INVALID;
119 1 BYTE xdata light = INVALID;
120 1 BYTE xdata show[SYSTEM_DEVICE_TYPE_08J];
121 1
122 1 /*寻找是否有E1告警*/
123 1 alarm = light_e1_alarm( psdev->local.e1_status );
124 1
125 1 /*是否有环回设置*/
126 1 loop = light_e1_loop( psdev->remote.e1_status );
127 1
128 1 /*控制灯应该如何显示,环回:闪烁、中断:长亮、无告警:灭*/
129 1 get_e1_light( show, alarm, loop );
130 1
131 1 light = light_e1_status( LOCAL_END_LIGHT, show );
132 1
133 1 WriteChip( LOCAL_E1ALARM_ADDR, light );
134 1 }
135
136 void light_remote_e1_alarm( SYSTEM_DEVICE_STATUS *psdev )
137 {
138 1 BYTE xdata alarm = INVALID;
139 1 BYTE xdata loop = INVALID;
140 1 BYTE xdata light = INVALID;
141 1 BYTE xdata show[SYSTEM_DEVICE_TYPE_08J];
142 1
143 1 alarm = light_e1_alarm( psdev->remote.e1_status );
144 1 loop = light_e1_loop( psdev->local.e1_status );
145 1
146 1 get_e1_light( show, alarm, loop );
147 1
148 1 light = light_e1_status( REMOTE_END_LIGHT, show );
149 1
150 1 WriteChip( REMOTE_E1ALARM_ADDR, light );
151 1 }
152
153 BYTE light_fiber( BYTE* fiber_status )
154 {
155 1 BYTE xdata counter;
156 1 BYTE xdata light = INVALID;
157 1 BYTE xdata alarm;
158 1
159 1 for( counter=0; counter<MAX_FIBER_NOMBER; counter++ )
160 1 {
161 2 alarm = (*fiber_status)&(FIBER_ALARM_STATUS);
162 2 switch( alarm )
163 2 {
164 3 case FIBER_LOS:
165 3 light = ~BIT4;
166 3 break;
167 3
168 3 case FIBER_LFA:
169 3 light = ~BIT3;
170 3 break;
171 3
172 3 case FIBER_E_3:
173 3 light = ~BIT2;
174 3 break;
175 3
176 3 case FIBER_E_6:
177 3 /* light = ~BIT1;*/
178 3 break;
C51 COMPILER V7.20 LIGHT 02/21/2006 08:36:07 PAGE 4
179 3
180 3 default:
181 3 break;
182 3 }
183 2 fiber_status ++;
184 2 }
185 1 return light;
186 1 }
187
188 BYTE get_local_alarm_status( SYSTEM_DEVICE_STATUS *psdev )
189 {
190 1 return (psdev->local.alarm_hook&0xf0)>>4;
191 1 }
192
193 BYTE light_fiber_time( SYSTEM_DEVICE_STATUS *psdev )
194 {
195 1 BYTE xdata counter;
196 1 BYTE xdata light = 0xff;
197 1 BYTE xdata alarm;
198 1 BYTE xdata fiber_number = 1;
199 1 BYTE xdata local_chip;
200 1
201 1 if( psdev->local.program&0x01 )
202 1 fiber_number = 2;
203 1
204 1 for( counter=0; counter<fiber_number; counter++ )
205 1 {
206 2 alarm = (psdev->local.fiber_status[counter])&(~FIBER_NOALARM);
207 2 switch( alarm )
208 2 {
209 3 case FIBER_LFA:
210 3 light = ~BIT3;
211 3 break;
212 3
213 3 case FIBER_E_3:
214 3 light = ~BIT2;
215 3 break;
216 3
217 3 case FIBER_E_6:
218 3 /* light = ~BIT1;*/
219 3 break;
220 3
221 3 default:
222 3 local_chip = ReadChip( LOCAL_STATUS_ADDR );
223 3 if( (local_chip&0x03) != 0x03 )
224 3 light = ~BIT4;
225 3 break;
226 3 }
227 2 }
228 1 return light;
229 1 }
230
231 void light_local_fiber_alarm( SYSTEM_DEVICE_STATUS *psdev )
232 {
233 1 BYTE xdata light = INVALID;
234 1
235 1 light = light_fiber_time( psdev );
236 1 if( get_local_alarm_status( psdev ) != ALARM )
237 1 light &= ~BIT5;
238 1
239 1 WriteChip( LOCAL_FIBERALARM_ADDR, light );
240 1 }
C51 COMPILER V7.20 LIGHT 02/21/2006 08:36:07 PAGE 5
241
242 BYTE get_remote_alarm_status( SYSTEM_DEVICE_STATUS *psdev )
243 {
244 1 return (psdev->remote.alarm_hook&0xf0)>>4;
245 1 }
246
247 void light_remote_fiber_alarm( SYSTEM_DEVICE_STATUS *psdev )
248 {
249 1 BYTE xdata light = INVALID;
250 1
251 1 light = light_fiber( psdev->remote.fiber_status );
252 1 if( get_remote_alarm_status( psdev ) != ALARM )
253 1 light &= ~BIT5;
254 1
255 1 WriteChip( REMOTE_FIBERALARM_ADDR, light );
256 1 }
257
258 void light_alarm( SYSTEM_DEVICE_STATUS *psdev )
259 {
260 1 light_local_e1_alarm( psdev );
261 1 light_remote_e1_alarm( psdev );
262 1
263 1 light_local_fiber_alarm( psdev );
264 1 light_remote_fiber_alarm( psdev );
265 1 }
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1135 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 149
PDATA SIZE = ---- ----
DATA SIZE = ---- 38
IDATA SIZE = ---- ----
BIT SIZE = 2 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -