📄 diag.lst
字号:
ARM COMPILER V2.32a, diag 08/08/05 09:50:22 PAGE 1
ARM COMPILER V2.32a, COMPILATION OF MODULE diag
OBJECT MODULE PLACED IN diag.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe diag.c THUMB OPTIMIZE(0,SPEED) BROWSE DEBUG TABS(4)
stmt level source
1 // diag.c
2
3 /********************************************************************/
4 /* */
5 /* Diagnostic routines */
6 /* */
7 /********************************************************************/
8 #include <ADuC7020.h>
9 #include "common.h"
10
11 void diag(void){
12 1 temp_diag(A2h[96], A2h[97], 0);
13 1 voltage_diag(A2h[98], A2h[99], 8);
14 1 tx_bias_diag(A2h[100], A2h[101], 16);
15 1 tx_power_diag(A2h[102], A2h[103], 24);
16 1 rx_power_diag(A2h[104], A2h[105], 32);
17 1 check_los_ratesel();
18 1 }
19
20 /********************************************************************/
21 /* */
22 /* Temperature Diagnostic routine */
23 /* */
24 /********************************************************************/
25 void temp_diag(BYTE msb, BYTE lsb, BYTE addr){
26 1
27 1 // Temperature diag. parameters located from address 0
28 1 BYTE result;
29 1 HALFWORD monitor = (msb<<8) + lsb;
30 1 HALFWORD high_alarm = (A2h[addr ]<<8) + A2h[addr+1];
31 1 HALFWORD low_alarm = (A2h[addr+2]<<8) + A2h[addr+3];
32 1 HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
33 1 HALFWORD low_warning = (A2h[addr+6]<<8) + A2h[addr+7];
34 1
35 1 if (monitor>high_alarm) result=5;
36 1 else if (monitor>high_warning && monitor<=high_alarm) result=4;
37 1 else if (monitor<=high_warning && monitor>=low_warning) result=3;
38 1 else if (monitor<low_warning && monitor>= low_alarm) result=2;
39 1 else result=1;
40 1
41 1 switch (result)
42 1 {
43 2 case 5:
44 2 A2h[112] |= 0x80; // set high alarm flag bit7
45 2 A2h[116] |= 0x80; // set high warning flag bit7
46 2 A2h[116] &= 0xBF; // clear low warning flag bit6
47 2 A2h[112] &= 0xBF; // clear low alarm flag bit6
48 2 break;
49 2 case 4:
50 2 A2h[112] &= 0x7F; // clear high alarm flag bit7
51 2 A2h[116] |= 0x80; // set high warning flag bit7
52 2 A2h[116] &= 0xBF; // clear low warning flag bit6
53 2 A2h[112] &= 0xBF; // clear low alarm flag bit6
54 2 break;
55 2 case 3:
56 2 A2h[112] &= 0x7F; // clear high alarm flag bit7
57 2 A2h[116] &= 0x7F; // clear high warning flag bit7
58 2 A2h[116] &= 0xBF; // clear low warning flag bit6
59 2 A2h[112] &= 0xBF; // clear low alarm flag bit6
ARM COMPILER V2.32a, diag 08/08/05 09:50:22 PAGE 2
60 2 break;
61 2 case 2:
62 2 A2h[112] &= 0x7F; // clear high alarm flag bit7
63 2 A2h[116] &= 0x7F; // clear high warning flag bit7
64 2 A2h[116] |= 0x40; // set low warning flag bit6
65 2 A2h[112] &= 0xBF; // clear low alarm flag bit6
66 2 break;
67 2 case 1:
68 2 A2h[112] &= 0x7F; // clear high alarm flag bit7
69 2 A2h[116] &= 0x7F; // clear high warning flag bit7
70 2 A2h[116] |= 0x40; // set low warning flag bit6
71 2 A2h[112] |= 0x40; // set low alarm flag bit6
72 2 break;
73 2 }
74 1 }
75
76 /********************************************************************/
77 /* */
78 /* Voltage Diagnostic routine */
79 /* */
80 /********************************************************************/
81 void voltage_diag(BYTE msb, BYTE lsb, BYTE addr){
82 1
83 1 BYTE result;
84 1 HALFWORD monitor = (msb<<8) + lsb;
85 1 HALFWORD high_alarm = (A2h[addr ]<<8) + A2h[addr+1];
86 1 HALFWORD low_alarm = (A2h[addr+2]<<8) + A2h[addr+3];
87 1 HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
88 1 HALFWORD low_warning = (A2h[addr+6]<<8) + A2h[addr+7];
89 1
90 1 if (monitor>high_alarm) result=5;
91 1 else if (monitor>high_warning && monitor<=high_alarm) result=4;
92 1 else if (monitor<=high_warning && monitor>=low_warning) result=3;
93 1 else if (monitor<low_warning && monitor>= low_alarm) result=2;
94 1 else result=1;
95 1
96 1 switch (result)
97 1 {
98 2 case 5:
99 2 A2h[112] |= 0x20; // set high alarm flag bit5
100 2 A2h[116] |= 0x20; // set high warning flag bit5
101 2 A2h[116] &= 0xEF; // clear low warning flag bit4
102 2 A2h[112] &= 0xEF; // clear low alarm flag bit4
103 2 break;
104 2 case 4:
105 2 A2h[112] &= 0xDF; // clear high alarm flag bit5
106 2 A2h[116] |= 0x20; // set high warning flag bit5
107 2 A2h[116] &= 0xEF; // clear low warning flag bit4
108 2 A2h[112] &= 0xEF; // clear low alarm flag bit4
109 2 break;
110 2 case 3:
111 2 A2h[112] &= 0xDF; // clear high alarm flag bit5
112 2 A2h[116] &= 0xDF; // clear high warning flag bit5
113 2 A2h[116] &= 0xEF; // clear low warning flag bit4
114 2 A2h[112] &= 0xEF; // clear low alarm flag bit4
115 2 break;
116 2 case 2:
117 2 A2h[112] &= 0xDF; // clear high alarm flag bit5
118 2 A2h[116] &= 0xDF; // clear high warning flag bit5
119 2 A2h[116] |= 0x10; // set low warning flag bit4
120 2 A2h[112] &= 0xEF; // clear low alarm flag bit4
121 2 break;
122 2 case 1:
123 2 A2h[112] &= 0xDF; // clear high alarm flag bit5
124 2 A2h[116] &= 0xDF; // clear high warning flag bit5
125 2 A2h[116] |= 0x10; // set low warning flag bit4
ARM COMPILER V2.32a, diag 08/08/05 09:50:22 PAGE 3
126 2 A2h[112] |= 0x10; // set low alarm flag bit4
127 2 break;
128 2 }
129 1 }
130
131 /********************************************************************/
132 /* */
133 /* TX Bias Diagnostic routine */
134 /* */
135 /********************************************************************/
136 void tx_bias_diag(BYTE msb, BYTE lsb, BYTE addr){
137 1
138 1 BYTE result;
139 1 HALFWORD monitor = (msb<<8) + lsb;
140 1 HALFWORD high_alarm = (A2h[addr ]<<8) + A2h[addr+1];
141 1 HALFWORD low_alarm = (A2h[addr+2]<<8) + A2h[addr+3];
142 1 HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
143 1 HALFWORD low_warning = (A2h[addr+6]<<8) + A2h[addr+7];
144 1
145 1 if (monitor>high_alarm) result=5;
146 1 else if (monitor>high_warning && monitor<=high_alarm) result=4;
147 1 else if (monitor<=high_warning && monitor>=low_warning) result=3;
148 1 else if (monitor<low_warning && monitor>= low_alarm) result=2;
149 1 else result=1;
150 1
151 1 switch (result)
152 1 {
153 2 case 5:
154 2 A2h[112] |= 0x08; // set high alarm flag bit3
155 2 A2h[116] |= 0x08; // set high warning flag bit3
156 2 A2h[116] &= 0xFB; // clear low warning flag bit2
157 2 A2h[112] &= 0xFB; // clear low alarm flag bit2
158 2 break;
159 2 case 4:
160 2 A2h[112] &= 0xF7; // clear high alarm flag bit3
161 2 A2h[116] |= 0x08; // set high warning flag bit3
162 2 A2h[116] &= 0xFB; // clear low warning flag bit2
163 2 A2h[112] &= 0xFB; // clear low alarm flag bit2
164 2 break;
165 2 case 3:
166 2 A2h[112] &= 0xF7; // clear high alarm flag bit3
167 2 A2h[116] &= 0xF7; // clear high warning flag bit3
168 2 A2h[116] &= 0xFB; // clear low warning flag bit2
169 2 A2h[112] &= 0xFB; // clear low alarm flag bit2
170 2 break;
171 2 case 2:
172 2 A2h[112] &= 0xF7; // clear high alarm flag bit3
173 2 A2h[116] &= 0xF7; // clear high warning flag bit3
174 2 A2h[116] |= 0x04; // set low warning flag bit2
175 2 A2h[112] &= 0xFB; // clear low alarm flag bit2
176 2 break;
177 2 case 1:
178 2 A2h[112] &= 0xF7; // clear high alarm flag bit3
179 2 A2h[116] &= 0xF7; // clear high warning flag bit3
180 2 A2h[116] |= 0x04; // set low warning flag bit2
181 2 A2h[112] |= 0x04; // set low alarm flag bit2
182 2 break;
183 2 }
184 1 }
185
186 /********************************************************************/
187 /* */
188 /* TX Power Diagnostic routine */
189 /* */
190 /********************************************************************/
191 void tx_power_diag(BYTE msb, BYTE lsb, BYTE addr){
ARM COMPILER V2.32a, diag 08/08/05 09:50:22 PAGE 4
192 1
193 1 BYTE result;
194 1 HALFWORD monitor = (msb<<8) + lsb;
195 1 HALFWORD high_alarm = (A2h[addr ]<<8) + A2h[addr+1];
196 1 HALFWORD low_alarm = (A2h[addr+2]<<8) + A2h[addr+3];
197 1 HALFWORD high_warning = (A2h[addr+4]<<8) + A2h[addr+5];
198 1 HALFWORD low_warning = (A2h[addr+6]<<8) + A2h[addr+7];
199 1
200 1 if (monitor>high_alarm) result=5;
201 1 else if (monitor>high_warning && monitor<=high_alarm) result=4;
202 1 else if (monitor<=high_warning && monitor>=low_warning) result=3;
203 1 else if (monitor<low_warning && monitor>= low_alarm) result=2;
204 1 else result=1;
205 1
206 1 switch (result)
207 1 {
208 2 case 5:
209 2 A2h[112] |= 0x02; // set high alarm flag bit1
210 2 A2h[116] |= 0x02; // set high warning flag bit1
211 2 A2h[116] &= 0xFE; // clear low warning flag bit0
212 2 A2h[112] &= 0xFE; // clear low alarm flag bit0
213 2 break;
214 2 case 4:
215 2 A2h[112] &= 0xFD; // clear high alarm flag bit1
216 2 A2h[116] |= 0x02; // set high warning flag bit1
217 2 A2h[116] &= 0xFE; // clear low warning flag bit0
218 2 A2h[112] &= 0xFE; // clear low alarm flag bit0
219 2 break;
220 2 case 3:
221 2 A2h[112] &= 0xFD; // clear high alarm flag bit1
222 2 A2h[116] &= 0xFD; // clear high warning flag bit1
223 2 A2h[116] &= 0xFE; // clear low warning flag bit0
224 2 A2h[112] &= 0xFE; // clear low alarm flag bit0
225 2 break;
226 2 case 2:
227 2 A2h[112] &= 0xFD; // clear high alarm flag bit1
228 2 A2h[116] &= 0xFD; // clear high warning flag bit1
229 2 A2h[116] |= 0x01; // set low warning flag bit0
230 2 A2h[112] &= 0xFE; // clear low alarm flag bit0
231 2 break;
232 2 case 1:
233 2 A2h[112] &= 0xFD; // clear high alarm flag bit1
234 2 A2h[116] &= 0xFD; // clear high warning flag bit1
235 2 A2h[116] |= 0x01; // set low warning flag bit0
236 2 A2h[112] |= 0x01; // set low alarm flag bit0
237 2 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -