📄 main.lst
字号:
1 .file "main.c"
2 .arch atmega16
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:
93 .global DisplayTcb
94 .section .progmem.data,"a",@progbits
97 DisplayTcb:
98 0000 0000 .word DisplayStk+134
99 0002 0000 .word pm(Display)
100 0004 0000 .word DisplayPid
101 0006 05 .byte 5
102 .global KeyPressTcb
105 KeyPressTcb:
106 0007 0000 .word KeyPressStk+134
107 0009 0000 .word pm(KeyPress)
108 000b 0000 .word KeyPressPid
109 000d 05 .byte 5
110 .text
112 .global __vector_9
114 __vector_9:
1:main.c **** #include <stdio.h>
2:main.c **** #include <string.h>
3:main.c **** #include <avr/io.h>
4:main.c **** #include <avr/pgmspace.h>
5:main.c ****
6:main.c **** #include <avrx/avrx.h>
7:main.c ****
8:main.c **** //#include "hardware.h"
9:main.c **** #include "uart.h"
10:main.c ****
11:main.c **** Mutex key_pressed;
12:main.c **** TimerControlBlock delay;
13:main.c ****
14:main.c **** // 1ms
15:main.c **** AVRX_SIGINT(SIG_OVERFLOW0)
16:main.c **** {
116 .LM1:
117 /* prologue: frame size=0 */
118 /* prologue: naked */
119 /* prologue end (size=0) */
17:main.c **** IntProlog();
121 .LM2:
122 0000 0E94 0000 call IntProlog
18:main.c **** TCNT0 = (0xFF - F_CPU / 256 / 1000);//TCNT0_INIT;
124 .LM3:
125 0004 83EE ldi r24,lo8(-29)
126 0006 82BF out 82-0x20,r24
19:main.c **** AvrXTimerHandler();
128 .LM4:
129 0008 0E94 0000 call AvrXTimerHandler
20:main.c **** Epilog();
131 .LM5:
132 000c 0E94 0000 call Epilog
133 /* epilogue: frame size=0 */
134 /* epilogue: naked */
135 /* epilogue end (size=0) */
136 /* function __vector_9 size 8 (8) */
138 .Lscope0:
140 .global __vector_1
142 __vector_1:
21:main.c **** }
22:main.c ****
23:main.c **** AVRX_SIGINT(SIG_INTERRUPT0)
24:main.c **** {
144 .LM6:
145 /* prologue: frame size=0 */
146 /* prologue: naked */
147 /* prologue end (size=0) */
25:main.c **** IntProlog();
149 .LM7:
150 0010 0E94 0000 call IntProlog
26:main.c **** AvrXSetSemaphore(&key_pressed);
152 .LM8:
153 0014 80E0 ldi r24,lo8(key_pressed)
154 0016 90E0 ldi r25,hi8(key_pressed)
155 0018 0E94 0000 call AvrXSetSemaphore
27:main.c **** Epilog();
157 .LM9:
158 001c 0E94 0000 call Epilog
159 /* epilogue: frame size=0 */
160 /* epilogue: naked */
161 /* epilogue end (size=0) */
162 /* function __vector_1 size 8 (8) */
164 .Lscope1:
165 .section .progmem.data
168 __c.1:
169 000e 6B65 7920 .string "key bn\326\320\271\372 pool pressed!\r"
169 626E D6D0
169 B9FA 2070
169 6F6F 6C20
169 7072 6573
170 .text
172 .global KeyPress
174 KeyPress:
28:main.c **** }
29:main.c ****
30:main.c **** AVRX_GCC_TASKDEF(KeyPress, 100, 5)
31:main.c **** {
176 .LM10:
177 /* prologue: frame size=0 */
178 /* prologue: naked */
179 /* prologue end (size=0) */
32:main.c **** MCUCR |= _BV(ISC01) | _BV(ISC00);
181 .LM11:
182 0020 85B7 in r24,85-0x20
183 0022 8360 ori r24,lo8(3)
184 0024 85BF out 85-0x20,r24
33:main.c **** GIFR |= _BV(INTF0);
186 .LM12:
187 0026 8AB7 in r24,90-0x20
188 0028 8064 ori r24,lo8(64)
189 002a 8ABF out 90-0x20,r24
34:main.c **** GICR |= _BV(INT0);
191 .LM13:
192 002c 8BB7 in r24,91-0x20
193 002e 8064 ori r24,lo8(64)
194 0030 8BBF out 91-0x20,r24
195 .L12:
35:main.c ****
36:main.c **** while(1)
37:main.c **** {
38:main.c **** while(1)
39:main.c **** {
40:main.c **** AvrXResetSemaphore(&key_pressed);
197 .LM14:
198 0032 80E0 ldi r24,lo8(key_pressed)
199 0034 90E0 ldi r25,hi8(key_pressed)
200 0036 0E94 0000 call AvrXResetSemaphore
41:main.c **** AvrXWaitSemaphore(&key_pressed);
202 .LM15:
203 003a 80E0 ldi r24,lo8(key_pressed)
204 003c 90E0 ldi r25,hi8(key_pressed)
205 003e 0E94 0000 call AvrXWaitSemaphore
42:main.c **** AvrXDelay(&delay, 20);
207 .LM16:
208 0042 64E1 ldi r22,lo8(20)
209 0044 70E0 ldi r23,hi8(20)
210 0046 80E0 ldi r24,lo8(delay)
211 0048 90E0 ldi r25,hi8(delay)
212 004a 0E94 0000 call AvrXDelay
43:main.c **** if (PIND & _BV(PD2)) break;
214 .LM17:
215 004e 829B sbis 48-0x20,2
216 0050 F0CF rjmp .L12
44:main.c **** }
45:main.c **** puts_P(PSTR("key bn中国 pool pressed!\r"));
218 .LM18:
219 0052 80E0 ldi r24,lo8(__c.1)
220 0054 90E0 ldi r25,hi8(__c.1)
221 0056 0E94 0000 call puts_P
222 005a EBCF rjmp .L12
223 /* epilogue: frame size=0 */
224 /* epilogue: naked */
225 /* epilogue end (size=0) */
226 /* function KeyPress size 30 (30) */
228 .Lscope2:
229 .section .progmem.data
232 __c.0:
233 0028 3031 3233 .string "0123456789\326\320\273\252\310\313\303\361\271\262\272\315\271\372\315\362\313\352\243\24
233 3435 3637
233 3839 D6D0
233 BBAA C8CB
233 C3F1 B9B2
234 .text
236 .global Display
238 Display:
46:main.c **** }
47:main.c **** }
48:main.c ****
49:main.c **** AVRX_GCC_TASKDEF(Display, 100, 5)
50:main.c **** {
240 .LM19:
241 /* prologue: frame size=0 */
242 /* prologue: naked */
243 /* prologue end (size=0) */
51:main.c **** DDRB |= _BV(PB1);
245 .LM20:
246 005c B99A sbi 55-0x20,1
247 .L14:
52:main.c ****
53:main.c **** while(1)
54:main.c **** {
55:main.c **** puts_P(PSTR("0123456789中华人民共和国万岁!\r"));
249 .LM21:
250 005e 80E0 ldi r24,lo8(__c.0)
251 0060 90E0 ldi r25,hi8(__c.0)
252 0062 0E94 0000 call puts_P
56:main.c **** PORTB &= ~_BV(PB1);
254 .LM22:
255 0066 C198 cbi 56-0x20,1
57:main.c **** AvrXDelay(&delay, 20);
257 .LM23:
258 0068 64E1 ldi r22,lo8(20)
259 006a 70E0 ldi r23,hi8(20)
260 006c 80E0 ldi r24,lo8(delay)
261 006e 90E0 ldi r25,hi8(delay)
262 0070 0E94 0000 call AvrXDelay
58:main.c **** PORTB |= _BV(PB1);
264 .LM24:
265 0074 C19A sbi 56-0x20,1
59:main.c **** AvrXDelay(&delay, 980);
267 .LM25:
268 0076 64ED ldi r22,lo8(980)
269 0078 73E0 ldi r23,hi8(980)
270 007a 80E0 ldi r24,lo8(delay)
271 007c 90E0 ldi r25,hi8(delay)
272 007e 0E94 0000 call AvrXDelay
273 0082 EDCF rjmp .L14
274 /* epilogue: frame size=0 */
275 /* epilogue: naked */
276 /* epilogue end (size=0) */
277 /* function Display size 20 (20) */
279 .Lscope3:
281 .global main
283 main:
60:main.c **** }
61:main.c **** }
62:main.c ****
63:main.c **** int
64:main.c **** main(void)
65:main.c **** {
285 .LM26:
286 /* prologue: frame size=0 */
287 0084 C0E0 ldi r28,lo8(__stack - 0)
288 0086 D0E0 ldi r29,hi8(__stack - 0)
289 0088 DEBF out __SP_H__,r29
290 008a CDBF out __SP_L__,r28
291 /* prologue end (size=4) */
66:main.c **** //OSCCAL = 0xB7;
67:main.c ****
68:main.c **** AvrXSetKernelStack(0);
293 .LM27:
294 008c 80E0 ldi r24,lo8(0)
295 008e 90E0 ldi r25,hi8(0)
296 0090 0E94 0000 call AvrXSetKernelStack
69:main.c ****
70:main.c **** // Analog Comparator initialization
71:main.c **** // Analog Comparator: Off
72:main.c **** // Analog Comparator Input Capture by Timer/Counter 1: Off
73:main.c **** // Analog Comparator Output: Off
74:main.c **** ACSR = 0x80;
298 .LM28:
299 0094 80E8 ldi r24,lo8(-128)
300 0096 88B9 out 40-0x20,r24
75:main.c **** SFIOR = 0x00;
302 .LM29:
303 0098 10BE out 80-0x20,__zero_reg__
76:main.c ****
77:main.c **** TCCR0 = _BV(CS02);//T0MC8_CK256; // Set up Timer0 for CLK/256 rate
305 .LM30:
306 009a 84E0 ldi r24,lo8(4)
307 009c 83BF out 83-0x20,r24
78:main.c **** TCNT0 = (0xFF - F_CPU / 256 / 1000);//TCNT0_INIT;
309 .LM31:
310 009e 83EE ldi r24,lo8(-29)
311 00a0 82BF out 82-0x20,r24
79:main.c **** TIMSK |= _BV(TOIE0); // Enable Timer0 overflow interrupt
313 .LM32:
314 00a2 89B7 in r24,89-0x20
315 00a4 8160 ori r24,lo8(1)
316 00a6 89BF out 89-0x20,r24
80:main.c ****
81:main.c **** UartInit();
318 .LM33:
319 00a8 0E94 0000 call UartInit
82:main.c ****
83:main.c **** AvrXRunTask(TCB(Display));
321 .LM34:
322 00ac 80E0 ldi r24,lo8(DisplayTcb)
323 00ae 90E0 ldi r25,hi8(DisplayTcb)
324 00b0 0E94 0000 call AvrXRunTask
84:main.c **** AvrXRunTask(TCB(KeyPress));
326 .LM35:
327 00b4 80E0 ldi r24,lo8(KeyPressTcb)
328 00b6 90E0 ldi r25,hi8(KeyPressTcb)
329 00b8 0E94 0000 call AvrXRunTask
85:main.c ****
86:main.c **** Epilog(); // Switch from AvrX Stack to first task
331 .LM36:
332 00bc 0E94 0000 call Epilog
87:main.c ****
88:main.c **** return 0;
89:main.c **** }
334 .LM37:
335 00c0 80E0 ldi r24,lo8(0)
336 00c2 90E0 ldi r25,hi8(0)
337 /* epilogue: frame size=0 */
338 00c4 0C94 0000 jmp exit
339 /* epilogue end (size=2) */
340 /* function main size 34 (28) */
342 .Lscope4:
343 .comm key_pressed,2,1
344 .comm delay,6,1
345 .comm KeyPressStk,135,1
346 .comm KeyPressPid,6,1
347 .comm DisplayStk,135,1
348 .comm DisplayPid,6,1
357 .text
359 Letext:
360 /* File "main.c": code 100 = 0x0064 ( 94), prologues 4, epilogues 2 */
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__
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:97 .progmem.data:00000000 DisplayTcb
*COM*:00000087 DisplayStk
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:238 .text:0000005c Display
*COM*:00000006 DisplayPid
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:105 .progmem.data:00000007 KeyPressTcb
*COM*:00000087 KeyPressStk
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:174 .text:00000020 KeyPress
*COM*:00000006 KeyPressPid
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:114 .text:00000000 __vector_9
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:142 .text:00000010 __vector_1
*COM*:00000002 key_pressed
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:168 .progmem.data:0000000e __c.1
*COM*:00000006 delay
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:232 .progmem.data:00000028 __c.0
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:283 .text:00000084 main
C:\DOCUME~1\KAIFA\LOCALS~1\Temp/ccO8aaaa.s:359 .text:000000c8 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
IntProlog
AvrXTimerHandler
Epilog
AvrXSetSemaphore
AvrXResetSemaphore
AvrXWaitSemaphore
AvrXDelay
puts_P
__stack
AvrXSetKernelStack
UartInit
AvrXRunTask
exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -