📄 relay.lst
字号:
1 .file "relay.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:
127 .global CompareTem
129 CompareTem:
1:drive/relay.c **** #include"inc/config.h"
2:drive/relay.c ****
3:drive/relay.c ****
4:drive/relay.c **** u08 CompareTem( int16 tem , u08 statenow )
5:drive/relay.c **** {
131 .LM1:
132 /* prologue: frame size=0 */
133 /* prologue end (size=0) */
134 0000 9C01 movw r18,r24
6:drive/relay.c ****
7:drive/relay.c **** if( statenow == NO_ALARM)/////////////////当前状态为非报警状态
136 .LM2:
137 0002 6623 tst r22
138 0004 79F4 brne .L2
8:drive/relay.c **** {
9:drive/relay.c **** if (tem <= TL ) //低温报警
140 .LM3:
141 0006 8091 0000 lds r24,TL
142 000a 9091 0000 lds r25,(TL)+1
143 000e 8217 cp r24,r18
144 0010 9307 cpc r25,r19
145 0012 34F5 brge .L18
10:drive/relay.c **** {
11:drive/relay.c **** statenow= TL_ALARM;
12:drive/relay.c **** }
13:drive/relay.c **** else if (tem >= TH ) //高温报警
147 .LM4:
148 0014 8091 0000 lds r24,TH
149 0018 9091 0000 lds r25,(TH)+1
150 001c 2817 cp r18,r24
151 001e 3907 cpc r19,r25
152 0020 5CF1 brlt .L6
153 0022 09C0 rjmp .L17
154 .L2:
14:drive/relay.c **** {
15:drive/relay.c **** statenow= TH_ALARM;
16:drive/relay.c **** }
17:drive/relay.c ****
18:drive/relay.c **** }
19:drive/relay.c ****
20:drive/relay.c ****
21:drive/relay.c ****
22:drive/relay.c **** else if( statenow ==TL_ALARM ) //已经低温报警,看是否停止
156 .LM5:
157 0024 6230 cpi r22,lo8(2)
158 0026 99F4 brne .L7
23:drive/relay.c **** {
24:drive/relay.c **** if (tem >= TH)
160 .LM6:
161 0028 8091 0000 lds r24,TH
162 002c 9091 0000 lds r25,(TH)+1
163 0030 2817 cp r18,r24
164 0032 3907 cpc r19,r25
165 0034 14F0 brlt .L8
166 .L17:
25:drive/relay.c **** {
26:drive/relay.c **** statenow= TH_ALARM;
168 .LM7:
169 0036 61E0 ldi r22,lo8(1)
170 0038 1FC0 rjmp .L6
171 .L8:
27:drive/relay.c ****
28:drive/relay.c **** }
29:drive/relay.c **** else
30:drive/relay.c **** if (tem >= (TL+100) )
173 .LM8:
174 003a 8091 0000 lds r24,TL
175 003e 9091 0000 lds r25,(TL)+1
176 0042 8C59 subi r24,lo8(-(100))
177 0044 9F4F sbci r25,hi8(-(100))
178 0046 2817 cp r18,r24
179 0048 3907 cpc r19,r25
180 004a B4F0 brlt .L6
181 004c 14C0 rjmp .L16
182 .L7:
31:drive/relay.c **** {
32:drive/relay.c **** statenow= NO_ALARM;
33:drive/relay.c ****
34:drive/relay.c **** }
35:drive/relay.c **** }
36:drive/relay.c ****
37:drive/relay.c ****
38:drive/relay.c **** else if( statenow ==TH_ALARM ) //已经高温报警,看是否停止
184 .LM9:
185 004e 6130 cpi r22,lo8(1)
186 0050 99F4 brne .L6
39:drive/relay.c **** {
40:drive/relay.c **** if( tem <=TL)
188 .LM10:
189 0052 8091 0000 lds r24,TL
190 0056 9091 0000 lds r25,(TL)+1
191 005a 8217 cp r24,r18
192 005c 9307 cpc r25,r19
193 005e 14F0 brlt .L13
194 .L18:
41:drive/relay.c **** {
42:drive/relay.c **** statenow= TL_ALARM;
196 .LM11:
197 0060 62E0 ldi r22,lo8(2)
198 0062 0AC0 rjmp .L6
199 .L13:
43:drive/relay.c ****
44:drive/relay.c **** }
45:drive/relay.c **** else if (tem <= (TH-100) )
201 .LM12:
202 0064 8091 0000 lds r24,TH
203 0068 9091 0000 lds r25,(TH)+1
204 006c 8456 subi r24,lo8(-(-100))
205 006e 9040 sbci r25,hi8(-(-100))
206 0070 8217 cp r24,r18
207 0072 9307 cpc r25,r19
208 0074 0CF0 brlt .L6
209 .L16:
46:drive/relay.c **** {
47:drive/relay.c **** statenow= NO_ALARM;
211 .LM13:
212 0076 60E0 ldi r22,lo8(0)
213 .L6:
48:drive/relay.c **** }
49:drive/relay.c **** }
50:drive/relay.c ****
51:drive/relay.c **** return statenow; //返回判断结果
52:drive/relay.c ****
53:drive/relay.c **** }
215 .LM14:
216 0078 862F mov r24,r22
217 007a 9927 clr r25
218 /* epilogue: frame size=0 */
219 007c 0895 ret
220 /* epilogue end (size=1) */
221 /* function CompareTem size 63 (62) */
223 .Lscope0:
227 .global CompareHum
229 CompareHum:
54:drive/relay.c ****
55:drive/relay.c ****
56:drive/relay.c ****
57:drive/relay.c **** /************************************************************************************
58:drive/relay.c **** ** 函数功能: 湿度比较函数
59:drive/relay.c **** ** 传入参数: 最新湿度,通道号,当前状态
60:drive/relay.c **** ** 输出: 重新判断后的报警状态
61:drive/relay.c **** ************************************************************************************/
62:drive/relay.c **** u08 CompareHum( u08 Hum , u08 statenow )
63:drive/relay.c **** {
231 .LM15:
232 /* prologue: frame size=0 */
233 /* prologue end (size=0) */
234 007e 282F mov r18,r24
235 0080 8091 0000 lds r24,HH
64:drive/relay.c **** if( statenow == NO_ALARM) //没有报警
237 .LM16:
238 0084 6623 tst r22
239 0086 21F4 brne .L20
65:drive/relay.c **** {
66:drive/relay.c **** if (Hum >= HH ) //高湿报警
241 .LM17:
242 0088 2817 cp r18,r24
243 008a 48F0 brlo .L22
67:drive/relay.c **** {
68:drive/relay.c **** statenow = HH_ALARM;
245 .LM18:
246 008c 61E0 ldi r22,lo8(1)
247 008e 07C0 rjmp .L22
248 .L20:
69:drive/relay.c **** }
70:drive/relay.c **** }
71:drive/relay.c **** else //已经高湿
72:drive/relay.c **** {
73:drive/relay.c **** if (Hum <= (HH-10 )) //复位报警 ,否则保持原状态
250 .LM19:
251 0090 3327 clr r19
252 0092 9927 clr r25
253 0094 0A97 sbiw r24,10
254 0096 8217 cp r24,r18
255 0098 9307 cpc r25,r19
256 009a 0CF0 brlt .L22
74:drive/relay.c **** {
75:drive/relay.c **** statenow = NO_ALARM;
258 .LM20:
259 009c 60E0 ldi r22,lo8(0)
260 .L22:
76:drive/relay.c **** }
77:drive/relay.c **** }
78:drive/relay.c **** return statenow;
79:drive/relay.c **** }
262 .LM21:
263 009e 862F mov r24,r22
264 00a0 9927 clr r25
265 /* epilogue: frame size=0 */
266 00a2 0895 ret
267 /* epilogue end (size=1) */
268 /* function CompareHum size 19 (18) */
270 .Lscope1:
273 .global heat
275 heat:
80:drive/relay.c ****
81:drive/relay.c **** /**------------------------------------------------------------------**/
82:drive/relay.c **** void RelayJudge( u08 Tstate ,u08 Hstate)
83:drive/relay.c **** {
84:drive/relay.c **** //湿度继电1器判断
85:drive/relay.c **** if( Hstate==HH_ALARM && Tstate!=TH_ALARM)
86:drive/relay.c **** {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -