📄 uart.lst
字号:
1 .file "uart.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
73 .global __vector_11
75 __vector_11:
1:uart.c **** #include "uart.h"
2:uart.c ****
3:uart.c **** volatile unsigned char rx_buffer[RX_BUFFER_SIZE];
4:uart.c ****
5:uart.c **** volatile unsigned char rx_wr_index, rx_rd_index, rx_counter;
6:uart.c ****
7:uart.c **** volatile unsigned char rx_buffer_overflow = 0;
8:uart.c ****
9:uart.c **** ISR (USART_RXC_vect)
10:uart.c **** {
76 0,__SREG__
77 push r0
78 clr __zero_reg__
79 0000 1F92 push r24
80 0002 0F92 push r25
81 0004 0FB6 push r30
82 0006 0F92 push r31
83 0008 1124 /* prologue: Signal */
84 000a 8F93 /* frame size = 0 */
86 000e EF93 .LM1:
87 0010 FF93 in r24,43-32
89 .LM2:
11:uart.c **** unsigned char status,data;
12:uart.c **** status = UCSRA;
91 .LM3:
92 0012 8BB1 andi r24,lo8(28)
13:uart.c **** data = UDR;
93 ne .L4
95 0014 9CB1 .LM4:
14:uart.c **** if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
96 s r30,rx_wr_index
97 ldi r31,lo8(0)
98 0016 8C71 subi r30,lo8(-(rx_buffer))
99 0018 01F4 sbci r31,hi8(-(rx_buffer))
15:uart.c **** {
16:uart.c **** rx_buffer[rx_wr_index] = data;
100 Z,r25
102 001a E091 0000 .LM5:
103 001e F0E0 lds r24,rx_wr_index
104 0020 E050 subi r24,lo8(-(1))
105 0022 F040 sts rx_wr_index,r24
106 0024 9083 lds r24,rx_wr_index
17:uart.c **** if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index = 0;
107 4,lo8(8)
108 brne .L3
109 0026 8091 0000 sts rx_wr_index,__zero_reg__
110 002a 8F5F .L3:
112 0030 8091 0000 .LM6:
113 0034 8830 lds r24,rx_counter
114 0036 01F4 subi r24,lo8(-(1))
115 0038 1092 0000 sts rx_counter,r24
116 lds r24,rx_counter
18:uart.c **** if (++rx_counter == RX_BUFFER_SIZE)
117 o8(8)
118 brne .L4
120 0040 8F5F .LM7:
121 0042 8093 0000 sts rx_counter,__zero_reg__
123 004a 8830 .LM8:
124 004c 01F4 ldi r24,lo8(1)
19:uart.c **** {
20:uart.c **** rx_counter = 0;
125 _counter
126 subi r24,lo8(-(1))
127 004e 1092 0000 sts rx_counter,r24
21:uart.c **** rx_buffer_overflow = 1;
128 s r24,rx_counter
129 cpi r24,lo8(8)
130 0052 81E0 brne .L4
132 .LM7:
133 sts rx_counter,__zero_reg__
22:uart.c **** }
23:uart.c **** }
24:uart.c **** }
134 __
135 .L3:
137 005a EF91 .LM6:
138 005c 9F91 lds r24,rx_counter
139 005e 8F91 subi r24,lo8(-(1))
140 0060 0F90 sts rx_counter,r24
141 0062 0FBE lds r24,rx_counter
142 0064 0F90 cpi r24,lo8(8)
143 0066 1F90 brne .L4
145 .LM7:
146 sts rx_counter,__zero_reg__
148 .LM8:
149 ldi r24,lo8(1)
150 sts rx_buffer_overflow,r24
151 .L4:
152 /* epilogue start */
154 .LM9:
25:uart.c ****
26:uart.c **** unsigned char uartGetc(void)
27:uart.c **** {
155 p r25
156 pop r24
157 pop r0
158 out __SREG__,r0
159 pop r0
160 pop __zero_reg__
28:uart.c **** unsigned char data;
29:uart.c **** while(rx_counter == 0);
161 M8:
162 ldi r24,lo8(1)
163 006a 8091 0000 sts rx_buffer_overflow,r24
164 006e 8823 .L4:
165 0070 01F0 /* epilogue start */
30:uart.c ****
31:uart.c **** data=rx_buffer[rx_rd_index];
166 ,rx_counter
167 cpi r24,lo8(8)
168 0072 E091 0000 brne .L4
170 0078 E050 .LM7:
171 007a F040 sts rx_counter,__zero_reg__
32:uart.c **** if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
173 .LFBB1
174 .LM6:
175 007e 8091 0000 lds r24,rx_counter
176 0082 8F5F subi r24,lo8(-(1))
177 0084 8093 0000 sts rx_counter,r24
178 0088 8091 0000 lds r24,rx_counter
179 008c 8830 cpi r24,lo8(8)
180 008e 01F4 brne .L4
182 .LM7:
33:uart.c **** cli();
183 unter,__zero_reg__
185 .LM8:
186 ldi r24,lo8(1)
187 0094 F894 sts rx_buffer_overflow,r24
188 .L4:
34:uart.c **** if(rx_counter)
189 x_counter,r24
190 lds r24,rx_counter
191 cpi r24,lo8(8)
192 0096 8091 0000 brne .L4
194 009c 01F0 .LM7:
35:uart.c **** --rx_counter;
195 L3
196 sts rx_wr_index,__zero_reg__
197 009e 8091 0000 .L3:
199 00a4 8093 0000 .LM6:
200 lds r24,rx_counter
36:uart.c **** sei();
201 r24,lo8(-(1))
202 sts rx_counter,r24
203 lds r24,rx_counter
204 cpi r24,lo8(8)
205 00a8 7894 brne .L4
37:uart.c **** return data;
38:uart.c **** }
207 sts rx_counter,__zero_reg__
209 .LM8:
210 00aa 8E2F ldi r24,lo8(1)
211 sts rx_buffer_overflow,r24
212 00ac 0895 .L4:
213 /* epilogue start */
215 .LM9:
216 pop r31
217 pop r30
218 pop r25
219 pop r24
220 pop r0
221 out __SREG__,r0
39:uart.c ****
40:uart.c **** void uartOpen(void)
41:uart.c **** {
222 stabn 68,0,21,.LM8-.LFBB1
223 .LM8:
224 ldi r24,lo8(1)
225 sts rx_buffer_overflow,r24
226 .L4:
42:uart.c **** UCSRB = 0x98;
227 x_counter,r24
228 lds r24,rx_counter
229 00ae 88E9 cpi r24,lo8(8)
230 00b0 8AB9 brne .L4
43:uart.c **** }
232 brne .L3
233 sts rx_wr_index,__zero_reg__
234 00b2 0895 .L3:
236 .LM6:
237 lds r24,rx_counter
238 subi r24,lo8(-(1))
239 sts rx_counter,r24
240 lds r24,rx_counter
44:uart.c ****
45:uart.c **** void uartClose(void)
46:uart.c **** {
241 lo8(8)
242 brne .L4
244 .LM7:
245 sts rx_counter,__zero_reg__
47:uart.c **** UCSRB &= 0x00;
246 __
247 .L3:
249 00b6 1AB8 .LM6:
250 lds r24,rx_counter
48:uart.c **** }
251 r24,lo8(-(1))
252 sts rx_counter,r24
253 00b8 0895 lds r24,rx_counter
254 cpi r24,lo8(8)
255 brne .L4
257 .LM7:
258 sts rx_counter,__zero_reg__
260 .LM8:
49:uart.c ****
50:uart.c **** void uartPutc(unsigned char c)
51:uart.c **** {
261 o8(1)
262 sts rx_buffer_overflow,r24
263 .L4:
264 /* epilogue start */
266 .LM9:
52:uart.c **** while ( !( UCSRA & DATA_REGISTER_EMPTY) )
267 4
269 00ba 5D9B .LM7:
270 00bc 00C0 sts rx_counter,__zero_reg__
53:uart.c **** ;
54:uart.c **** UDR = c;
271 __
272 .L3:
274 .LM6:
55:uart.c **** }
275 r24,rx_counter
276 subi r24,lo8(-(1))
277 00c0 0895 sts rx_counter,r24
278 lds r24,rx_counter
279 cpi r24,lo8(8)
280 brne .L4
282 .LM7:
283 sts rx_counter,__zero_reg__
56:uart.c ****
57:uart.c **** void uartInit(void)
58:uart.c **** {
284 8,0,21,.LM8-.LFBB1
285 .LM8:
286 ldi r24,lo8(1)
287 sts rx_buffer_overflow,r24
288 .L4:
59:uart.c **** // USART initialization
60:uart.c **** // Communication Parameters: 8 Data, 1 Stop, Odd Parity
61:uart.c **** // USART Receiver: On
62:uart.c **** // USART Transmitter: On
63:uart.c **** // USART Mode: Asynchronous
64:uart.c **** // USART Baud rate: 38400
65:uart.c **** UCSRA=0x00;
289 x_counter,r24
290 lds r24,rx_counter
291 00c2 1BB8 cpi r24,lo8(8)
66:uart.c **** UCSRB=0x98;
292 24
293 lds r24,rx_wr_index
294 00c4 88E9 cpi r24,lo8(8)
295 00c6 8AB9 brne .L3
67:uart.c **** UCSRC=0xB6;
296 rx_wr_index,__zero_reg__
297 .L3:
299 00ca 80BD .LM6:
68:uart.c **** UBRRH=0x00;
300 r24,rx_counter
301 subi r24,lo8(-(1))
302 00cc 10BC sts rx_counter,r24
69:uart.c **** UBRRL=0x19;
303 s r24,rx_counter
304 cpi r24,lo8(8)
305 00ce 89E1 brne .L4
70:uart.c ****
71:uart.c **** sei();
307 brne .L3
308 sts rx_wr_index,__zero_reg__
309 .L3:
311 00d2 7894 .LM6:
312 lds r24,rx_counter
313 subi r24,lo8(-(1))
72:uart.c **** }
314 _counter,r24
315 lds r24,rx_counter
316 cpi r24,lo8(8)
317 00d4 0895 brne .L4
319 .LM7:
320 sts rx_counter,__zero_reg__
322 .LM8:
323 ldi r24,lo8(1)
324 sts rx_buffer_overflow,r24
325 .L4:
326 0000 00 /* epilogue start */
328 .LM9:
329 pop r31
330 pop r30
331 pop r25
332 pop r24
333 pop r0
334 out __SREG__,r0
335 pop r0
336 pop __zero_reg__
337 reti
DEFINED SYMBOLS
*ABS*:00000000 uart.c
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:5 *ABS*:00000034 __CCP__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:75 .text:00000000 __vector_11
*COM*:00000001 rx_wr_index
*COM*:00000008 rx_buffer
*COM*:00000001 rx_counter
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:325 .bss:00000000 rx_buffer_overflow
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:154 .text:0000006a uartGetc
*COM*:00000001 rx_rd_index
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:221 .text:000000ae uartOpen
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:240 .text:000000b4 uartClose
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:260 .text:000000ba uartPutc
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:283 .text:000000c2 uartInit
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -