📄 display.lst
字号:
1 .file "display.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
11 .text
12 .Ltext0:
92 .global __vector_9
94 __vector_9:
1:display.c **** #define display_c
2:display.c **** #include "main.h"
3:display.c **** /*
4:display.c **** 共阴4位一体数码管
5:display.c **** 上 1 2 3 4 5 6
6:display.c **** s1 a f s2 s3 b
7:display.c **** 下 1 2 3 4 5 6
8:display.c **** e d dp c g s4
9:display.c **** msb=p,lsb=a.顺序为pgfedcba
10:display.c **** */
11:display.c **** SIGNAL (SIG_OVERFLOW0)
12:display.c **** {
96 .LM1:
97 /* prologue: frame size=0 */
98 0000 1F92 push __zero_reg__
99 0002 0F92 push __tmp_reg__
100 0004 0FB6 in __tmp_reg__,__SREG__
101 0006 0F92 push __tmp_reg__
102 0008 1124 clr __zero_reg__
103 000a 2F93 push r18
104 000c 3F93 push r19
105 000e 4F93 push r20
106 0010 5F93 push r21
107 0012 6F93 push r22
108 0014 8F93 push r24
109 0016 9F93 push r25
110 0018 EF93 push r30
111 001a FF93 push r31
112 /* prologue end (size=14) */
13:display.c **** uchar i=0;
114 .LM2:
115 001c 50E0 ldi r21,lo8(0)
14:display.c **** uchar data_seg=display_buffer[display_count];
117 .LM3:
118 001e 6091 0000 lds r22,display_count
119 0022 262F mov r18,r22
120 0024 3327 clr r19
121 0026 F901 movw r30,r18
122 0028 E050 subi r30,lo8(-(display_buffer))
123 002a F040 sbci r31,hi8(-(display_buffer))
124 002c E081 ld r30,Z
15:display.c **** uchar data_bit=~(1<<display_count);
126 .LM4:
127 002e 81E0 ldi r24,lo8(1)
128 0030 90E0 ldi r25,hi8(1)
129 0032 02C0 rjmp 2f
130 0034 880F 1: lsl r24
131 0036 991F rol r25
132 0038 2A95 2: dec r18
133 003a E2F7 brpl 1b
134 003c 482F mov r20,r24
135 003e 4095 com r20
16:display.c **** if((1<<display_count)==flash_control) data_bit|=flash_var;
137 .LM5:
138 0040 2091 0000 lds r18,flash_control
139 0044 3327 clr r19
140 0046 8217 cp r24,r18
141 0048 9307 cpc r25,r19
142 004a 19F4 brne .L2
144 .LM6:
145 004c 8091 0000 lds r24,flash_var
146 0050 482B or r20,r24
147 .L2:
17:display.c **** display_count++;
149 .LM7:
150 0052 862F mov r24,r22
151 0054 8F5F subi r24,lo8(-(1))
152 0056 8093 0000 sts display_count,r24
18:display.c **** if(8==display_count) display_count=0;
154 .LM8:
155 005a 8830 cpi r24,lo8(8)
156 005c 11F4 brne .L9
157 005e 5093 0000 sts display_count,r21
158 .L9:
19:display.c **** //送位选
20:display.c **** for(i=0;i<8;i++)
21:display.c **** {
22:display.c **** if(data_bit&0x80) set_hc595_ser();
160 .LM9:
161 0062 47FF sbrs r20,7
162 0064 02C0 rjmp .L7
163 0066 C29A sbi 56-0x20,2
164 0068 01C0 rjmp .L8
165 .L7:
23:display.c **** else clr_hc595_ser();
167 .LM10:
168 006a C298 cbi 56-0x20,2
169 .L8:
24:display.c **** clr_hc595_srclk();
171 .LM11:
172 006c C198 cbi 56-0x20,1
25:display.c **** set_hc595_srclk();
174 .LM12:
175 006e C19A sbi 56-0x20,1
26:display.c **** data_bit<<=1;
177 .LM13:
178 0070 440F lsl r20
180 .LM14:
181 0072 5F5F subi r21,lo8(-(1))
182 0074 5830 cpi r21,lo8(8)
183 0076 A8F3 brlo .L9
184 0078 57E0 ldi r21,lo8(7)
185 .L15:
27:display.c **** }
28:display.c **** //送段码
29:display.c **** for(i=0;i<8;i++)
30:display.c **** {
31:display.c **** if(data_seg&0x80) set_hc595_ser();
187 .LM15:
188 007a E7FF sbrs r30,7
189 007c 02C0 rjmp .L13
190 007e C29A sbi 56-0x20,2
191 0080 01C0 rjmp .L14
192 .L13:
32:display.c **** else clr_hc595_ser();
194 .LM16:
195 0082 C298 cbi 56-0x20,2
196 .L14:
33:display.c **** clr_hc595_srclk();
198 .LM17:
199 0084 C198 cbi 56-0x20,1
34:display.c **** set_hc595_srclk();
201 .LM18:
202 0086 C19A sbi 56-0x20,1
35:display.c **** data_seg<<=1;
204 .LM19:
205 0088 EE0F lsl r30
207 .LM20:
208 008a 5150 subi r21,lo8(-(-1))
209 008c 57FF sbrs r21,7
210 008e F5CF rjmp .L15
36:display.c **** }
37:display.c **** clr_hc595_srclk();
212 .LM21:
213 0090 C198 cbi 56-0x20,1
38:display.c **** clr_hc595_rclk();
215 .LM22:
216 0092 C098 cbi 56-0x20,0
39:display.c **** set_hc595_rclk();
218 .LM23:
219 0094 C09A sbi 56-0x20,0
40:display.c **** clr_hc595_rclk();
221 .LM24:
222 0096 C098 cbi 56-0x20,0
41:display.c **** TCNT0=t0_tcnt;//定时10ms
224 .LM25:
225 0098 87EF ldi r24,lo8(-9)
226 009a 82BF out 82-0x20,r24
227 /* epilogue: frame size=0 */
228 009c FF91 pop r31
229 009e EF91 pop r30
230 00a0 9F91 pop r25
231 00a2 8F91 pop r24
232 00a4 6F91 pop r22
233 00a6 5F91 pop r21
234 00a8 4F91 pop r20
235 00aa 3F91 pop r19
236 00ac 2F91 pop r18
237 00ae 0F90 pop __tmp_reg__
238 00b0 0FBE out __SREG__,__tmp_reg__
239 00b2 0F90 pop __tmp_reg__
240 00b4 1F90 pop __zero_reg__
241 00b6 1895 reti
242 /* epilogue end (size=14) */
243 /* function __vector_9 size 93 (65) */
250 .Lscope0:
251 .text
253 Letext:
254 /* File "display.c": code 93 = 0x005d ( 65), prologues 14, epilogues 14 */
DEFINED SYMBOLS
*ABS*:00000000 display.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:3 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:94 .text:00000000 __vector_9
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmubaaa.s:253 .text:000000b8 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
display_count
display_buffer
flash_control
flash_var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -