📄 demo.lst
字号:
1 .file "demo.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:
53 .global DelayMs
55 DelayMs:
1:demo.c **** #include <avr/io.h>
2:demo.c **** #include <avr/delay.h>
3:demo.c ****
4:demo.c **** #define uint unsigned int
5:demo.c **** #define uchar unsigned char
6:demo.c ****
7:demo.c **** #ifdef BASE_BORD
8:demo.c ****
9:demo.c **** #define SET_RED_LED cbi(PORTC,2);
10:demo.c **** #define CLR_RED_LED sbi(PORTC,2);
11:demo.c ****
12:demo.c **** #define SET_LFT_LED cbi(PORTC,1);
13:demo.c **** #define CLR_LFT_LED sbi(PORTC,1);
14:demo.c ****
15:demo.c **** #define SET_RIT_LED cbi(PORTC,3);
16:demo.c **** #define CLR_RIT_LED sbi(PORTC,3);
17:demo.c **** #else
18:demo.c **** #define SET_RED_LED cbi(PORTB,2);
19:demo.c **** #define CLR_RED_LED sbi(PORTB,2);
20:demo.c ****
21:demo.c **** #define SET_LFT_LED cbi(PORTB,1);
22:demo.c **** #define CLR_LFT_LED sbi(PORTB,1);
23:demo.c ****
24:demo.c **** #define SET_RIT_LED cbi(PORTB,0);
25:demo.c **** #define CLR_RIT_LED sbi(PORTB,0);
26:demo.c **** #endif
27:demo.c ****
28:demo.c **** #define FREQ 4
29:demo.c ****
30:demo.c **** void DelayMs(uint ms)
31:demo.c **** {
57 .LM1:
58 /* prologue: frame size=0 */
59 /* prologue end (size=0) */
32:demo.c **** uint i;
33:demo.c **** for(i=0;i<ms;i++)
61 .LM2:
62 0000 0097 sbiw r24,0
63 0002 41F0 breq .L8
64 0004 9C01 movw r18,r24
65 .L6:
66 .LBB2:
68 .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 **** {
70 .LM3:
71 0006 88EE ldi r24,lo8(1000)
72 0008 93E0 ldi r25,hi8(1000)
73 .LBB3:
53:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
75 .LM4:
76 /* #APP */
77 000a 0197 1: sbiw r24,1
78 000c F1F7 brne 1b
79 /* #NOAPP */
80 .LBE3:
81 .LBE2:
83 .Ltext2:
85 .LM5:
86 000e 2150 subi r18,lo8(-(-1))
87 0010 3040 sbci r19,hi8(-(-1))
88 0012 C9F7 brne .L6
89 .L8:
90 0014 0895 ret
91 /* epilogue: frame size=0 */
92 /* epilogue: noreturn */
93 /* epilogue end (size=0) */
94 /* function DelayMs size 15 (15) */
101 .global main
103 main:
34:demo.c **** _delay_loop_2(FREQ *250);
35:demo.c **** }
36:demo.c ****
37:demo.c **** int main(void)
38:demo.c **** {
105 .LM6:
106 /* prologue: frame size=0 */
107 0016 C0E0 ldi r28,lo8(__stack - 0)
108 0018 D0E0 ldi r29,hi8(__stack - 0)
109 001a DEBF out __SP_H__,r29
110 001c CDBF out __SP_L__,r28
111 /* prologue end (size=4) */
39:demo.c **** uchar i;
40:demo.c ****
41:demo.c **** DDRC=0XFF;
113 .LM7:
114 001e 8FEF ldi r24,lo8(-1)
115 0020 84BB out 52-0x20,r24
42:demo.c **** PORTC=0XFF;
117 .LM8:
118 0022 85BB out 53-0x20,r24
43:demo.c ****
44:demo.c **** DDRB=0XFF;
120 .LM9:
121 0024 87BB out 55-0x20,r24
45:demo.c **** PORTB=0XFF;
123 .LM10:
124 0026 88BB out 56-0x20,r24
125 .L10:
126 0028 C0E0 ldi r28,lo8(0)
127 002a D0E0 ldi r29,hi8(0)
128 002c 12E0 ldi r17,lo8(2)
129 .L15:
46:demo.c ****
47:demo.c **** while(1)
48:demo.c **** {
49:demo.c **** #ifdef BASE_BORD
50:demo.c **** //三个灯逐一闪
51:demo.c **** for(i=1;i<4;i++)
52:demo.c **** {
53:demo.c **** PORTC=0xff;
54:demo.c **** PORTC&=~_BV(i);
55:demo.c **** DelayMs(500);
56:demo.c **** }
57:demo.c **** #else
58:demo.c **** for(i=0;i<3;i++)
59:demo.c **** {
60:demo.c **** PORTB=0XFF;
131 .LM11:
132 002e 8FEF ldi r24,lo8(-1)
133 0030 88BB out 56-0x20,r24
61:demo.c **** PORTB&=~_BV(i);
135 .LM12:
136 0032 81E0 ldi r24,lo8(1)
137 0034 90E0 ldi r25,hi8(1)
138 0036 0C2E mov r0,r28
139 0038 02C0 rjmp 2f
140 003a 880F 1: lsl r24
141 003c 991F rol r25
142 003e 0A94 2: dec r0
143 0040 E2F7 brpl 1b
144 0042 982F mov r25,r24
145 0044 9095 com r25
146 0046 88B3 in r24,56-0x20
147 0048 8923 and r24,r25
148 004a 88BB out 56-0x20,r24
62:demo.c **** DelayMs(500);
150 .LM13:
151 004c 84EF ldi r24,lo8(500)
152 004e 91E0 ldi r25,hi8(500)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -