📄 main.lst
字号:
1 .file "main.c"
2 .arch atmega8
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
12 .text
13 .Ltext0:
84 .global delay
86 delay:
1:main.c **** /*************************************************************
2:main.c **** 文件件:mian.c
3:main.c **** 设计人员:李志双
4:main.c **** 主要功能: 键盘扫描程序
5:main.c **** 特殊功能: 无
6:main.c **** *************************************************************/
7:main.c **** #include <stdio.h>
8:main.c **** #include <stddef.h>
9:main.c **** #include <stdlib.h>
10:main.c **** #include <avr/io.H>
11:main.c **** #include <inttypes.h>
12:main.c **** #include <avr/interrupt.h>
13:main.c **** #include <avr/signal.h>
14:main.c **** /***************************************/
15:main.c **** #define DD_MOSI 3
16:main.c **** #define DD_MISO 4
17:main.c **** #define DD_SCK 5
18:main.c **** #define DD_SS 2
19:main.c **** #define DDR_SPI DDRB
20:main.c **** uint8_t RevData;
21:main.c **** void delay(volatile uint16_t time)
22:main.c **** {
88 .LM1:
89 /* prologue: frame size=6 */
90 0000 CF93 push r28
91 0002 DF93 push r29
92 0004 CDB7 in r28,__SP_L__
93 0006 DEB7 in r29,__SP_H__
94 0008 2697 sbiw r28,6
95 000a 0FB6 in __tmp_reg__,__SREG__
96 000c F894 cli
97 000e DEBF out __SP_H__,r29
98 0010 0FBE out __SREG__,__tmp_reg__
99 0012 CDBF out __SP_L__,r28
100 /* prologue end (size=10) */
101 0014 8983 std Y+1,r24
102 0016 9A83 std Y+2,r25
23:main.c **** volatile uint16_t i,j;
24:main.c **** for( i=0;i<time;i++)
104 .LM2:
105 .LBB2:
106 0018 1B82 std Y+3,__zero_reg__
107 001a 1C82 std Y+4,__zero_reg__
108 001c 2B81 ldd r18,Y+3
109 001e 3C81 ldd r19,Y+4
110 0020 8981 ldd r24,Y+1
111 0022 9A81 ldd r25,Y+2
112 0024 2817 cp r18,r24
113 0026 3907 cpc r19,r25
114 0028 D8F4 brsh .L13
115 .L11:
25:main.c **** for( j=0;j<10;j++);
117 .LM3:
118 002a 1D82 std Y+5,__zero_reg__
119 002c 1E82 std Y+6,__zero_reg__
120 002e 8D81 ldd r24,Y+5
121 0030 9E81 ldd r25,Y+6
122 0032 0A97 sbiw r24,10
123 0034 48F4 brsh .L15
124 .L10:
125 0036 8D81 ldd r24,Y+5
126 0038 9E81 ldd r25,Y+6
127 003a 0196 adiw r24,1
128 003c 8D83 std Y+5,r24
129 003e 9E83 std Y+6,r25
130 0040 8D81 ldd r24,Y+5
131 0042 9E81 ldd r25,Y+6
132 0044 0A97 sbiw r24,10
133 0046 B8F3 brlo .L10
134 .L15:
136 .LM4:
137 0048 8B81 ldd r24,Y+3
138 004a 9C81 ldd r25,Y+4
139 004c 0196 adiw r24,1
140 004e 8B83 std Y+3,r24
141 0050 9C83 std Y+4,r25
142 0052 2B81 ldd r18,Y+3
143 0054 3C81 ldd r19,Y+4
144 0056 8981 ldd r24,Y+1
145 0058 9A81 ldd r25,Y+2
146 005a 2817 cp r18,r24
147 005c 3907 cpc r19,r25
148 005e 28F3 brlo .L11
149 .L13:
26:main.c **** }
151 .LM5:
152 .LBE2:
153 /* epilogue: frame size=6 */
154 0060 2696 adiw r28,6
155 0062 0FB6 in __tmp_reg__,__SREG__
156 0064 F894 cli
157 0066 DEBF out __SP_H__,r29
158 0068 0FBE out __SREG__,__tmp_reg__
159 006a CDBF out __SP_L__,r28
160 006c DF91 pop r29
161 006e CF91 pop r28
162 0070 0895 ret
163 /* epilogue end (size=9) */
164 /* function delay size 59 (40) */
170 .Lscope0:
173 .global SPI_SlaveInit
175 SPI_SlaveInit:
27:main.c **** void SPI_SlaveInit(void)
28:main.c **** {
177 .LM6:
178 /* prologue: frame size=0 */
179 /* prologue end (size=0) */
29:main.c **** /* 设置MISO为输出,其他为输入 */
30:main.c **** DDR_SPI = (1<<DD_MISO);
181 .LM7:
182 0072 80E1 ldi r24,lo8(16)
183 0074 87BB out 55-0x20,r24
31:main.c **** //DDR_SPI &= ~(1<<DD_MOSI);
32:main.c **** //DDR_SPI &= ~(1<<DD_SS);
33:main.c **** /* 使能 SPI */
34:main.c **** SPCR = (1<<SPE)|(1<<CPHA)|(1<<SPIE);
185 .LM8:
186 0076 84EC ldi r24,lo8(-60)
187 0078 8DB9 out 45-0x20,r24
35:main.c **** //SPCR |= (1<<CPHA);
36:main.c **** //SPCR|=1<<SPIE;//开中断
37:main.c **** SREG=0x80;
189 .LM9:
190 007a 80E8 ldi r24,lo8(-128)
191 007c 8FBF out 95-0x20,r24
38:main.c **** }
193 .LM10:
194 /* epilogue: frame size=0 */
195 007e 0895 ret
196 /* epilogue end (size=1) */
197 /* function SPI_SlaveInit size 7 (6) */
199 .Lscope1:
202 .global SPI_SlaveReceive
204 SPI_SlaveReceive:
39:main.c **** char SPI_SlaveReceive(void)
40:main.c **** {
206 .LM11:
207 /* prologue: frame size=0 */
208 /* prologue end (size=0) */
41:main.c **** /* 等待接收结束 */
42:main.c **** while(!(SPSR & (1<<SPIF)));
210 .LM12:
211 .L18:
212 0080 779B sbis 46-0x20,7
213 0082 FECF rjmp .L18
43:main.c **** /* 返回数据 */
44:main.c **** return SPDR;
215 .LM13:
216 0084 8FB1 in r24,47-0x20
217 0086 9927 clr r25
45:main.c **** }
219 .LM14:
220 /* epilogue: frame size=0 */
221 0088 0895 ret
222 /* epilogue end (size=1) */
223 /* function SPI_SlaveReceive size 5 (4) */
225 .Lscope2:
229 .global ISR
231 ISR:
46:main.c **** ISR(SPI_STC_vect)
47:main.c **** {
233 .LM15:
234 /* prologue: frame size=0 */
235 /* prologue end (size=0) */
48:main.c **** RevData=SPDR;
237 .LM16:
238 008a 8FB1 in r24,47-0x20
239 008c 8093 0000 sts RevData,r24
49:main.c **** }
241 .LM17:
242 /* epilogue: frame size=0 */
243 0090 0895 ret
244 /* epilogue end (size=1) */
245 /* function ISR size 4 (3) */
247 .Lscope3:
250 .global KeySan
252 KeySan:
50:main.c **** uint8_t KeySan(void)
51:main.c **** {
254 .LM18:
255 /* prologue: frame size=0 */
256 0092 CF93 push r28
257 /* prologue end (size=1) */
52:main.c **** uint8_t temp;
53:main.c **** uint8_t KeyValue=0xff;
259 .LM19:
260 .LBB3:
261 0094 CFEF ldi r28,lo8(-1)
54:main.c **** PORTD=0xe0;
263 .LM20:
264 0096 80EE ldi r24,lo8(-32)
265 0098 82BB out 50-0x20,r24
55:main.c **** delay(1);
267 .LM21:
268 009a 81E0 ldi r24,lo8(1)
269 009c 90E0 ldi r25,hi8(1)
270 009e B0DF rcall delay
56:main.c **** temp=PINC;
272 .LM22:
273 00a0 83B3 in r24,51-0x20
57:main.c **** temp=~temp;
275 .LM23:
276 00a2 8095 com r24
58:main.c **** if((temp&0x1f)!=0)
278 .LM24:
279 00a4 9927 clr r25
280 00a6 8F71 andi r24,lo8(31)
281 00a8 9070 andi r25,hi8(31)
282 00aa 0097 sbiw r24,0
283 00ac D9F0 breq .L24
59:main.c **** {
60:main.c ****
61:main.c **** switch(temp&0x1f)
285 .LM25:
286 00ae 8430 cpi r24,4
287 00b0 9105 cpc r25,__zero_reg__
288 00b2 99F0 breq .L28
289 00b4 8530 cpi r24,5
290 00b6 9105 cpc r25,__zero_reg__
291 00b8 34F4 brge .L33
292 00ba 8130 cpi r24,1
293 00bc 9105 cpc r25,__zero_reg__
294 00be 49F0 breq .L26
295 00c0 0297 sbiw r24,2
296 00c2 49F0 breq .L27
297 00c4 0FC0 rjmp .L24
298 .L33:
299 00c6 8830 cpi r24,8
300 00c8 9105 cpc r25,__zero_reg__
301 00ca 49F0 breq .L29
302 00cc 4097 sbiw r24,16
303 00ce 49F0 breq .L30
304 00d0 09C0 rjmp .L24
305 .L26:
62:main.c **** {
63:main.c **** case 0x01:
64:main.c **** KeyValue=1;
307 .LM26:
308 00d2 C1E0 ldi r28,lo8(1)
65:main.c **** break;
310 .LM27:
311 00d4 07C0 rjmp .L24
312 .L27:
66:main.c **** case 0x02:
67:main.c **** KeyValue=2;
314 .LM28:
315 00d6 C2E0 ldi r28,lo8(2)
68:main.c **** break;
317 .LM29:
318 00d8 05C0 rjmp .L24
319 .L28:
69:main.c **** case 0x04:
70:main.c **** KeyValue= 3;
321 .LM30:
322 00da C3E0 ldi r28,lo8(3)
71:main.c **** break;
324 .LM31:
325 00dc 03C0 rjmp .L24
326 .L29:
72:main.c **** case 0x08:
73:main.c **** KeyValue= 4;
328 .LM32:
329 00de C4E0 ldi r28,lo8(4)
74:main.c **** break;
331 .LM33:
332 00e0 01C0 rjmp .L24
333 .L30:
75:main.c **** case 0x10:
76:main.c **** KeyValue= 5;
335 .LM34:
336 00e2 C5E0 ldi r28,lo8(5)
337 .L24:
77:main.c **** break;
78:main.c **** }
79:main.c ****
80:main.c **** }
81:main.c **** PORTD=0xd0;
339 .LM35:
340 00e4 80ED ldi r24,lo8(-48)
341 00e6 82BB out 50-0x20,r24
82:main.c **** delay(1);
343 .LM36:
344 00e8 81E0 ldi r24,lo8(1)
345 00ea 90E0 ldi r25,hi8(1)
346 00ec 89DF rcall delay
83:main.c **** temp=PINC;
348 .LM37:
349 00ee 83B3 in r24,51-0x20
84:main.c **** temp=~temp;
351 .LM38:
352 00f0 8095 com r24
85:main.c **** if((temp&0x1f)!=0)
354 .LM39:
355 00f2 9927 clr r25
356 00f4 8F71 andi r24,lo8(31)
357 00f6 9070 andi r25,hi8(31)
358 00f8 0097 sbiw r24,0
359 00fa D9F0 breq .L34
86:main.c **** {
87:main.c ****
88:main.c **** switch(temp&0x1f)
361 .LM40:
362 00fc 8430 cpi r24,4
363 00fe 9105 cpc r25,__zero_reg__
364 0100 99F0 breq .L38
365 0102 8530 cpi r24,5
366 0104 9105 cpc r25,__zero_reg__
367 0106 34F4 brge .L43
368 0108 8130 cpi r24,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -