📄 main.lst
字号:
1 .file "main.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:
68 .lcomm g_nAdValue,2
70 .global __vector_14
72 __vector_14:
1:main.c **** /*
2:main.c **** Mega8 中断方式 A/D 转换测试程序
3:main.c **** main.c
4:main.c **** MCU:atmega8
5:main.c **** 编译:WinAVR-20040720
6:main.c ****
7:main.c ****
8:main.c **** 芯艺 2004-09-19
9:main.c **** */
10:main.c ****
11:main.c **** #include <avr/io.h>
12:main.c **** #include <avr/interrupt.h>
13:main.c **** #include <avr/signal.h>
14:main.c **** #include <avr/delay.h>
15:main.c **** #include <stdio.h>
16:main.c ****
17:main.c **** #define uchar unsigned char
18:main.c **** #define uint unsigned int
19:main.c ****
20:main.c **** static uint g_nAdValue=0;
21:main.c ****
22:main.c **** void IoInit(void);
23:main.c ****
24:main.c **** //AD转换完成中断
25:main.c **** SIGNAL(SIG_ADC)
26:main.c **** {
74 .LM1:
75 /* prologue: frame size=0 */
76 0000 1F92 push __zero_reg__
77 0002 0F92 push __tmp_reg__
78 0004 0FB6 in __tmp_reg__,__SREG__
79 0006 0F92 push __tmp_reg__
80 0008 1124 clr __zero_reg__
81 000a 2F93 push r18
82 000c 3F93 push r19
83 000e 8F93 push r24
84 0010 9F93 push r25
85 /* prologue end (size=9) */
27:main.c **** g_nAdValue=ADCL;
87 .LM2:
88 0012 84B1 in r24,36-0x20
89 0014 282F mov r18,r24
90 0016 3327 clr r19
28:main.c **** g_nAdValue|=(uint)(ADCH<<8);
92 .LM3:
93 0018 85B1 in r24,37-0x20
94 001a 9927 clr r25
95 001c 982F mov r25,r24
96 001e 8827 clr r24
97 0020 282B or r18,r24
98 0022 392B or r19,r25
99 0024 3093 0000 sts (g_nAdValue)+1,r19
100 0028 2093 0000 sts g_nAdValue,r18
29:main.c **** }
102 .LM4:
103 /* epilogue: frame size=0 */
104 002c 9F91 pop r25
105 002e 8F91 pop r24
106 0030 3F91 pop r19
107 0032 2F91 pop r18
108 0034 0F90 pop __tmp_reg__
109 0036 0FBE out __SREG__,__tmp_reg__
110 0038 0F90 pop __tmp_reg__
111 003a 1F90 pop __zero_reg__
112 003c 1895 reti
113 /* epilogue end (size=9) */
114 /* function __vector_14 size 31 (13) */
116 .data
117 .LC0:
118 0000 2564 0A00 .string "%d\n"
119 .text
121 .global main
123 main:
30:main.c ****
31:main.c ****
32:main.c **** int main(void)
33:main.c **** {
125 .LM5:
126 /* prologue: frame size=0 */
127 003e C0E0 ldi r28,lo8(__stack - 0)
128 0040 D0E0 ldi r29,hi8(__stack - 0)
129 0042 DEBF out __SP_H__,r29
130 0044 CDBF out __SP_L__,r28
131 /* prologue end (size=4) */
34:main.c **** uchar i;
35:main.c ****
36:main.c **** //内部2.56V参考电压,0通道
37:main.c **** ADMUX=0Xc0;
133 .LM6:
134 .LBB2:
135 0046 80EC ldi r24,lo8(-64)
136 0048 87B9 out 39-0x20,r24
38:main.c ****
39:main.c **** //使能ADC,中断允许,自由模式, 时钟:ck/8
40:main.c **** ADCSRA=_BV(ADEN)|_BV(ADIE)|_BV(ADFR)|_BV(ADPS1)|_BV(ADPS0);
138 .LM7:
139 004a 8BEA ldi r24,lo8(-85)
140 004c 86B9 out 38-0x20,r24
41:main.c ****
42:main.c **** IoInit();//标准输入/输出初始化
142 .LM8:
143 004e 00D0 rcall IoInit
43:main.c ****
44:main.c **** ADCSRA|=_BV(ADSC);//自由模式开始转换
145 .LM9:
146 0050 369A sbi 38-0x20,6
147 .L12:
45:main.c ****
46:main.c **** while(1)
47:main.c **** {
48:main.c **** //延时
49:main.c **** for(i=0;i<100;i++)
149 .LM10:
150 0052 20E0 ldi r18,lo8(0)
151 .L11:
153 .Ltext1:
1:C:/WinAVR/avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:C:/WinAVR/avr/include/avr/delay.h **** All rights reserved.
3:C:/WinAVR/avr/include/avr/delay.h ****
4:C:/WinAVR/avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
5:C:/WinAVR/avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
6:C:/WinAVR/avr/include/avr/delay.h ****
7:C:/WinAVR/avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
8:C:/WinAVR/avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
9:C:/WinAVR/avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
10:C:/WinAVR/avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
11:C:/WinAVR/avr/include/avr/delay.h **** the documentation and/or other materials provided with the
12:C:/WinAVR/avr/include/avr/delay.h **** distribution.
13:C:/WinAVR/avr/include/avr/delay.h ****
14:C:/WinAVR/avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15:C:/WinAVR/avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16:C:/WinAVR/avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17:C:/WinAVR/avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18:C:/WinAVR/avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19:C:/WinAVR/avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20:C:/WinAVR/avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21:C:/WinAVR/avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22:C:/WinAVR/avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23:C:/WinAVR/avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24:C:/WinAVR/avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
25:C:/WinAVR/avr/include/avr/delay.h ****
26:C:/WinAVR/avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2 2002/12/12 11:41:01 joerg_wunsch Exp $ */
27:C:/WinAVR/avr/include/avr/delay.h ****
28:C:/WinAVR/avr/include/avr/delay.h **** /*
29:C:/WinAVR/avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
30:C:/WinAVR/avr/include/avr/delay.h **** */
31:C:/WinAVR/avr/include/avr/delay.h ****
32:C:/WinAVR/avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
33:C:/WinAVR/avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
34:C:/WinAVR/avr/include/avr/delay.h ****
35:C:/WinAVR/avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
36:C:/WinAVR/avr/include/avr/delay.h **** static inline void
37:C:/WinAVR/avr/include/avr/delay.h **** _delay_loop_1(unsigned char __count)
38:C:/WinAVR/avr/include/avr/delay.h **** {
39:C:/WinAVR/avr/include/avr/delay.h **** asm volatile (
40:C:/WinAVR/avr/include/avr/delay.h **** "1: dec %0" "\n\t"
41:C:/WinAVR/avr/include/avr/delay.h **** "brne 1b"
42:C:/WinAVR/avr/include/avr/delay.h **** : "=r" (__count)
43:C:/WinAVR/avr/include/avr/delay.h **** : "0" (__count)
44:C:/WinAVR/avr/include/avr/delay.h **** );
45:C:/WinAVR/avr/include/avr/delay.h **** }
46:C:/WinAVR/avr/include/avr/delay.h ****
47:C:/WinAVR/avr/include/avr/delay.h **** /* 16-bit count, 4 cycles/loop */
48:C:/WinAVR/avr/include/avr/delay.h **** static inline void
49:C:/WinAVR/avr/include/avr/delay.h **** _delay_loop_2(unsigned int __count)
50:C:/WinAVR/avr/include/avr/delay.h **** {
155 .LM11:
156 .LBB3:
157 0054 80E1 ldi r24,lo8(10000)
158 0056 97E2 ldi r25,hi8(10000)
51:C:/WinAVR/avr/include/avr/delay.h **** asm volatile (
160 .LM12:
161 /* #APP */
162 0058 0197 1: sbiw r24,1
163 005a F1F7 brne 1b
165 .Ltext2:
167 .LM13:
168 /* #NOAPP */
169 .LBE3:
170 005c 2F5F subi r18,lo8(-(1))
171 005e 2436 cpi r18,lo8(100)
172 0060 C8F3 brlo .L11
50:main.c **** _delay_loop_2(4 * 250 * 10);//10ms
51:main.c ****
52:main.c **** cli();
174 .LM14:
175 /* #APP */
176 0062 F894 cli
53:main.c **** printf("%d\n",g_nAdValue);
178 .LM15:
179 /* #NOAPP */
180 0064 8091 0000 lds r24,g_nAdValue
181 0068 9091 0000 lds r25,(g_nAdValue)+1
182 006c 9F93 push r25
183 006e 8F93 push r24
184 0070 80E0 ldi r24,lo8(.LC0)
185 0072 90E0 ldi r25,hi8(.LC0)
186 0074 9F93 push r25
187 0076 8F93 push r24
188 0078 00D0 rcall printf
54:main.c **** sei();
190 .LM16:
191 /* #APP */
192 007a 7894 sei
193 /* #NOAPP */
194 007c 0F90 pop __tmp_reg__
195 007e 0F90 pop __tmp_reg__
196 0080 0F90 pop __tmp_reg__
197 0082 0F90 pop __tmp_reg__
198 0084 E6CF rjmp .L12
55:main.c **** }
56:main.c **** }
200 .LM17:
201 .LBE2:
202 /* epilogue: frame size=0 */
203 /* epilogue: noreturn */
204 /* epilogue end (size=0) */
205 /* function main size 40 (36) */
214 .text
216 Letext:
217 /* File "main.c": code 71 = 0x0047 ( 49), prologues 13, epilogues 9 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
.bss:00000000 g_nAdValue
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8waaaa.s:72 .text:00000000 __vector_14
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8waaaa.s:123 .text:0000003e main
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8waaaa.s:216 .text:00000086 Letext
*ABS*:00000000 *ABS*
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
IoInit
printf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -