📄 uart1.lst
字号:
1 .file "uart1.c"
2 .arch attiny2313
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:
83 .global __vector_9
85 __vector_9:
1:uart1.c **** #include <avr/io.h>
2:uart1.c **** #include <avr/interrupt.h>
3:uart1.c **** #include <stdlib.h>
4:uart1.c **** #include <string.h>
5:uart1.c ****
6:uart1.c **** #define UART_BAUD_RATE 19200
7:uart1.c **** #define UART_BAUD_SELECT (((((F_CPU+(UART_BAUD_RATE/2))/UART_BAUD_RATE)+8)/16)-1)
8:uart1.c ****
9:uart1.c **** #ifdef _AVR_IOTN2313_H_
10:uart1.c **** #define UART_TX_vect USART_TX_vect
11:uart1.c **** #define UART_RX_vect USART_RX_vect
12:uart1.c **** #define UCR UCSRB
13:uart1.c **** #define UBRR UBRRL
14:uart1.c **** #endif //attiny2313
15:uart1.c ****
16:uart1.c **** uint8_t *uart_data_ptr;
17:uart1.c **** uint8_t uart_counter;
18:uart1.c **** uint8_t led;
19:uart1.c **** static volatile uint8_t flag;
20:uart1.c ****
21:uart1.c **** ISR(UART_TX_vect)
22:uart1.c **** {
87 .LM1:
88 /* prologue: frame size=0 */
89 0000 1F92 push __zero_reg__
90 0002 0F92 push __tmp_reg__
91 0004 0FB6 in __tmp_reg__,__SREG__
92 0006 0F92 push __tmp_reg__
93 0008 1124 clr __zero_reg__
94 000a 8F93 push r24
95 000c EF93 push r30
96 000e FF93 push r31
97 /* prologue end (size=8) */
23:uart1.c **** uart_data_ptr++;
99 .LM2:
100 0010 E091 0000 lds r30,uart_data_ptr
101 0014 F091 0000 lds r31,(uart_data_ptr)+1
102 0018 3196 adiw r30,1
103 001a F093 0000 sts (uart_data_ptr)+1,r31
104 001e E093 0000 sts uart_data_ptr,r30
105 0022 3197 sbiw r30,1
24:uart1.c ****
25:uart1.c **** if(--uart_counter)
107 .LM3:
108 0024 8091 0000 lds r24,uart_counter
109 0028 8150 subi r24,lo8(-(-1))
110 002a 8093 0000 sts uart_counter,r24
111 002e 8823 tst r24
112 0030 11F0 breq .L1
26:uart1.c **** UDR = *uart_data_ptr;
114 .LM4:
115 0032 8181 ldd r24,Z+1
116 0034 8CB9 out 44-0x20,r24
117 .L1:
118 /* epilogue: frame size=0 */
119 0036 FF91 pop r31
120 0038 EF91 pop r30
121 003a 8F91 pop r24
122 003c 0F90 pop __tmp_reg__
123 003e 0FBE out __SREG__,__tmp_reg__
124 0040 0F90 pop __tmp_reg__
125 0042 1F90 pop __zero_reg__
126 0044 1895 reti
127 /* epilogue end (size=8) */
128 /* function __vector_9 size 35 (19) */
130 .Lscope0:
132 .global __vector_7
134 __vector_7:
27:uart1.c **** }
28:uart1.c ****
29:uart1.c **** ISR(UART_RX_vect)
30:uart1.c **** {
136 .LM5:
137 /* prologue: frame size=0 */
138 0046 1F92 push __zero_reg__
139 0048 0F92 push __tmp_reg__
140 004a 0FB6 in __tmp_reg__,__SREG__
141 004c 0F92 push __tmp_reg__
142 004e 1124 clr __zero_reg__
143 0050 8F93 push r24
144 /* prologue end (size=6) */
31:uart1.c **** led = UDR;
146 .LM6:
147 0052 8CB1 in r24,44-0x20
148 0054 8093 0000 sts led,r24
32:uart1.c **** PORTB = ~led;
150 .LM7:
151 0058 8095 com r24
152 005a 88BB out 56-0x20,r24
33:uart1.c **** flag = 1;
154 .LM8:
155 005c 81E0 ldi r24,lo8(1)
156 005e 8093 0000 sts flag,r24
157 /* epilogue: frame size=0 */
158 0062 8F91 pop r24
159 0064 0F90 pop __tmp_reg__
160 0066 0FBE out __SREG__,__tmp_reg__
161 0068 0F90 pop __tmp_reg__
162 006a 1F90 pop __zero_reg__
163 006c 1895 reti
164 /* epilogue end (size=6) */
165 /* function __vector_7 size 20 (8) */
167 .Lscope1:
171 .global uart_send
173 uart_send:
34:uart1.c **** }
35:uart1.c ****
36:uart1.c ****
37:uart1.c **** void uart_send(uint8_t* buff, uint8_t size)
38:uart1.c **** {
175 .LM9:
176 /* prologue: frame size=0 */
177 /* prologue end (size=0) */
178 006e F92F mov r31,r25
179 0070 E82F mov r30,r24
39:uart1.c **** if(!uart_counter) {
181 .LM10:
182 0072 8091 0000 lds r24,uart_counter
183 0076 8823 tst r24
184 0078 41F4 brne .L5
40:uart1.c **** uart_data_ptr = buff;
186 .LM11:
187 007a F093 0000 sts (uart_data_ptr)+1,r31
188 007e E093 0000 sts uart_data_ptr,r30
41:uart1.c **** uart_counter = size;
190 .LM12:
191 0082 6093 0000 sts uart_counter,r22
42:uart1.c **** UDR = *buff;
193 .LM13:
194 0086 8081 ld r24,Z
195 0088 8CB9 out 44-0x20,r24
196 .L5:
197 008a 0895 ret
198 /* epilogue: frame size=0 */
199 /* epilogue: noreturn */
200 /* epilogue end (size=0) */
201 /* function uart_send size 15 (15) */
203 .Lscope2:
205 .global uart_init
207 uart_init:
43:uart1.c **** }
44:uart1.c **** }
45:uart1.c ****
46:uart1.c ****
47:uart1.c **** void uart_init(void)
48:uart1.c **** {
209 .LM14:
210 /* prologue: frame size=0 */
211 /* prologue end (size=0) */
49:uart1.c **** UCR = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
213 .LM15:
214 008c 88ED ldi r24,lo8(-40)
215 008e 8AB9 out 42-0x20,r24
50:uart1.c **** #ifdef _AVR_IOTN2313_H_
51:uart1.c **** UBRRH = (uint8_t)(UART_BAUD_SELECT >> 8);
217 .LM16:
218 0090 12B8 out 34-0x20,__zero_reg__
52:uart1.c **** #endif //attiny2313
53:uart1.c **** UBRR = (uint8_t)UART_BAUD_SELECT;
220 .LM17:
221 0092 8CE0 ldi r24,lo8(12)
222 0094 89B9 out 41-0x20,r24
223 /* epilogue: frame size=0 */
224 0096 0895 ret
225 /* epilogue end (size=1) */
226 /* function uart_init size 6 (5) */
228 .Lscope3:
232 .global int2str
234 int2str:
54:uart1.c **** }
55:uart1.c ****
56:uart1.c **** char* int2str(uint8_t num, char* str_val)
57:uart1.c **** {
236 .LM18:
237 /* prologue: frame size=0 */
238 /* prologue end (size=0) */
239 0098 B72F mov r27,r23
240 009a A62F mov r26,r22
58:uart1.c **** uint8_t i;
59:uart1.c **** uint8_t hi = num >> 4;
242 .LM19:
243 009c 282F mov r18,r24
244 009e 2295 swap r18
245 00a0 2F70 andi r18,0x0f
60:uart1.c **** str_val[0] = '0';
247 .LM20:
248 00a2 90E3 ldi r25,lo8(48)
249 00a4 9C93 st X,r25
61:uart1.c **** str_val[1] = 'x';
251 .LM21:
252 00a6 98E7 ldi r25,lo8(120)
253 00a8 F72F mov r31,r23
254 00aa E62F mov r30,r22
255 00ac 9183 std Z+1,r25
62:uart1.c **** str_val[4] = 0;
257 .LM22:
258 00ae 1482 std Z+4,__zero_reg__
259 00b0 8F70 andi r24,lo8(15)
260 00b2 3296 adiw r30,2
261 00b4 91E0 ldi r25,lo8(1)
262 .L14:
63:uart1.c **** for(i=2; i<4; i++) {
64:uart1.c **** if(hi > 9) str_val[i] = hi + 55;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -