?? hf3223.lst
字號:
1 .file "hf3223.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:
124 .global f_h_is_read
125 .global f_h_is_read
126 .section .bss
129 f_h_is_read:
130 0000 00 .skip 1,0
131 .global fhz_20ms
132 .global fhz_20ms
135 fhz_20ms:
136 0001 0000 0000 .skip 100,0
136 0000 0000
136 0000 0000
136 0000 0000
136 0000 0000
137 .global test_freq
138 .global test_freq
141 test_freq:
142 0065 0000 .skip 2,0
143 .global hf3223_f
144 .global hf3223_f
147 hf3223_f:
148 0067 0000 .skip 2,0
149 .global t0_cnt
150 .global t0_cnt
153 t0_cnt:
154 0069 0000 0000 .skip 20,0
154 0000 0000
154 0000 0000
154 0000 0000
154 0000 0000
155 .text
158 .global hf3223_convert
160 hf3223_convert:
1:drive/hf3223.c **** #include "inc/config.h"
2:drive/hf3223.c ****
3:drive/hf3223.c ****
4:drive/hf3223.c **** u16 t0_cnt[10]={ };//測頻值
5:drive/hf3223.c **** u16 hf3223_f =0;
6:drive/hf3223.c **** u16 test_freq=0;
7:drive/hf3223.c ****
8:drive/hf3223.c **** u08 fhz_20ms[100]={};//ARRAY FOR THE temerary buffer for cnter
9:drive/hf3223.c ****
10:drive/hf3223.c **** BOOL f_h_is_read = false;
11:drive/hf3223.c ****
12:drive/hf3223.c ****
13:drive/hf3223.c **** u08 hf3223_convert(u16 fhz)
14:drive/hf3223.c **** {
162 .LM1:
163 /* prologue: frame size=0 */
164 /* prologue end (size=0) */
165 0000 9C01 movw r18,r24
15:drive/hf3223.c **** u08 RH=100;
167 .LM2:
168 0002 84E6 ldi r24,lo8(100)
16:drive/hf3223.c **** //fhz = 2*fhz; //采樣周期為500ms
17:drive/hf3223.c **** if(fhz > 9595)
170 .LM3:
171 0004 95E2 ldi r25,hi8(9596)
172 0006 2C37 cpi r18,lo8(9596)
173 0008 3907 cpc r19,r25
174 000a 10F0 brlo .L2
18:drive/hf3223.c **** {
19:drive/hf3223.c **** RH=0;
176 .LM4:
177 000c 80E0 ldi r24,lo8(0)
178 000e 19C0 rjmp .L3
179 .L2:
20:drive/hf3223.c **** }
21:drive/hf3223.c **** else if( fhz < 8000)
181 .LM5:
182 0010 9FE1 ldi r25,hi8(8000)
183 0012 2034 cpi r18,lo8(8000)
184 0014 3907 cpc r19,r25
185 0016 A8F0 brlo .L3
22:drive/hf3223.c **** {
23:drive/hf3223.c **** RH =100;
24:drive/hf3223.c **** }
25:drive/hf3223.c **** else
26:drive/hf3223.c **** {
27:drive/hf3223.c **** RH = (( 9595-fhz)*10/148);
187 .LM6:
188 0018 8BE7 ldi r24,lo8(9595)
189 001a 95E2 ldi r25,hi8(9595)
190 001c 821B sub r24,r18
191 001e 930B sbc r25,r19
192 0020 9C01 movw r18,r24
193 0022 43E0 ldi r20,3
194 0024 220F 1: lsl r18
195 0026 331F rol r19
196 0028 4A95 dec r20
197 002a E1F7 brne 1b
198 002c 280F add r18,r24
199 002e 391F adc r19,r25
200 0030 820F add r24,r18
201 0032 931F adc r25,r19
202 0034 64E9 ldi r22,lo8(148)
203 0036 70E0 ldi r23,hi8(148)
204 0038 00D0 rcall __udivmodhi4
205 003a CB01 movw r24,r22
28:drive/hf3223.c **** if(RH>100)RH=100;
207 .LM7:
208 003c 6536 cpi r22,lo8(101)
209 003e 08F0 brlo .L3
210 0040 84E6 ldi r24,lo8(100)
211 .L3:
29:drive/hf3223.c **** }
30:drive/hf3223.c ****
31:drive/hf3223.c ****
32:drive/hf3223.c **** return RH;
33:drive/hf3223.c ****
34:drive/hf3223.c **** }
213 .LM8:
214 0042 9927 clr r25
215 /* epilogue: frame size=0 */
216 0044 0895 ret
217 /* epilogue end (size=1) */
218 /* function hf3223_convert size 35 (34) */
223 .Lscope0:
225 .global hf3223_read
227 hf3223_read:
35:drive/hf3223.c ****
36:drive/hf3223.c ****
37:drive/hf3223.c ****
38:drive/hf3223.c ****
39:drive/hf3223.c **** void hf3223_read(void)
40:drive/hf3223.c **** {
229 .LM9:
230 /* prologue: frame size=0 */
231 /* prologue end (size=0) */
41:drive/hf3223.c **** if( f_h_is_read ==true)
233 .LM10:
234 0046 4091 0000 lds r20,f_h_is_read
235 004a 4130 cpi r20,lo8(1)
236 004c 09F0 breq .+2
237 004e 4DC0 rjmp .L7
42:drive/hf3223.c **** {
43:drive/hf3223.c **** hf3223_f = t0_cnt[0]+t0_cnt[1]+
239 .LM11:
240 0050 8091 0000 lds r24,t0_cnt
241 0054 9091 0000 lds r25,(t0_cnt)+1
242 0058 2091 0000 lds r18,t0_cnt+2
243 005c 3091 0000 lds r19,(t0_cnt+2)+1
244 0060 820F add r24,r18
245 0062 931F adc r25,r19
246 0064 2091 0000 lds r18,t0_cnt+4
247 0068 3091 0000 lds r19,(t0_cnt+4)+1
248 006c 820F add r24,r18
249 006e 931F adc r25,r19
250 0070 2091 0000 lds r18,t0_cnt+6
251 0074 3091 0000 lds r19,(t0_cnt+6)+1
252 0078 820F add r24,r18
253 007a 931F adc r25,r19
254 007c 2091 0000 lds r18,t0_cnt+8
255 0080 3091 0000 lds r19,(t0_cnt+8)+1
256 0084 820F add r24,r18
257 0086 931F adc r25,r19
258 0088 2091 0000 lds r18,t0_cnt+10
259 008c 3091 0000 lds r19,(t0_cnt+10)+1
260 0090 820F add r24,r18
261 0092 931F adc r25,r19
262 0094 2091 0000 lds r18,t0_cnt+12
263 0098 3091 0000 lds r19,(t0_cnt+12)+1
264 009c 820F add r24,r18
265 009e 931F adc r25,r19
266 00a0 2091 0000 lds r18,t0_cnt+14
267 00a4 3091 0000 lds r19,(t0_cnt+14)+1
268 00a8 820F add r24,r18
269 00aa 931F adc r25,r19
270 00ac 2091 0000 lds r18,t0_cnt+16
271 00b0 3091 0000 lds r19,(t0_cnt+16)+1
272 00b4 820F add r24,r18
273 00b6 931F adc r25,r19
274 00b8 2091 0000 lds r18,t0_cnt+18
275 00bc 3091 0000 lds r19,(t0_cnt+18)+1
276 00c0 820F add r24,r18
277 00c2 931F adc r25,r19
278 00c4 9093 0000 sts (hf3223_f)+1,r25
279 00c8 8093 0000 sts hf3223_f,r24
44:drive/hf3223.c **** t0_cnt[2]+t0_cnt[3]+
45:drive/hf3223.c **** t0_cnt[4]+t0_cnt[5]+
46:drive/hf3223.c **** t0_cnt[6]+t0_cnt[7]+
47:drive/hf3223.c **** t0_cnt[8]+t0_cnt[9];
48:drive/hf3223.c ****
49:drive/hf3223.c **** if( hf3223_f < 5000 )
281 .LM12:
282 00cc 8858 subi r24,lo8(5000)
283 00ce 9341 sbci r25,hi8(5000)
284 00d0 18F4 brsh .L9
50:drive/hf3223.c **** {
51:drive/hf3223.c **** f_sensor_h = false;
286 .LM13:
287 00d2 1092 0000 sts f_sensor_h,__zero_reg__
288 00d6 02C0 rjmp .L10
289 .L9:
52:drive/hf3223.c **** }
53:drive/hf3223.c **** else
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -