📄 main.lst
字号:
1 .file "main.c"
2 .arch at90s2313
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:
53 .global DelayMs
55 DelayMs:
1:main.c **** /*
2:main.c **** avr-libc PWM测试程序
3:main.c **** main.c
4:main.c **** MCU:at90S2313
5:main.c ****
6:main.c **** 芯艺 2004-09-10
7:main.c **** */
8:main.c ****
9:main.c **** #include <avr/io.h>
10:main.c **** #include <avr/delay.h>
11:main.c ****
12:main.c **** #define uchar unsigned char
13:main.c **** #define uint unsigned int
14:main.c ****
15:main.c **** #define FREQ 4
16:main.c ****
17:main.c **** void DelayMs(uint ms)
18:main.c **** {
57 .LM1:
58 /* prologue: frame size=0 */
59 /* prologue end (size=0) */
19:main.c **** uint i;
20:main.c **** for(i=0;i<ms;i++)
61 .LM2:
62 0000 0097 sbiw r24,0
63 0002 49F0 breq .L8
64 0004 282F mov r18,r24
65 0006 392F mov r19,r25
66 .L6:
67 .LBB2:
69 .Ltext1:
1:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** All rights reserved.
3:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
4:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
5:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
6:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
7:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
8:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
9:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
10:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
11:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** the documentation and/or other materials provided with the
12:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** distribution.
13:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
14:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
25:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
26:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2.2.2 2004/02/13 21:43:37 joerg_wunsch Exp $ */
27:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
28:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /*
29:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
30:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** */
31:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
32:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
33:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
34:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
35:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
36:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
37:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
38:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
39:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
40:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
41:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
42:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
43:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "brne 1b"
44:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "=r" (__count)
45:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "0" (__count)
46:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** );
47:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** }
48:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
49:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 16-bit count, 4 cycles/loop */
50:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
51:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
52:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
71 .LM3:
72 0008 88EE ldi r24,lo8(1000)
73 000a 93E0 ldi r25,hi8(1000)
74 .LBB3:
53:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
76 .LM4:
77 /* #APP */
78 000c 0197 1: sbiw r24,1
79 000e F1F7 brne 1b
80 /* #NOAPP */
81 .LBE3:
82 .LBE2:
84 .Ltext2:
86 .LM5:
87 0010 2150 subi r18,lo8(-(-1))
88 0012 3040 sbci r19,hi8(-(-1))
89 0014 C9F7 brne .L6
90 .L8:
91 0016 0895 ret
92 /* epilogue: frame size=0 */
93 /* epilogue: noreturn */
94 /* epilogue end (size=0) */
95 /* function DelayMs size 16 (16) */
102 .global main
104 main:
21:main.c **** _delay_loop_2(FREQ * 250);
22:main.c **** }
23:main.c ****
24:main.c ****
25:main.c **** int main (void)
26:main.c **** {
106 .LM6:
107 /* prologue: frame size=0 */
108 0018 C0E0 ldi r28,lo8(__stack - 0)
109 001a D0E0 ldi r29,hi8(__stack - 0)
110 001c DEBF out __SP_H__,r29
111 001e CDBF out __SP_L__,r28
112 /* prologue end (size=4) */
27:main.c **** uchar direction=1;
114 .LM7:
115 0020 11E0 ldi r17,lo8(1)
28:main.c **** uchar pwm=0;
117 .LM8:
118 0022 C0E0 ldi r28,lo8(0)
29:main.c ****
30:main.c **** TCCR1A = _BV (PWM10) | _BV (COM1A1); // 8位PWM模式 , 向上计数时匹配清除OC1
120 .LM9:
121 0024 81E8 ldi r24,lo8(-127)
122 0026 8FBD out 79-0x20,r24
31:main.c ****
32:main.c **** DDRB= _BV (PB3); //PWM引脚PB3方向设置为输出
124 .LM10:
125 0028 88E0 ldi r24,lo8(8)
126 002a 87BB out 55-0x20,r24
33:main.c ****
34:main.c **** TCCR1B = _BV (CS11); //启动PWM 时钟源:CK/8 PWM 频率为 4MHz/8/512=976Hz
128 .LM11:
129 002c 82E0 ldi r24,lo8(2)
130 002e 8EBD out 78-0x20,r24
131 .L10:
35:main.c ****
36:main.c **** while(1)
37:main.c **** {
38:main.c **** if(direction)
133 .LM12:
134 0030 1123 tst r17
135 0032 29F0 breq .L12
39:main.c **** {
40:main.c **** if(++pwm==254)
137 .LM13:
138 0034 CF5F subi r28,lo8(-(1))
139 0036 CE3F cpi r28,lo8(-2)
140 0038 29F4 brne .L14
41:main.c **** direction=0;
142 .LM14:
143 003a 10E0 ldi r17,lo8(0)
144 003c 03C0 rjmp .L14
145 .L12:
42:main.c **** }
43:main.c **** else
44:main.c **** {
45:main.c **** if(--pwm==0)
147 .LM15:
148 003e C150 subi r28,lo8(-(-1))
149 0040 09F4 brne .L14
46:main.c **** direction=1;
151 .LM16:
152 0042 11E0 ldi r17,lo8(1)
153 .L14:
47:main.c **** }
48:main.c ****
49:main.c **** OCR1=pwm;
155 .LM17:
156 0044 8C2F mov r24,r28
157 0046 9927 clr r25
158 0048 9BBD out (74)+1-0x20,r25
159 004a 8ABD out 74-0x20,r24
50:main.c **** DelayMs(10);
161 .LM18:
162 004c 8AE0 ldi r24,lo8(10)
163 004e 90E0 ldi r25,hi8(10)
164 0050 D7DF rcall DelayMs
165 0052 EECF rjmp .L10
166 /* epilogue: frame size=0 */
167 /* epilogue: noreturn */
168 /* epilogue end (size=0) */
169 /* function main size 31 (27) */
173 .text
175 Letext:
176 /* File "main.c": code 47 = 0x002f ( 43), prologues 4, epilogues 0 */
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__
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:55 .text:00000000 DelayMs
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:104 .text:00000018 main
J:\DOCUME~1\tcf\LOCALS~1\Temp/ccAFaaaa.s:175 .text:00000054 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -