?? 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:
107 .global LED
109 LED:
1:main.c **** //********************************
2:main.c **** // 主程序
3:main.c **** // 編譯環境WinAVR GCC
4:main.c **** // 2007-01-9
5:main.c **** // hjxiang
6:main.c **** //********************************
7:main.c **** //標準C頭文件
8:main.c **** #include <stdint.h>
9:main.c **** #include <stdlib.h>
10:main.c **** //AVR頭文件
11:main.c **** #include <avr/io.h>
12:main.c **** #include <avr/signal.h>
13:main.c **** #include <avr/delay.h>
14:main.c **** //自定義頭文件
15:main.c **** #include "usb.h"
16:main.c **** #include "epphal.h"
17:main.c **** #include "d12ic.h"
18:main.c **** #include "isr.h"
19:main.c **** #include "main.h"
20:main.c ****
21:main.c **** extern void (*StandardDeviceRequest[])(void);
22:main.c **** extern void (* VendorDeviceRequest[])(void);
23:main.c **** #define F_IO 16000000 //單片機外部時鐘頻率
24:main.c **** #define baud 1200 //串口通信波特率
25:main.c ****
26:main.c **** #define RD_N 4
27:main.c **** #define WR_N 5
28:main.c **** #define ALE 6
29:main.c **** #define CS_N 7
30:main.c **** #define RESET_N 3
31:main.c **** #define TXD232 1
32:main.c **** #define INT_N 2
33:main.c **** #define MCU_D12_CS_0() PORTB&=~(1<<CS_N)
34:main.c **** #define MCU_D12_CS_1() PORTB|=(1<<CS_N)
35:main.c **** #define LEDon() PORTB&=~(1<<PB1)
36:main.c **** #define LEDoff() PORTB|=(1<<PB1)
37:main.c **** void LED(void)
38:main.c **** {
111 .LM1:
112 /* prologue: frame size=0 */
113 /* prologue end (size=0) */
114 0000 8FEF ldi r24,lo8(-1)
115 .L2:
39:main.c **** while(1)
40:main.c **** {
41:main.c **** PORTC=0xff;
117 .LM2:
118 0002 85BB out 53-0x20,r24
119 0004 FECF rjmp .L2
120 /* epilogue: frame size=0 */
121 /* epilogue: noreturn */
122 /* epilogue end (size=0) */
123 /* function LED size 3 (3) */
125 .Lscope0:
127 .global IO_Init
129 IO_Init:
42:main.c **** }
43:main.c **** }
44:main.c **** void IO_Init(void)
45:main.c **** {
131 .LM3:
132 /* prologue: frame size=0 */
133 /* prologue end (size=0) */
46:main.c **** DDRB=(1<<CS_N)|(1<<RD_N)|(1<<WR_N)|(1<<RESET_N)|(1<<ALE);
135 .LM4:
136 0006 88EF ldi r24,lo8(-8)
137 0008 87BB out 55-0x20,r24
47:main.c **** PORTB=(1<<CS_N)|(1<<RD_N)|(1<<WR_N)|(1<<RESET_N)|(1<<ALE);
139 .LM5:
140 000a 88BB out 56-0x20,r24
48:main.c **** DDRD=(0<<INT_N)|(1<<TXD232);
142 .LM6:
143 000c 82E0 ldi r24,lo8(2)
144 000e 81BB out 49-0x20,r24
49:main.c **** DDRC=0xff;
146 .LM7:
147 0010 8FEF ldi r24,lo8(-1)
148 0012 84BB out 52-0x20,r24
50:main.c **** PORTC=0;
150 .LM8:
151 0014 15BA out 53-0x20,__zero_reg__
152 /* epilogue: frame size=0 */
153 0016 0895 ret
154 /* epilogue end (size=1) */
155 /* function IO_Init size 9 (8) */
157 .Lscope1:
159 .global USART_Init
161 USART_Init:
51:main.c **** }
53:main.c **** void USART_Init(void)
54:main.c **** {
163 .LM9:
164 /* prologue: frame size=0 */
165 /* prologue end (size=0) */
55:main.c **** /*設置波特率*/
56:main.c **** UCSRA = 0x00;
167 .LM10:
168 0018 1BB8 out 43-0x20,__zero_reg__
57:main.c **** //*接收器與發送器使能,接收結束中斷使能*/
58:main.c **** UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
170 .LM11:
171 001a 88E9 ldi r24,lo8(-104)
172 001c 8AB9 out 42-0x20,r24
59:main.c **** /*設置幀格式:8個數據位,1個停止位,偶校驗位*/
60:main.c **** UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1);
174 .LM12:
175 001e 86EA ldi r24,lo8(-90)
176 0020 80BD out 64-0x20,r24
61:main.c **** UBRRH =(F_IO/baud/16-1)/256;
178 .LM13:
179 0022 83E0 ldi r24,lo8(3)
180 0024 80BD out 64-0x20,r24
62:main.c **** UBRRL =(F_IO/baud/16-1)%256;
182 .LM14:
183 0026 80E4 ldi r24,lo8(64)
184 0028 89B9 out 41-0x20,r24
185 /* epilogue: frame size=0 */
186 002a 0895 ret
187 /* epilogue end (size=1) */
188 /* function USART_Init size 10 (9) */
190 .Lscope2:
193 .global put_c
195 put_c:
63:main.c **** }
64:main.c **** //串口發送數據
65:main.c **** void put_c(unsigned char cData) //發送采用查詢方式
66:main.c **** {
197 .LM15:
198 /* prologue: frame size=0 */
199 /* prologue end (size=0) */
200 .L7:
67:main.c **** while( !(UCSRA & (1<<UDRE)) );
202 .LM16:
203 002c 5D9B sbis 43-0x20,5
204 002e FECF rjmp .L7
68:main.c **** UDR=cData;
206 .LM17:
207 0030 8CB9 out 44-0x20,r24
208 /* epilogue: frame size=0 */
209 0032 0895 ret
210 /* epilogue end (size=1) */
211 /* function put_c size 4 (3) */
213 .Lscope3:
216 .global put_s
218 put_s:
69:main.c **** }
70:main.c **** void put_s(unsigned char *ptr)
71:main.c **** {
220 .LM18:
221 /* prologue: frame size=0 */
222 0034 CF93 push r28
223 0036 DF93 push r29
224 /* prologue end (size=2) */
225 0038 EC01 movw r28,r24
226 .L16:
72:main.c **** while (*ptr)
73:main.c **** {
74:main.c **** put_c(*ptr++);
228 .LM19:
229 003a 8881 ld r24,Y
230 003c 8823 tst r24
231 003e 21F0 breq .L15
232 0040 8991 ld r24,Y+
233 0042 0E94 0000 call put_c
234 0046 F9CF rjmp .L16
235 .L15:
75:main.c **** }
76:main.c **** put_c(0x0D);
237 .LM20:
238 0048 8DE0 ldi r24,lo8(13)
239 004a 0E94 0000 call put_c
77:main.c **** put_c(0x0A); //結尾發送回車換行
241 .LM21:
242 004e 8AE0 ldi r24,lo8(10)
243 0050 0E94 0000 call put_c
244 /* epilogue: frame size=0 */
245 0054 DF91 pop r29
246 0056 CF91 pop r28
247 0058 0895 ret
248 /* epilogue end (size=3) */
249 /* function put_s size 19 (14) */
251 .Lscope4:
253 .global Inter_Init
255 Inter_Init:
78:main.c **** }
79:main.c **** //中斷初始化
80:main.c **** void Inter_Init(void)
81:main.c **** {
257 .LM22:
258 /* prologue: frame size=0 */
259 /* prologue end (size=0) */
82:main.c **** MCUCR=0; //int0低電平中斷
261 .LM23:
262 005a 15BE out 85-0x20,__zero_reg__
83:main.c **** GICR=(1<<INT0);
264 .LM24:
265 005c 80E4 ldi r24,lo8(64)
266 005e 8BBF out 91-0x20,r24
267 /* epilogue: frame size=0 */
268 0060 0895 ret
269 /* epilogue end (size=1) */
270 /* function Inter_Init size 4 (3) */
272 .Lscope5:
274 .global __vector_1
276 __vector_1:
84:main.c **** }
85:main.c **** SIGNAL(SIG_INTERRUPT0)
86:main.c **** {
278 .LM25:
279 /* prologue: frame size=0 */
280 0062 1F92 push __zero_reg__
281 0064 0F92 push __tmp_reg__
282 0066 0FB6 in __tmp_reg__,__SREG__
283 0068 0F92 push __tmp_reg__
284 006a 1124 clr __zero_reg__
285 006c 2F93 push r18
286 006e 3F93 push r19
287 0070 4F93 push r20
288 0072 5F93 push r21
289 0074 6F93 push r22
290 0076 7F93 push r23
291 0078 8F93 push r24
292 007a 9F93 push r25
293 007c AF93 push r26
294 007e BF93 push r27
295 0080 EF93 push r30
296 0082 FF93 push r31
297 /* prologue end (size=17) */
87:main.c **** fn_usb_isr();
299 .LM26:
300 0084 0E94 0000 call fn_usb_isr
301 /* epilogue: frame size=0 */
302 0088 FF91 pop r31
303 008a EF91 pop r30
304 008c BF91 pop r27
305 008e AF91 pop r26
306 0090 9F91 pop r25
307 0092 8F91 pop r24
308 0094 7F91 pop r23
309 0096 6F91 pop r22
310 0098 5F91 pop r21
311 009a 4F91 pop r20
312 009c 3F91 pop r19
313 009e 2F91 pop r18
314 00a0 0F90 pop __tmp_reg__
315 00a2 0FBE out __SREG__,__tmp_reg__
316 00a4 0F90 pop __tmp_reg__
317 00a6 1F90 pop __zero_reg__
318 00a8 1895 reti
319 /* epilogue end (size=17) */
320 /* function __vector_1 size 36 (2) */
322 .Lscope6:
324 .global disconnect_USB
326 disconnect_USB:
88:main.c **** }
89:main.c **** void main(void)
90:main.c **** {
91:main.c **** IO_Init();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -