?? alarm.lst
字號:
1 .file "Alarm.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
101 .global SwitchOutDelay
102 .data
105 SwitchOutDelay:
106 0000 00 .byte 0
107 0001 6400 .word 100
108 .lcomm H_Alarm_step.0,1
109 .lcomm L_Alarm_step.1,1
110 .text
112 .global WatchDataTask
114 WatchDataTask:
1:task/Alarm.c **** /**********************************************
2:task/Alarm.c **** 公司名稱:
3:task/Alarm.c **** 文 件 名:Alarm.c
4:task/Alarm.c **** 版 本 號:
5:task/Alarm.c **** 程序設(shè)計(jì):
6:task/Alarm.c **** 說 明:
7:task/Alarm.c **** 完成日期:
8:task/Alarm.c **** 修改日期:
9:task/Alarm.c **** 功能摘要:
10:task/Alarm.c **** ***********************************************/
11:task/Alarm.c **** #define _Alarm
12:task/Alarm.c **** #include "includes.h"
13:task/Alarm.c ****
14:task/Alarm.c **** uint8 fH_Alarm;
15:task/Alarm.c **** uint8 fL_Alarm;
16:task/Alarm.c **** static uint16 LagVal; //報(bào)警回滯量:額定值的5%
17:task/Alarm.c ****
18:task/Alarm.c **** WAIT_TIME_STRUCT SwitchOutDelay = {0,_1S};
19:task/Alarm.c ****
20:task/Alarm.c **** void WatchDataTask(void);
21:task/Alarm.c **** void CountLag(void);
22:task/Alarm.c ****
23:task/Alarm.c ****
24:task/Alarm.c **** void WatchDataTask(void)
25:task/Alarm.c **** {
116 .LM1:
117 /* prologue: frame size=0 */
118 /* prologue end (size=0) */
26:task/Alarm.c **** static uint8 H_Alarm_step = 0;
27:task/Alarm.c **** static uint8 L_Alarm_step = 0;
28:task/Alarm.c **** uint16 Display_V = Ps/1000;
120 .LM2:
121 0000 8091 0000 lds r24,Ps
122 0004 9091 0000 lds r25,(Ps)+1
123 0008 A091 0000 lds r26,(Ps)+2
124 000c B091 0000 lds r27,(Ps)+3
125 0010 BC01 movw r22,r24
126 0012 CD01 movw r24,r26
127 0014 28EE ldi r18,lo8(1000)
128 0016 33E0 ldi r19,hi8(1000)
129 0018 40E0 ldi r20,hlo8(1000)
130 001a 50E0 ldi r21,hhi8(1000)
131 001c 00D0 rcall __udivmodsi4
132 001e F901 movw r30,r18
29:task/Alarm.c ****
30:task/Alarm.c **** if ((Rest5460A_Time == 0) && (SwitchOutDelay.fGetTime))
134 .LM3:
135 0020 3091 0000 lds r19,Rest5460A_Time
136 0024 3323 tst r19
137 0026 09F0 breq .+2
138 0028 D3C0 rjmp .L1
140 .LM4:
141 002a 8091 0000 lds r24,SwitchOutDelay
142 002e 8823 tst r24
143 0030 09F4 brne .+2
144 0032 CEC0 rjmp .L1
31:task/Alarm.c **** {
32:task/Alarm.c **** SwitchOutDelay.fGetTime = 0;
146 .LM5:
147 0034 3093 0000 sts SwitchOutDelay,r19
33:task/Alarm.c **** SwitchOutDelay.WaitTime = _1S;
149 .LM6:
150 0038 84E6 ldi r24,lo8(100)
151 003a 90E0 ldi r25,hi8(100)
152 003c 9093 0000 sts (SwitchOutDelay+1)+1,r25
153 0040 8093 0000 sts SwitchOutDelay+1,r24
34:task/Alarm.c **** if((H_Alarm<L_Alarm)||(AlarmSwitch & 0x01))
155 .LM7:
156 0044 4091 0000 lds r20,H_Alarm
157 0048 5091 0000 lds r21,(H_Alarm)+1
158 004c 6091 0000 lds r22,L_Alarm
159 0050 7091 0000 lds r23,(L_Alarm)+1
160 0054 4617 cp r20,r22
161 0056 5707 cpc r21,r23
162 0058 20F0 brlo .L4
163 005a 8091 0000 lds r24,AlarmSwitch
164 005e 80FF sbrs r24,0
165 0060 07C0 rjmp .L3
166 .L4:
35:task/Alarm.c **** {
36:task/Alarm.c **** IO_HighAlarm = ON;
168 .LM8:
169 0062 939A sbi 50-0x20,3
37:task/Alarm.c **** fH_Alarm = OFF;
171 .LM9:
172 0064 3093 0000 sts fH_Alarm,r19
38:task/Alarm.c **** IO_LowAlarm = ON;
174 .LM10:
175 0068 929A sbi 50-0x20,2
39:task/Alarm.c **** fL_Alarm = OFF;
177 .LM11:
178 006a 3093 0000 sts fL_Alarm,r19
40:task/Alarm.c **** return;
180 .LM12:
181 006e 0895 ret
182 .L3:
41:task/Alarm.c **** }
42:task/Alarm.c ****
43:task/Alarm.c ****
44:task/Alarm.c **** switch(H_Alarm_step)
184 .LM13:
185 0070 2091 0000 lds r18,H_Alarm_step.0
186 0074 822F mov r24,r18
187 0076 9927 clr r25
188 0078 8230 cpi r24,2
189 007a 9105 cpc r25,__zero_reg__
190 007c C9F0 breq .L11
191 007e 8330 cpi r24,3
192 0080 9105 cpc r25,__zero_reg__
193 0082 2CF4 brge .L23
194 0084 0097 sbiw r24,0
195 0086 61F0 breq .L6
196 0088 0197 sbiw r24,1
197 008a 71F0 breq .L8
198 008c 48C0 rjmp .L5
199 .L23:
200 008e 8430 cpi r24,4
201 0090 9105 cpc r25,__zero_reg__
202 0092 31F1 breq .L16
203 0094 8430 cpi r24,4
204 0096 9105 cpc r25,__zero_reg__
205 0098 CCF0 brlt .L14
206 009a 0597 sbiw r24,5
207 009c 71F1 breq .L19
208 009e 3FC0 rjmp .L5
209 .L6:
45:task/Alarm.c **** {
46:task/Alarm.c **** case 0:
47:task/Alarm.c **** if (Display_V > H_Alarm)
211 .LM14:
212 00a0 4E17 cp r20,r30
213 00a2 5F07 cpc r21,r31
214 00a4 E0F5 brsh .L5
215 00a6 25C0 rjmp .L43
216 .L8:
48:task/Alarm.c **** { H_Alarm_step++; }
49:task/Alarm.c **** break;
50:task/Alarm.c ****
51:task/Alarm.c **** case 1:
52:task/Alarm.c **** if (Display_V > H_Alarm)
218 .LM15:
219 00a8 4E17 cp r20,r30
220 00aa 5F07 cpc r21,r31
221 00ac 10F1 brlo .L43
222 00ae 0BC0 rjmp .L12
223 .L11:
53:task/Alarm.c **** { H_Alarm_step++; }
54:task/Alarm.c **** else
55:task/Alarm.c **** { H_Alarm_step = 0; }
56:task/Alarm.c **** break;
57:task/Alarm.c ****
58:task/Alarm.c **** case 2:
59:task/Alarm.c **** if (Display_V > H_Alarm)
225 .LM16:
226 00b0 4E17 cp r20,r30
227 00b2 5F07 cpc r21,r31
228 00b4 40F4 brsh .L12
60:task/Alarm.c **** {
61:task/Alarm.c **** H_Alarm_step++;
230 .LM17:
231 00b6 2F5F subi r18,lo8(-(1))
232 00b8 2093 0000 sts H_Alarm_step.0,r18
62:task/Alarm.c **** IO_HighAlarm = OFF;
234 .LM18:
235 00bc 9398 cbi 50-0x20,3
63:task/Alarm.c **** fH_Alarm = ON; //報(bào)警
237 .LM19:
238 00be 81E0 ldi r24,lo8(1)
239 00c0 8093 0000 sts fH_Alarm,r24
240 00c4 2CC0 rjmp .L5
241 .L12:
64:task/Alarm.c **** }
65:task/Alarm.c **** else
66:task/Alarm.c **** { H_Alarm_step = 0;}
243 .LM20:
244 00c6 3093 0000 sts H_Alarm_step.0,r19
67:task/Alarm.c **** break;
246 .LM21:
247 00ca 29C0 rjmp .L5
248 .L14:
68:task/Alarm.c ****
69:task/Alarm.c **** case 3:
70:task/Alarm.c **** if ((Display_V +LagVal) < H_Alarm ) //此處存在問題,數(shù)值設(shè)置太小時(shí)會(huì)出錯(cuò)
250 .LM22:
251 00cc 8091 0000 lds r24,LagVal
252 00d0 9091 0000 lds r25,(LagVal)+1
253 00d4 8E0F add r24,r30
254 00d6 9F1F adc r25,r31
255 00d8 8417 cp r24,r20
256 00da 9507 cpc r25,r21
257 00dc 00F5 brsh .L5
258 00de 09C0 rjmp .L43
259 .L16:
71:task/Alarm.c **** { H_Alarm_step++; }
72:task/Alarm.c **** break;
73:task/Alarm.c ****
74:task/Alarm.c **** case 4:
75:task/Alarm.c **** if ((Display_V +LagVal) < H_Alarm )
261 .LM23:
262 00e0 8091 0000 lds r24,LagVal
263 00e4 9091 0000 lds r25,(LagVal)+1
264 00e8 8E0F add r24,r30
265 00ea 9F1F adc r25,r31
266 00ec 8417 cp r24,r20
267 00ee 9507 cpc r25,r21
268 00f0 98F4 brsh .L20
269 .L43:
76:task/Alarm.c **** { H_Alarm_step++; }
271 .LM24:
272 00f2 2F5F subi r18,lo8(-(1))
273 00f4 2093 0000 sts H_Alarm_step.0,r18
274 00f8 12C0 rjmp .L5
275 .L19:
77:task/Alarm.c **** else
78:task/Alarm.c **** { H_Alarm_step = 3; }
79:task/Alarm.c **** break;
80:task/Alarm.c ****
81:task/Alarm.c **** case 5:
82:task/Alarm.c **** if ((Display_V +LagVal) < H_Alarm )
277 .LM25:
278 00fa 8091 0000 lds r24,LagVal
279 00fe 9091 0000 lds r25,(LagVal)+1
280 0102 8E0F add r24,r30
281 0104 9F1F adc r25,r31
282 0106 8417 cp r24,r20
283 0108 9507 cpc r25,r21
284 010a 30F4 brsh .L20
83:task/Alarm.c **** {
84:task/Alarm.c **** H_Alarm_step = 0;
286 .LM26:
287 010c 3093 0000 sts H_Alarm_step.0,r19
85:task/Alarm.c **** IO_HighAlarm = ON;
289 .LM27:
290 0110 939A sbi 50-0x20,3
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -