📄 code.lst
字号:
1 .file "code.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:
51 .global ledcode
52 .data
55 ledcode:
56 0000 3F .byte 63
57 0001 06 .byte 6
58 0002 5B .byte 91
59 0003 4F .byte 79
60 0004 66 .byte 102
61 0005 6D .byte 109
62 0006 7D .byte 125
63 0007 07 .byte 7
64 0008 7F .byte 127
65 0009 6F .byte 111
66 .text
69 .global delay
71 delay:
1:D:/irene/irene3/code.c **** #include <avr/io.h>
2:D:/irene/irene3/code.c **** #include <avr/signal.h>
3:D:/irene/irene3/code.c **** #include <avr/interrupt.h>
4:D:/irene/irene3/code.c **** #include <inttypes.h>
5:D:/irene/irene3/code.c **** #define vref 496
6:D:/irene/irene3/code.c **** uint8_t ledcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*LED译码*/
7:D:/irene/irene3/code.c **** uint8_t ledbuff[6]; /*显示缓冲*/
8:D:/irene/irene3/code.c **** void delay(uint16_t time) /*延时*/
9:D:/irene/irene3/code.c **** {
73 .LM1:
74 /* prologue: frame size=0 */
75 /* prologue end (size=0) */
76 .L7:
10:D:/irene/irene3/code.c **** while(time>0)
11:D:/irene/irene3/code.c **** time--;
78 .LM2:
79 0000 0097 sbiw r24,0
80 0002 11F0 breq .L6
82 .LM3:
83 0004 0197 sbiw r24,1
84 0006 FCCF rjmp .L7
85 .L6:
86 0008 0895 ret
87 /* epilogue: frame size=0 */
88 /* epilogue: noreturn */
89 /* epilogue end (size=0) */
90 /* function delay size 5 (5) */
93 .global leddisplay
95 leddisplay:
12:D:/irene/irene3/code.c **** }
13:D:/irene/irene3/code.c **** void leddisplay(void) /*数码管显示函数*/
14:D:/irene/irene3/code.c **** {
97 .LM4:
98 /* prologue: frame size=0 */
99 000a CF92 push r12
100 000c DF92 push r13
101 000e FF92 push r15
102 0010 0F93 push r16
103 0012 1F93 push r17
104 0014 CF93 push r28
105 0016 DF93 push r29
106 /* prologue end (size=7) */
107 0018 90E0 ldi r25,lo8(ledbuff)
108 001a C92E mov r12,r25
109 001c 90E0 ldi r25,hi8(ledbuff)
110 001e D92E mov r13,r25
111 0020 C0E0 ldi r28,lo8(0)
112 0022 D0E0 ldi r29,hi8(0)
113 0024 85E0 ldi r24,lo8(5)
114 0026 F82E mov r15,r24
115 .L12:
15:D:/irene/irene3/code.c **** uint8_t i;
16:D:/irene/irene3/code.c **** for (i=0;i<6;i++)
17:D:/irene/irene3/code.c **** {
18:D:/irene/irene3/code.c **** PORTB=ledbuff[i]; /*需要显示缓冲区数据送到PORTB*/
117 .LM5:
118 0028 F601 movw r30,r12
119 002a 8191 ld r24,Z+
120 002c 6F01 movw r12,r30
121 002e 88BB out 56-0x20,r24
19:D:/irene/irene3/code.c **** PORTD=~(1<<i);
123 .LM6:
124 0030 01E0 ldi r16,lo8(1)
125 0032 10E0 ldi r17,hi8(1)
126 0034 0C2E mov r0,r28
127 0036 02C0 rjmp 2f
128 0038 000F 1: lsl r16
129 003a 111F rol r17
130 003c 0A94 2: dec r0
131 003e E2F7 brpl 1b
132 0040 802F mov r24,r16
133 0042 8095 com r24
134 0044 82BB out 50-0x20,r24
20:D:/irene/irene3/code.c **** delay(10); /*每一位显示保持一定时间*/
136 .LM7:
137 0046 8AE0 ldi r24,lo8(10)
138 0048 90E0 ldi r25,hi8(10)
139 004a 0E94 0000 call delay
21:D:/irene/irene3/code.c **** PORTD|=(1<<i); /*关 闭显示*/
141 .LM8:
142 004e 82B3 in r24,50-0x20
143 0050 802B or r24,r16
144 0052 82BB out 50-0x20,r24
146 .LM9:
147 0054 FA94 dec r15
148 0056 2196 adiw r28,1
149 0058 F7FE sbrs r15,7
150 005a E6CF rjmp .L12
151 /* epilogue: frame size=0 */
152 005c DF91 pop r29
153 005e CF91 pop r28
154 0060 1F91 pop r17
155 0062 0F91 pop r16
156 0064 FF90 pop r15
157 0066 DF90 pop r13
158 0068 CF90 pop r12
159 006a 0895 ret
160 /* epilogue end (size=8) */
161 /* function leddisplay size 49 (34) */
165 .global __vector_14
167 __vector_14:
22:D:/irene/irene3/code.c **** }
23:D:/irene/irene3/code.c **** }
24:D:/irene/irene3/code.c **** INTERRUPT(SIG_ADC) /*AD变换完成中断处理程序*/
25:D:/irene/irene3/code.c **** {
169 .LM10:
170 /* prologue: frame size=0 */
171 006c 7894 sei
172 006e 1F92 push __zero_reg__
173 0070 0F92 push __tmp_reg__
174 0072 0FB6 in __tmp_reg__,__SREG__
175 0074 0F92 push __tmp_reg__
176 0076 1124 clr __zero_reg__
177 0078 2F93 push r18
178 007a 3F93 push r19
179 007c 4F93 push r20
180 007e 5F93 push r21
181 0080 6F93 push r22
182 0082 7F93 push r23
183 0084 8F93 push r24
184 0086 9F93 push r25
185 0088 AF93 push r26
186 008a BF93 push r27
187 008c CF93 push r28
188 008e DF93 push r29
189 0090 EF93 push r30
190 0092 FF93 push r31
191 /* prologue end (size=20) */
26:D:/irene/irene3/code.c **** unsigned int i,temp;
27:D:/irene/irene3/code.c **** unsigned int lo_val, hi_val; /*转换寄存器的低位与高位*/
28:D:/irene/irene3/code.c **** unsigned long val;
29:D:/irene/irene3/code.c **** lo_val=ADCL; /*读出AD变换结果*/
193 .LM11:
194 0094 84B1 in r24,36-0x20
195 0096 282F mov r18,r24
196 0098 3327 clr r19
30:D:/irene/irene3/code.c **** hi_val=ADCH;
198 .LM12:
199 009a 85B1 in r24,37-0x20
200 009c 9927 clr r25
31:D:/irene/irene3/code.c **** val=(((unsigned long)hi_val)<<8)|((unsigned long)lo_val); /*低8位和高8位数据合成16位*/
202 .LM13:
203 009e AA27 clr r26
204 00a0 BB27 clr r27
205 00a2 BA2F mov r27,r26
206 00a4 A92F mov r26,r25
207 00a6 982F mov r25,r24
208 00a8 8827 clr r24
209 00aa 4427 clr r20
210 00ac 5527 clr r21
211 00ae 822B or r24,r18
212 00b0 932B or r25,r19
213 00b2 A42B or r26,r20
214 00b4 B52B or r27,r21
32:D:/irene/irene3/code.c **** temp=(unsigned int)((unsigned long)(val*vref)/1024); /*AD变换结果转换为电压值*/
216 .LM14:
217 00b6 BC01 movw r22,r24
218 00b8 CD01 movw r24,r26
219 00ba 20EF ldi r18,lo8(496)
220 00bc 31E0 ldi r19,hi8(496)
221 00be 40E0 ldi r20,hlo8(496)
222 00c0 50E0 ldi r21,hhi8(496)
223 00c2 0E94 0000 call __mulsi3
224 00c6 DC01 movw r26,r24
225 00c8 CB01 movw r24,r22
226 00ca 2AE0 ldi r18,10
227 00cc B695 1: lsr r27
228 00ce A795 ror r26
229 00d0 9795 ror r25
230 00d2 8795 ror r24
231 00d4 2A95 dec r18
232 00d6 D1F7 brne 1b
233 00d8 9C01 movw r18,r24
234 00da C0E0 ldi r28,lo8(ledbuff)
235 00dc D0E0 ldi r29,hi8(ledbuff)
236 .L19:
33:D:/irene/irene3/code.c **** for(i=0;i<3;i++) /*分位显示*/
34:D:/irene/irene3/code.c **** {
35:D:/irene/irene3/code.c **** ledbuff[i]=ledcode[temp%10];
238 .LM15:
239 00de C901 movw r24,r18
240 00e0 6AE0 ldi r22,lo8(10)
241 00e2 70E0 ldi r23,hi8(10)
242 00e4 0E94 0000 call __udivmodhi4
243 00e8 FC01 movw r30,r24
244 00ea E050 subi r30,lo8(-(ledcode))
245 00ec F040 sbci r31,hi8(-(ledcode))
246 00ee 8081 ld r24,Z
247 00f0 8993 st Y+,r24
36:D:/irene/irene3/code.c **** temp=temp/10;
249 .LM16:
250 00f2 C901 movw r24,r18
251 00f4 6AE0 ldi r22,lo8(10)
252 00f6 70E0 ldi r23,hi8(10)
253 00f8 0E94 0000 call __udivmodhi4
254 00fc 9B01 movw r18,r22
256 .LM17:
257 00fe 80E0 ldi r24,hi8(ledbuff+2)
258 0100 C030 cpi r28,lo8(ledbuff+2)
259 0102 D807 cpc r29,r24
260 0104 61F3 breq .L19
261 0106 58F3 brlo .L19
37:D:/irene/irene3/code.c **** }
38:D:/irene/irene3/code.c **** ledbuff[2]|=0x80; /*显示小数点*/
263 .LM18:
264 0108 8091 0000 lds r24,ledbuff+2
265 010c 8068 ori r24,lo8(-128)
266 010e 8093 0000 sts ledbuff+2,r24
39:D:/irene/irene3/code.c **** ADCSR|=(1<<ADSC); /*启动下一次AD转换 */
268 .LM19:
269 0112 369A sbi 38-0x20,6
40:D:/irene/irene3/code.c **** leddisplay();
271 .LM20:
272 0114 0E94 0000 call leddisplay
273 /* epilogue: frame size=0 */
274 0118 FF91 pop r31
275 011a EF91 pop r30
276 011c DF91 pop r29
277 011e CF91 pop r28
278 0120 BF91 pop r27
279 0122 AF91 pop r26
280 0124 9F91 pop r25
281 0126 8F91 pop r24
282 0128 7F91 pop r23
283 012a 6F91 pop r22
284 012c 5F91 pop r21
285 012e 4F91 pop r20
286 0130 3F91 pop r19
287 0132 2F91 pop r18
288 0134 0F90 pop __tmp_reg__
289 0136 0FBE out __SREG__,__tmp_reg__
290 0138 0F90 pop __tmp_reg__
291 013a 1F90 pop __zero_reg__
292 013c 1895 reti
293 /* epilogue end (size=19) */
294 /* function __vector_14 size 105 (66) */
300 .global main
302 main:
41:D:/irene/irene3/code.c **** }
42:D:/irene/irene3/code.c **** int main( void )
43:D:/irene/irene3/code.c **** {
304 .LM21:
305 /* prologue: frame size=0 */
306 013e C0E0 ldi r28,lo8(__stack - 0)
307 0140 D0E0 ldi r29,hi8(__stack - 0)
308 0142 DEBF out __SP_H__,r29
309 0144 CDBF out __SP_L__,r28
310 /* prologue end (size=4) */
44:D:/irene/irene3/code.c **** DDRD=0x3f;
312 .LM22:
313 0146 8FE3 ldi r24,lo8(63)
314 0148 81BB out 49-0x20,r24
45:D:/irene/irene3/code.c **** PORTD=0xff;
316 .LM23:
317 014a 8FEF ldi r24,lo8(-1)
318 014c 82BB out 50-0x20,r24
46:D:/irene/irene3/code.c **** DDRB=0xff;
320 .LM24:
321 014e 87BB out 55-0x20,r24
47:D:/irene/irene3/code.c **** PORTB=0xff; /*I/O口初始化*/
323 .LM25:
324 0150 88BB out 56-0x20,r24
325 0152 9091 0000 lds r25,ledcode
326 0156 E0E0 ldi r30,lo8(ledbuff)
327 0158 F0E0 ldi r31,hi8(ledbuff)
328 015a 82E0 ldi r24,lo8(2)
329 .L26:
48:D:/irene/irene3/code.c **** uint8_t i;
49:D:/irene/irene3/code.c **** for(i=0;i<3;i++) /*清空缓冲区数据 */
50:D:/irene/irene3/code.c **** ledbuff[i]=ledcode[0];
331 .LM26:
332 015c 9193 st Z+,r25
334 .LM27:
335 015e 8150 subi r24,lo8(-(-1))
336 0160 87FF sbrs r24,7
337 0162 FCCF rjmp .L26
51:D:/irene/irene3/code.c **** ledbuff[3]=0x00;
339 .LM28:
340 0164 1092 0000 sts ledbuff+3,__zero_reg__
52:D:/irene/irene3/code.c **** ledbuff[4]=0x5e; /*显示'd'*/
342 .LM29:
343 0168 8EE5 ldi r24,lo8(94)
344 016a 8093 0000 sts ledbuff+4,r24
53:D:/irene/irene3/code.c **** ledbuff[5]=0x77; /*显示'A' */
346 .LM30:
347 016e 87E7 ldi r24,lo8(119)
348 0170 8093 0000 sts ledbuff+5,r24
54:D:/irene/irene3/code.c **** ADMUX =0x00; //ADC寄存器初始化
350 .LM31:
351 0174 17B8 out 39-0x20,__zero_reg__
55:D:/irene/irene3/code.c **** ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0X06;
353 .LM32:
354 0176 8EED ldi r24,lo8(-34)
355 0178 86B9 out 38-0x20,r24
56:D:/irene/irene3/code.c **** sei();
357 .LM33:
358 /* #APP */
359 017a 7894 sei
360 /* #NOAPP */
361 .L27:
57:D:/irene/irene3/code.c **** for(;;){};
363 .LM34:
364 017c FFCF rjmp .L27
365 /* epilogue: frame size=0 */
366 /* epilogue: noreturn */
367 /* epilogue end (size=0) */
368 /* function main size 33 (29) */
371 .comm ledbuff,6,1
374 .text
376 Letext:
377 /* File "D:/irene/irene3/code.c": code 192 = 0x00c0 ( 134), prologues 31, epilogues 27 */
DEFINED SYMBOLS
*ABS*:00000000 code.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:55 .data:00000000 ledcode
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:71 .text:00000000 delay
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:95 .text:0000000a leddisplay
*COM*:00000006 ledbuff
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:167 .text:0000006c __vector_14
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:302 .text:0000013e main
C:\DOCUME~1\lab\LOCALS~1\Temp/ccADaaaa.s:376 .text:0000017e Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__mulsi3
__udivmodhi4
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -