📄 adc_sensor.lst
字号:
1 .file "adc_sensor.c"
2 .arch atmega128
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:
223 .global adc_init
225 adc_init:
1:adc_sensor.c **** #include "adc_sensor.h"
2:adc_sensor.c **** //added by liulingyi
3:adc_sensor.c ****
4:adc_sensor.c **** uint8_t adc_init(void)
5:adc_sensor.c **** {
227 .LM1:
228 /* prologue: frame size=0 */
229 /* prologue end (size=0) */
230 .LBB2:
6:adc_sensor.c **** {
7:adc_sensor.c **** os_atomic_t _nesc_atomic = os_atomic_start();
232 .LM2:
233 0000 0E94 0000 call os_atomic_start
8:adc_sensor.c **** {
9:adc_sensor.c **** //ADC控制寄存器中ADIE位和ADSC位清零
10:adc_sensor.c **** ADCSRA &=0x86;
235 .LM3:
236 0004 96B1 in r25,38-0x20
237 0006 9678 andi r25,lo8(-122)
238 0008 96B9 out 38-0x20,r25
11:adc_sensor.c **** //设置参考电压,配置为默认情形
12:adc_sensor.c **** ADMUX=0;
240 .LM4:
241 000a 17B8 out 39-0x20,__zero_reg__
13:adc_sensor.c **** }
14:adc_sensor.c **** os_atomic_end(_nesc_atomic);
243 .LM5:
244 000c 0E94 0000 call os_atomic_end
245 .LBE2:
15:adc_sensor.c **** }
16:adc_sensor.c **** ADC_INTERRUPT_FLAG=0;
247 .LM6:
248 0010 1092 0000 sts ADC_INTERRUPT_FLAG,__zero_reg__
249 /* epilogue: frame size=0 */
250 0014 0895 ret
251 /* epilogue end (size=1) */
252 /* function adc_init size 11 (10) */
255 .global sensor_init
257 sensor_init:
17:adc_sensor.c ****
18:adc_sensor.c **** }
19:adc_sensor.c ****
20:adc_sensor.c **** uint8_t sensor_init(void)
21:adc_sensor.c **** {
259 .LM7:
260 /* prologue: frame size=0 */
261 0016 1F93 push r17
262 /* prologue end (size=1) */
263 .LBB3:
22:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
265 .LM8:
266 0018 0E94 0000 call os_atomic_start
267 001c 182F mov r17,r24
23:adc_sensor.c ****
24:adc_sensor.c **** {
25:adc_sensor.c ****
26:adc_sensor.c ****
27:adc_sensor.c **** OS_MAKE_INT1_OUTPUT();
269 .LM9:
270 001e 0E94 0000 call OS_MAKE_INT1_OUTPUT
28:adc_sensor.c **** OS_SET_INT1_PIN();
272 .LM10:
273 0022 0E94 0000 call OS_SET_INT1_PIN
29:adc_sensor.c **** //whether to configure the INT2 pin???
30:adc_sensor.c **** }
31:adc_sensor.c ****
32:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
275 .LM11:
276 0026 812F mov r24,r17
277 0028 0E94 0000 call os_atomic_end
278 .LBE3:
279 /* epilogue: frame size=0 */
280 002c 1F91 pop r17
281 002e 0895 ret
282 /* epilogue end (size=2) */
283 /* function sensor_init size 13 (10) */
289 .global read_data_task
291 read_data_task:
33:adc_sensor.c ****
34:adc_sensor.c **** }
35:adc_sensor.c ****
36:adc_sensor.c **** void read_data_task(void)
37:adc_sensor.c **** {
293 .LM12:
294 /* prologue: frame size=0 */
295 0030 1F93 push r17
296 0032 CF93 push r28
297 0034 DF93 push r29
298 /* prologue end (size=3) */
299 0036 19E0 ldi r17,lo8(9)
300 0038 C0E0 ldi r28,lo8(SENSOR_DATA_VALUE)
301 003a D0E0 ldi r29,hi8(SENSOR_DATA_VALUE)
302 .L9:
38:adc_sensor.c **** uint8_t loopnum=0;
39:adc_sensor.c **** while (loopnum<10)
40:adc_sensor.c **** {
41:adc_sensor.c ****
42:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]=0;
304 .LM13:
305 003c 1882 st Y,__zero_reg__
306 003e 1982 std Y+1,__zero_reg__
307 .LBB4:
43:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
309 .LM14:
310 0040 0E94 0000 call os_atomic_start
44:adc_sensor.c ****
45:adc_sensor.c **** {
46:adc_sensor.c **** //设置ADMUX寄存器
47:adc_sensor.c **** ADMUX |=0x01;
312 .LM15:
313 0044 389A sbi 39-0x20,0
48:adc_sensor.c **** //AD使能开始AD转换
49:adc_sensor.c **** ADCSRA |=0xe7;
315 .LM16:
316 0046 96B1 in r25,38-0x20
317 0048 976E ori r25,lo8(-25)
318 004a 96B9 out 38-0x20,r25
50:adc_sensor.c **** }
51:adc_sensor.c ****
52:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
320 .LM17:
321 004c 0E94 0000 call os_atomic_end
322 .LBE4:
53:adc_sensor.c ****
54:adc_sensor.c **** //查询ADCSRA中断,
55:adc_sensor.c ****
56:adc_sensor.c **** while(ADC_INTERRUPT_FLAG==0)
57:adc_sensor.c **** {
58:adc_sensor.c **** ADC_INTERRUPT_FLAG=(ADCSRA&0x10);
324 .LM18:
325 0050 8091 0000 lds r24,ADC_INTERRUPT_FLAG
326 0054 8823 tst r24
327 0056 39F4 brne .L13
328 .L8:
329 0058 86B1 in r24,38-0x20
330 005a 982F mov r25,r24
331 005c 9071 andi r25,lo8(16)
332 005e 84FF sbrs r24,4
333 0060 FBCF rjmp .L8
334 0062 9093 0000 sts ADC_INTERRUPT_FLAG,r25
335 .L13:
59:adc_sensor.c **** }
60:adc_sensor.c ****
61:adc_sensor.c **** //读取ADCH和ADCL
62:adc_sensor.c ****
63:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]=ADCL;
337 .LM19:
338 0066 84B1 in r24,36-0x20
339 0068 282F mov r18,r24
340 006a 3327 clr r19
341 006c 2883 st Y,r18
342 006e 3983 std Y+1,r19
64:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]+=(ADCH<<8);
344 .LM20:
345 0070 85B1 in r24,37-0x20
346 0072 9927 clr r25
347 0074 982F mov r25,r24
348 0076 8827 clr r24
349 0078 280F add r18,r24
350 007a 391F adc r19,r25
351 007c 2993 st Y+,r18
352 007e 3993 st Y+,r19
353 .LBB5:
65:adc_sensor.c **** //printf("sensor is %04x\n",SENSOR_DATA_VALUE[loopnum]);
66:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
355 .LM21:
356 0080 0E94 0000 call os_atomic_start
67:adc_sensor.c ****
68:adc_sensor.c **** {
69:adc_sensor.c **** //清除ADC中断标志
70:adc_sensor.c **** ADCSRA |=0x10;
358 .LM22:
359 0084 349A sbi 38-0x20,4
71:adc_sensor.c **** //关闭ADC转换使能
72:adc_sensor.c **** //ADCSRA &=0x7f;
73:adc_sensor.c **** }
74:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
361 .LM23:
362 0086 0E94 0000 call os_atomic_end
363 .LBE5:
75:adc_sensor.c ****
76:adc_sensor.c **** //printf("sensor is %04x\n",SENSOR_DATA_VALUE);
77:adc_sensor.c **** // SENSOR_DATA_VALUE=0;
78:adc_sensor.c **** adc_init();
365 .LM24:
366 008a 0E94 0000 call adc_init
79:adc_sensor.c **** //
80:adc_sensor.c **** //OS_CLR_INT1_PIN();
81:adc_sensor.c **** ADC_INTERRUPT_FLAG=0;
368 .LM25:
369 008e 1092 0000 sts ADC_INTERRUPT_FLAG,__zero_reg__
82:adc_sensor.c **** //sensor_init();
83:adc_sensor.c **** loopnum++;
371 .LM26:
372 0092 1150 subi r17,lo8(-(-1))
373 0094 17FF sbrs r17,7
374 0096 D2CF rjmp .L9
375 /* epilogue: frame size=0 */
376 0098 DF91 pop r29
377 009a CF91 pop r28
378 009c 1F91 pop r17
379 009e 0895 ret
380 /* epilogue end (size=4) */
381 /* function read_data_task size 56 (49) */
384 .comm OS_queue,16,1
385 .comm OS_sched_full,1,1
386 .comm OS_sched_free,1,1
387 .comm currentTime,2,1
388 .comm head_of_systimer_queue,2,1
389 .comm timestamp_H,2,1
390 .comm mState,4,1
391 .comm setIntervalFlag,1,1
392 .comm mScale,1,1
393 .comm mInterval,1,1
394 .comm queue_head,1,1
395 .comm queue_tail,1,1
396 .comm queue_size,1,1
397 .comm queue,3,1
398 .comm mTimerList,33,1
399 .comm cc2420_bramspi,1,1
400 .comm cc2420_rambuf,2,1
401 .comm cc2420_ramlen,1,1
402 .comm cc2420_ramaddr,2,1
403 .comm cc2420fifo_bspi,1,1
404 .comm cc2420fifo_txbuf,2,1
405 .comm cc2420fifo_txlength,1,1
406 .comm cc2420_rxbuf,4,1
407 .comm cc2420_rxlength,1,1
408 .comm cc2420_rxbuf_now,2,1
409 .comm cc2420_rxlength_now,1,1
410 .comm cc2420_rxbufuse,1,1
411 .comm rfpackernum,1,1
412 .comm cc2420_rxflag,1,1
413 .comm cc2420_currentparameters,28,1
414 .comm receive_timestamp,4,1
415 .comm send_timestamp,4,1
416 .comm cc2420_stateRadio,1,1
417 .comm cc2420_LocalAddr,2,1
418 .comm ieee_address,8,1
419 .comm GTSDirectionMask,1,1
420 .comm phy_channel_state,1,1
421 .comm rxbuf_flag,1,1
422 .comm ppib,3,1
423 .comm SENSOR_DATA_VALUE,20,1
424 .comm ADC_INTERRUPT_FLAG,1,1
466 .text
468 Letext:
469 /* File "adc_sensor.c": code 80 = 0x0050 ( 69), prologues 4, epilogues 7 */
DEFINED SYMBOLS
*ABS*:00000000 adc_sensor.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~2\LOCALS~1\Temp/ccEVaaaa.s:225 .text:00000000 adc_init
*COM*:00000001 ADC_INTERRUPT_FLAG
C:\DOCUME~1\ADMINI~2\LOCALS~1\Temp/ccEVaaaa.s:257 .text:00000016 sensor_init
C:\DOCUME~1\ADMINI~2\LOCALS~1\Temp/ccEVaaaa.s:291 .text:00000030 read_data_task
*COM*:00000014 SENSOR_DATA_VALUE
*COM*:00000010 OS_queue
*COM*:00000001 OS_sched_full
*COM*:00000001 OS_sched_free
*COM*:00000002 currentTime
*COM*:00000002 head_of_systimer_queue
*COM*:00000002 timestamp_H
*COM*:00000004 mState
*COM*:00000001 setIntervalFlag
*COM*:00000001 mScale
*COM*:00000001 mInterval
*COM*:00000001 queue_head
*COM*:00000001 queue_tail
*COM*:00000001 queue_size
*COM*:00000003 queue
*COM*:00000021 mTimerList
*COM*:00000001 cc2420_bramspi
*COM*:00000002 cc2420_rambuf
*COM*:00000001 cc2420_ramlen
*COM*:00000002 cc2420_ramaddr
*COM*:00000001 cc2420fifo_bspi
*COM*:00000002 cc2420fifo_txbuf
*COM*:00000001 cc2420fifo_txlength
*COM*:00000004 cc2420_rxbuf
*COM*:00000001 cc2420_rxlength
*COM*:00000002 cc2420_rxbuf_now
*COM*:00000001 cc2420_rxlength_now
*COM*:00000001 cc2420_rxbufuse
*COM*:00000001 rfpackernum
*COM*:00000001 cc2420_rxflag
*COM*:0000001c cc2420_currentparameters
*COM*:00000004 receive_timestamp
*COM*:00000004 send_timestamp
*COM*:00000001 cc2420_stateRadio
*COM*:00000002 cc2420_LocalAddr
*COM*:00000008 ieee_address
*COM*:00000001 GTSDirectionMask
*COM*:00000001 phy_channel_state
*COM*:00000001 rxbuf_flag
*COM*:00000003 ppib
C:\DOCUME~1\ADMINI~2\LOCALS~1\Temp/ccEVaaaa.s:468 .text:000000a0 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
os_atomic_start
os_atomic_end
OS_MAKE_INT1_OUTPUT
OS_SET_INT1_PIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -