📄 uart.lst
字号:
1 .file "uart.c"
2 .arch atmega162
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:
59 .global __vector_23
61 __vector_23:
1:uart.c **** #include <stdio.h>
2:uart.c **** #include <avr/io.h>
3:uart.c **** #include <avr/interrupt.h>
4:uart.c **** #include <avr/signal.h>
5:uart.c **** #include "uart.h"
6:uart.c ****
7:uart.c ****
8:uart.c **** // USART0 Transmitter interrupt service routine
9:uart.c **** SIGNAL(SIG_USART0_TRANS)
10:uart.c **** {
63 .LM1:
64 /* prologue: frame size=0 */
65 0000 1F92 push __zero_reg__
66 0002 0F92 push __tmp_reg__
67 0004 0FB6 in __tmp_reg__,__SREG__
68 0006 0F92 push __tmp_reg__
69 0008 1124 clr __zero_reg__
70 000a 8F93 push r24
71 000c 9F93 push r25
72 000e EF93 push r30
73 0010 FF93 push r31
74 /* prologue end (size=9) */
11:uart.c **** if (UART0.counter)
76 .LM2:
77 0012 8091 0000 lds r24,UART0+102
78 0016 8823 tst r24
79 0018 99F0 breq .L1
12:uart.c **** {
13:uart.c **** --UART0.counter;
81 .LM3:
82 001a 8150 subi r24,lo8(-(-1))
83 001c 8093 0000 sts UART0+102,r24
14:uart.c **** UDR0 = UART0.buffer[UART0.rd];
85 .LM4:
86 0020 9091 0000 lds r25,UART0+101
87 0024 E92F mov r30,r25
88 0026 FF27 clr r31
89 0028 E050 subi r30,lo8(-(UART0))
90 002a F040 sbci r31,hi8(-(UART0))
91 002c 8081 ld r24,Z
92 002e 8CB9 out 44-0x20,r24
15:uart.c **** if (++UART0.rd == TX_BUFFER_SIZE0) UART0.rd = 0;
94 .LM5:
95 0030 892F mov r24,r25
96 0032 8F5F subi r24,lo8(-(1))
97 0034 8093 0000 sts UART0+101,r24
98 0038 8436 cpi r24,lo8(100)
99 003a 11F4 brne .L1
100 003c 1092 0000 sts UART0+101,__zero_reg__
101 .L1:
102 /* epilogue: frame size=0 */
103 0040 FF91 pop r31
104 0042 EF91 pop r30
105 0044 9F91 pop r25
106 0046 8F91 pop r24
107 0048 0F90 pop __tmp_reg__
108 004a 0FBE out __SREG__,__tmp_reg__
109 004c 0F90 pop __tmp_reg__
110 004e 1F90 pop __zero_reg__
111 0050 1895 reti
112 /* epilogue end (size=9) */
113 /* function __vector_23 size 41 (23) */
117 .global uart_putchar
119 uart_putchar:
16:uart.c **** }
17:uart.c **** }
18:uart.c ****
19:uart.c **** int uart_putchar(char c)
20:uart.c **** {
121 .LM6:
122 /* prologue: frame size=0 */
123 /* prologue end (size=0) */
124 0052 282F mov r18,r24
125 0054 9091 0000 lds r25,UART0+102
126 .L5:
21:uart.c **** while (UART0.counter == TX_BUFFER_SIZE0);
128 .LM7:
129 0058 9436 cpi r25,lo8(100)
130 005a F1F3 breq .L5
22:uart.c **** cli();
132 .LM8:
133 /* #APP */
134 005c F894 cli
23:uart.c **** if (UART0.counter || bit_is_clear(UCSR0A, UDRE0))
136 .LM9:
137 /* #NOAPP */
138 005e 9923 tst r25
139 0060 11F4 brne .L9
140 0062 5D99 sbic 43-0x20,5
141 0064 12C0 rjmp .L8
142 .L9:
24:uart.c **** {
25:uart.c **** UART0.buffer[UART0.wr] = c;
144 .LM10:
145 0066 8091 0000 lds r24,UART0+100
146 006a E82F mov r30,r24
147 006c FF27 clr r31
148 006e E050 subi r30,lo8(-(UART0))
149 0070 F040 sbci r31,hi8(-(UART0))
150 0072 2083 st Z,r18
26:uart.c **** if (++UART0.wr == TX_BUFFER_SIZE0) UART0.wr = 0;
152 .LM11:
153 0074 8F5F subi r24,lo8(-(1))
154 0076 8093 0000 sts UART0+100,r24
155 007a 8436 cpi r24,lo8(100)
156 007c 11F4 brne .L10
157 007e 1092 0000 sts UART0+100,__zero_reg__
158 .L10:
27:uart.c **** ++UART0.counter;
160 .LM12:
161 0082 9F5F subi r25,lo8(-(1))
162 0084 9093 0000 sts UART0+102,r25
163 0088 01C0 rjmp .L11
164 .L8:
28:uart.c **** }
29:uart.c **** else
30:uart.c **** {
31:uart.c **** UDR0 = c;
166 .LM13:
167 008a 2CB9 out 44-0x20,r18
168 .L11:
32:uart.c **** }
33:uart.c **** sei();
170 .LM14:
171 /* #APP */
172 008c 7894 sei
34:uart.c **** return 0;
35:uart.c **** }
174 .LM15:
175 /* #NOAPP */
176 008e 80E0 ldi r24,lo8(0)
177 0090 90E0 ldi r25,hi8(0)
178 /* epilogue: frame size=0 */
179 0092 0895 ret
180 /* epilogue end (size=1) */
181 /* function uart_putchar size 35 (34) */
184 .global InitIO
186 InitIO:
36:uart.c ****
37:uart.c **** void InitIO(void)
38:uart.c **** {
188 .LM16:
189 /* prologue: frame size=0 */
190 /* prologue end (size=0) */
39:uart.c **** UART0.rd = 0;
192 .LM17:
193 0094 1092 0000 sts UART0+101,__zero_reg__
40:uart.c **** UART0.wr = 0;
195 .LM18:
196 0098 1092 0000 sts UART0+100,__zero_reg__
41:uart.c **** UART0.counter = 0;
198 .LM19:
199 009c 1092 0000 sts UART0+102,__zero_reg__
42:uart.c ****
43:uart.c **** // USART0 initialization
44:uart.c **** // Communication Parameters: 8 Data, 1 Stop, No Parity
45:uart.c **** // USART0 Receiver: Off
46:uart.c **** // USART0 Transmitter: On
47:uart.c **** // USART0 Mode: Asynchronous
48:uart.c **** // USART0 Baud rate: 19200
49:uart.c **** UCSR0A = 0x00;
201 .LM20:
202 00a0 1BB8 out 43-0x20,__zero_reg__
50:uart.c **** UCSR0B = 0x48;
204 .LM21:
205 00a2 88E4 ldi r24,lo8(72)
206 00a4 8AB9 out 42-0x20,r24
51:uart.c **** UCSR0C = 0x86;
208 .LM22:
209 00a6 86E8 ldi r24,lo8(-122)
210 00a8 80BD out 64-0x20,r24
52:uart.c **** UBRR0H = 0x00;
212 .LM23:
213 00aa 10BC out 64-0x20,__zero_reg__
53:uart.c **** UBRR0L = 0x17;
215 .LM24:
216 00ac 87E1 ldi r24,lo8(23)
217 00ae 89B9 out 41-0x20,r24
54:uart.c ****
55:uart.c **** fdevopen(uart_putchar, 0, 0);
219 .LM25:
220 00b0 40E0 ldi r20,lo8(0)
221 00b2 50E0 ldi r21,hi8(0)
222 00b4 BA01 movw r22,r20
223 00b6 80E0 ldi r24,lo8(pm(uart_putchar))
224 00b8 90E0 ldi r25,hi8(pm(uart_putchar))
225 00ba 0E94 0000 call fdevopen
226 /* epilogue: frame size=0 */
227 00be 0895 ret
228 /* epilogue end (size=1) */
229 /* function InitIO size 22 (21) */
231 .comm UART0,103,1
233 .text
235 Letext:
236 /* File "uart.c": code 98 = 0x0062 ( 78), prologues 9, epilogues 11 */
DEFINED SYMBOLS
*ABS*:00000000 uart.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:61 .text:00000000 __vector_23
*COM*:00000067 UART0
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:119 .text:00000052 uart_putchar
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:186 .text:00000094 InitIO
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:235 .text:000000c0 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
fdevopen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -