📄 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:
72 .global __vector_9
74 __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 **** {
76 .LM1:
77 /* prologue: frame size=0 */
78 0000 1F92 push __zero_reg__
79 0002 0F92 push __tmp_reg__
80 0004 0FB6 in __tmp_reg__,__SREG__
81 0006 0F92 push __tmp_reg__
82 0008 1124 clr __zero_reg__
83 000a 2F93 push r18
84 000c 3F93 push r19
85 000e 4F93 push r20
86 0010 5F93 push r21
87 0012 6F93 push r22
88 0014 8F93 push r24
89 0016 9F93 push r25
90 0018 EF93 push r30
91 001a FF93 push r31
92 /* prologue end (size=14) */
13:display.c **** uchar i=0;
94 .LM2:
95 001c 50E0 ldi r21,lo8(0)
14:display.c **** uchar data_seg=display_buffer[display_count];
97 .LM3:
98 001e 6091 0000 lds r22,display_count
99 0022 262F mov r18,r22
100 0024 3327 clr r19
101 0026 F901 movw r30,r18
102 0028 E050 subi r30,lo8(-(display_buffer))
103 002a F040 sbci r31,hi8(-(display_buffer))
104 002c E081 ld r30,Z
15:display.c **** uchar data_bit=~(1<<display_count);
106 .LM4:
107 002e 81E0 ldi r24,lo8(1)
108 0030 90E0 ldi r25,hi8(1)
109 0032 02C0 rjmp 2f
110 0034 880F 1: lsl r24
111 0036 991F rol r25
112 0038 2A95 2: dec r18
113 003a E2F7 brpl 1b
114 003c 482F mov r20,r24
115 003e 4095 com r20
16:display.c **** if((1<<display_count)==flash_control) data_bit|=flash_var;
117 .LM5:
118 0040 2091 0000 lds r18,flash_control
119 0044 3327 clr r19
120 0046 8217 cp r24,r18
121 0048 9307 cpc r25,r19
122 004a 19F4 brne .L2
124 .LM6:
125 004c 8091 0000 lds r24,flash_var
126 0050 482B or r20,r24
127 .L2:
17:display.c **** display_count++;
129 .LM7:
130 0052 862F mov r24,r22
131 0054 8F5F subi r24,lo8(-(1))
132 0056 8093 0000 sts display_count,r24
18:display.c **** if(8==display_count) display_count=0;
134 .LM8:
135 005a 8830 cpi r24,lo8(8)
136 005c 11F4 brne .L9
137 005e 5093 0000 sts display_count,r21
138 .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();
140 .LM9:
141 0062 47FF sbrs r20,7
142 0064 02C0 rjmp .L7
143 0066 C29A sbi 56-0x20,2
144 0068 01C0 rjmp .L8
145 .L7:
23:display.c **** else clr_hc595_ser();
147 .LM10:
148 006a C298 cbi 56-0x20,2
149 .L8:
24:display.c **** clr_hc595_srclk();
151 .LM11:
152 006c C198 cbi 56-0x20,1
25:display.c **** set_hc595_srclk();
154 .LM12:
155 006e C19A sbi 56-0x20,1
26:display.c **** data_bit<<=1;
157 .LM13:
158 0070 440F lsl r20
160 .LM14:
161 0072 5F5F subi r21,lo8(-(1))
162 0074 5830 cpi r21,lo8(8)
163 0076 A8F3 brlo .L9
164 0078 57E0 ldi r21,lo8(7)
165 .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();
167 .LM15:
168 007a E7FF sbrs r30,7
169 007c 02C0 rjmp .L13
170 007e C29A sbi 56-0x20,2
171 0080 01C0 rjmp .L14
172 .L13:
32:display.c **** else clr_hc595_ser();
174 .LM16:
175 0082 C298 cbi 56-0x20,2
176 .L14:
33:display.c **** clr_hc595_srclk();
178 .LM17:
179 0084 C198 cbi 56-0x20,1
34:display.c **** set_hc595_srclk();
181 .LM18:
182 0086 C19A sbi 56-0x20,1
35:display.c **** data_seg<<=1;
184 .LM19:
185 0088 EE0F lsl r30
187 .LM20:
188 008a 5150 subi r21,lo8(-(-1))
189 008c 57FF sbrs r21,7
190 008e F5CF rjmp .L15
36:display.c **** }
37:display.c **** clr_hc595_srclk();
192 .LM21:
193 0090 C198 cbi 56-0x20,1
38:display.c **** clr_hc595_rclk();
195 .LM22:
196 0092 C098 cbi 56-0x20,0
39:display.c **** set_hc595_rclk();
198 .LM23:
199 0094 C09A sbi 56-0x20,0
40:display.c **** clr_hc595_rclk();
201 .LM24:
202 0096 C098 cbi 56-0x20,0
41:display.c **** TCNT0=t0_tcnt;//定时10ms
204 .LM25:
205 0098 87EF ldi r24,lo8(-9)
206 009a 82BF out 82-0x20,r24
207 /* epilogue: frame size=0 */
208 009c FF91 pop r31
209 009e EF91 pop r30
210 00a0 9F91 pop r25
211 00a2 8F91 pop r24
212 00a4 6F91 pop r22
213 00a6 5F91 pop r21
214 00a8 4F91 pop r20
215 00aa 3F91 pop r19
216 00ac 2F91 pop r18
217 00ae 0F90 pop __tmp_reg__
218 00b0 0FBE out __SREG__,__tmp_reg__
219 00b2 0F90 pop __tmp_reg__
220 00b4 1F90 pop __zero_reg__
221 00b6 1895 reti
222 /* epilogue end (size=14) */
223 /* function __vector_9 size 93 (65) */
230 .Lscope0:
231 .text
233 Letext:
234 /* File "display.c": code 93 = 0x005d ( 65), prologues 14, epilogues 14 */
DEFINED SYMBOLS
*ABS*:00000000 display.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccghaaaa.s:74 .text:00000000 __vector_9
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccghaaaa.s:233 .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 + -