📄 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:
120 .global adc_init
122 adc_init:
1:adc_sensor.c **** //----------------------------------------------------//
2:adc_sensor.c **** //-------Institute Of Computing Technology-----------//
3:adc_sensor.c **** //------------Chinese Academic Science---------------//
4:adc_sensor.c **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
5:adc_sensor.c **** //----------------------------------------------------//
6:adc_sensor.c ****
7:adc_sensor.c **** /**
8:adc_sensor.c **** * www.wsn.net.cn
9:adc_sensor.c **** * @copyright:nbicc_lpp
10:adc_sensor.c **** * @data:2005.11.22
11:adc_sensor.c **** * @version:0.0.1
12:adc_sensor.c **** * @updata:$
13:adc_sensor.c **** *
14:adc_sensor.c **** */
15:adc_sensor.c **** #include "adc_sensor.h"
16:adc_sensor.c ****
17:adc_sensor.c ****
18:adc_sensor.c **** uint8_t adc_init(void)
19:adc_sensor.c **** {
124 .LM1:
125 /* prologue: frame size=0 */
126 /* prologue end (size=0) */
127 .LBB2:
20:adc_sensor.c **** {
21:adc_sensor.c **** os_atomic_t _nesc_atomic = os_atomic_start();
129 .LM2:
130 0000 0E94 0000 call os_atomic_start
22:adc_sensor.c **** {
23:adc_sensor.c **** //ADC控制寄存器中ADIE位和ADSC位清零
24:adc_sensor.c **** ADCSRA &=0x86;
132 .LM3:
133 0004 96B1 in r25,38-0x20
134 0006 9678 andi r25,lo8(-122)
135 0008 96B9 out 38-0x20,r25
25:adc_sensor.c **** //设置参考电压,配置为默认情形
26:adc_sensor.c **** ADMUX=0;
137 .LM4:
138 000a 17B8 out 39-0x20,__zero_reg__
27:adc_sensor.c **** }
28:adc_sensor.c **** os_atomic_end(_nesc_atomic);
140 .LM5:
141 000c 0E94 0000 call os_atomic_end
142 .LBE2:
29:adc_sensor.c **** }
30:adc_sensor.c **** ADC_INTERRUPT_FLAG=0;
144 .LM6:
145 0010 1092 0000 sts ADC_INTERRUPT_FLAG,__zero_reg__
146 /* epilogue: frame size=0 */
147 0014 0895 ret
148 /* epilogue end (size=1) */
149 /* function adc_init size 11 (10) */
152 .global sensor_init
154 sensor_init:
31:adc_sensor.c ****
32:adc_sensor.c **** }
33:adc_sensor.c ****
34:adc_sensor.c **** uint8_t sensor_init(void)
35:adc_sensor.c **** {
156 .LM7:
157 /* prologue: frame size=0 */
158 0016 1F93 push r17
159 /* prologue end (size=1) */
160 .LBB3:
36:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
162 .LM8:
163 0018 0E94 0000 call os_atomic_start
164 001c 182F mov r17,r24
37:adc_sensor.c ****
38:adc_sensor.c **** {
39:adc_sensor.c ****
40:adc_sensor.c ****
41:adc_sensor.c **** OS_MAKE_INT1_OUTPUT();
166 .LM9:
167 001e 0E94 0000 call OS_MAKE_INT1_OUTPUT
42:adc_sensor.c **** OS_SET_INT1_PIN();
169 .LM10:
170 0022 0E94 0000 call OS_SET_INT1_PIN
43:adc_sensor.c **** //whether to configure the INT2 pin???
44:adc_sensor.c **** }
45:adc_sensor.c ****
46:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
172 .LM11:
173 0026 812F mov r24,r17
174 0028 0E94 0000 call os_atomic_end
175 .LBE3:
176 /* epilogue: frame size=0 */
177 002c 1F91 pop r17
178 002e 0895 ret
179 /* epilogue end (size=2) */
180 /* function sensor_init size 13 (10) */
185 .data
186 .LC0:
187 0000 7365 6E73 .string "sensor is %04x\n"
187 6F72 2069
187 7320 2530
187 3478 0A00
188 .text
190 .global read_data_task
192 read_data_task:
47:adc_sensor.c ****
48:adc_sensor.c **** }
49:adc_sensor.c ****
50:adc_sensor.c **** void read_data_task(void)
51:adc_sensor.c **** {
194 .LM12:
195 /* prologue: frame size=0 */
196 0030 1F93 push r17
197 0032 CF93 push r28
198 0034 DF93 push r29
199 /* prologue end (size=3) */
200 0036 19E0 ldi r17,lo8(9)
201 0038 C0E0 ldi r28,lo8(SENSOR_DATA_VALUE)
202 003a D0E0 ldi r29,hi8(SENSOR_DATA_VALUE)
203 .L9:
52:adc_sensor.c **** uint8_t loopnum=0;
53:adc_sensor.c **** while (loopnum<10)
54:adc_sensor.c **** {
55:adc_sensor.c ****
56:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]=0;
205 .LM13:
206 003c 1882 st Y,__zero_reg__
207 003e 1982 std Y+1,__zero_reg__
208 .LBB4:
57:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
210 .LM14:
211 0040 0E94 0000 call os_atomic_start
58:adc_sensor.c ****
59:adc_sensor.c **** {
60:adc_sensor.c **** //设置ADMUX寄存器
61:adc_sensor.c **** ADMUX |=0x01;
213 .LM15:
214 0044 389A sbi 39-0x20,0
62:adc_sensor.c **** //AD使能开始AD转换
63:adc_sensor.c **** ADCSRA |=0xe7;
216 .LM16:
217 0046 96B1 in r25,38-0x20
218 0048 976E ori r25,lo8(-25)
219 004a 96B9 out 38-0x20,r25
64:adc_sensor.c **** }
65:adc_sensor.c ****
66:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
221 .LM17:
222 004c 0E94 0000 call os_atomic_end
223 .LBE4:
67:adc_sensor.c ****
68:adc_sensor.c **** //查询ADCSRA中断,
69:adc_sensor.c ****
70:adc_sensor.c **** while(ADC_INTERRUPT_FLAG==0)
71:adc_sensor.c **** {
72:adc_sensor.c **** ADC_INTERRUPT_FLAG=(ADCSRA&0x10);
225 .LM18:
226 0050 8091 0000 lds r24,ADC_INTERRUPT_FLAG
227 0054 8823 tst r24
228 0056 39F4 brne .L13
229 .L8:
230 0058 86B1 in r24,38-0x20
231 005a 982F mov r25,r24
232 005c 9071 andi r25,lo8(16)
233 005e 84FF sbrs r24,4
234 0060 FBCF rjmp .L8
235 0062 9093 0000 sts ADC_INTERRUPT_FLAG,r25
236 .L13:
73:adc_sensor.c **** }
74:adc_sensor.c ****
75:adc_sensor.c **** //读取ADCH和ADCL
76:adc_sensor.c ****
77:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]=ADCL;
238 .LM19:
239 0066 84B1 in r24,36-0x20
240 0068 282F mov r18,r24
241 006a 3327 clr r19
242 006c 2883 st Y,r18
243 006e 3983 std Y+1,r19
78:adc_sensor.c **** SENSOR_DATA_VALUE[loopnum]+=(ADCH<<8);
245 .LM20:
246 0070 85B1 in r24,37-0x20
247 0072 9927 clr r25
248 0074 982F mov r25,r24
249 0076 8827 clr r24
250 0078 820F add r24,r18
251 007a 931F adc r25,r19
252 007c 8993 st Y+,r24
253 007e 9993 st Y+,r25
79:adc_sensor.c **** printf("sensor is %04x\n",SENSOR_DATA_VALUE[loopnum]);
255 .LM21:
256 0080 9F93 push r25
257 0082 8F93 push r24
258 0084 80E0 ldi r24,lo8(.LC0)
259 0086 90E0 ldi r25,hi8(.LC0)
260 0088 9F93 push r25
261 008a 8F93 push r24
262 008c 0E94 0000 call printf
263 .LBB5:
80:adc_sensor.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
265 .LM22:
266 0090 0E94 0000 call os_atomic_start
81:adc_sensor.c ****
82:adc_sensor.c **** {
83:adc_sensor.c **** //清除ADC中断标志
84:adc_sensor.c **** ADCSRA |=0x10;
268 .LM23:
269 0094 349A sbi 38-0x20,4
85:adc_sensor.c **** //关闭ADC转换使能
86:adc_sensor.c **** //ADCSRA &=0x7f;
87:adc_sensor.c **** }
88:adc_sensor.c **** os_atomic_end(_nesc_atomic); }
271 .LM24:
272 0096 0E94 0000 call os_atomic_end
273 .LBE5:
89:adc_sensor.c ****
90:adc_sensor.c **** //printf("sensor is %04x\n",SENSOR_DATA_VALUE);
91:adc_sensor.c **** // SENSOR_DATA_VALUE=0;
92:adc_sensor.c **** adc_init();
275 .LM25:
276 009a 0E94 0000 call adc_init
93:adc_sensor.c **** //
94:adc_sensor.c **** //OS_CLR_INT1_PIN();
95:adc_sensor.c **** ADC_INTERRUPT_FLAG=0;
278 .LM26:
279 009e 1092 0000 sts ADC_INTERRUPT_FLAG,__zero_reg__
96:adc_sensor.c **** //sensor_init();
97:adc_sensor.c **** loopnum++;
281 .LM27:
282 00a2 1150 subi r17,lo8(-(-1))
283 00a4 0F90 pop __tmp_reg__
284 00a6 0F90 pop __tmp_reg__
285 00a8 0F90 pop __tmp_reg__
286 00aa 0F90 pop __tmp_reg__
287 00ac 17FF sbrs r17,7
288 00ae C6CF rjmp .L9
289 /* epilogue: frame size=0 */
290 00b0 DF91 pop r29
291 00b2 CF91 pop r28
292 00b4 1F91 pop r17
293 00b6 0895 ret
294 /* epilogue end (size=4) */
295 /* function read_data_task size 68 (61) */
298 .comm payload,2,1
299 .comm rssi,1003,1
300 .comm isready,1,1
301 .comm testnum,1,1
302 .comm pagenum,2,1
303 .comm prssi,2,1
304 .comm test,264,1
305 .comm tend,2,1
306 .comm OS_queue,16,1
307 .comm OS_sched_full,1,1
308 .comm OS_sched_free,1,1
309 .comm Timer3_set_flag,1,1
310 .comm Timer3_mscale,1,1
311 .comm Timer3_nextScale,1,1
312 .comm Timer3_minterval,2,1
313 .comm cc2420_bramspi,1,1
314 .comm cc2420_rambuf,2,1
315 .comm cc2420_ramlen,1,1
316 .comm cc2420_ramaddr,2,1
317 .comm cc2420fifo_bspi,1,1
318 .comm cc2420fifo_txbuf,2,1
319 .comm cc2420fifo_txlength,1,1
320 .comm cc2420_rxbuf,4,1
321 .comm cc2420_rxlength,1,1
322 .comm cc2420_rxbuf_now,2,1
323 .comm cc2420_rxlength_now,1,1
324 .comm cc2420_rxbufuse,1,1
325 .comm rfpackernum,1,1
326 .comm cc2420_rxflag,1,1
327 .comm cc2420_currentparameters,28,1
328 .comm demopacket,2,1
329 .comm cc2420_stateRadio,1,1
330 .comm cc2420_LocalAddr,2,1
331 .comm ieee_address,8,1
332 .comm flash_busy,1,1
333 .comm SENSOR_DATA_VALUE,20,1
334 .comm ADC_INTERRUPT_FLAG,1,1
372 .text
374 Letext:
375 /* File "adc_sensor.c": code 92 = 0x005c ( 81), 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\bt\LOCALS~1\Temp/cckdbaaa.s:122 .text:00000000 adc_init
*COM*:00000001 ADC_INTERRUPT_FLAG
C:\DOCUME~1\bt\LOCALS~1\Temp/cckdbaaa.s:154 .text:00000016 sensor_init
C:\DOCUME~1\bt\LOCALS~1\Temp/cckdbaaa.s:192 .text:00000030 read_data_task
*COM*:00000014 SENSOR_DATA_VALUE
*COM*:00000002 payload
*COM*:000003eb rssi
*COM*:00000001 isready
*COM*:00000001 testnum
*COM*:00000002 pagenum
*COM*:00000002 prssi
*COM*:00000108 test
*COM*:00000002 tend
*COM*:00000010 OS_queue
*COM*:00000001 OS_sched_full
*COM*:00000001 OS_sched_free
*COM*:00000001 Timer3_set_flag
*COM*:00000001 Timer3_mscale
*COM*:00000001 Timer3_nextScale
*COM*:00000002 Timer3_minterval
*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*:00000002 demopacket
*COM*:00000001 cc2420_stateRadio
*COM*:00000002 cc2420_LocalAddr
*COM*:00000008 ieee_address
*COM*:00000001 flash_busy
C:\DOCUME~1\bt\LOCALS~1\Temp/cckdbaaa.s:374 .text:000000b8 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
os_atomic_start
os_atomic_end
OS_MAKE_INT1_OUTPUT
OS_SET_INT1_PIN
printf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -