main.lst
来自「旋转16个LED灯控制程序」· LST 代码 · 共 1,175 行 · 第 1/3 页
LST
1,175 行
1 .file "main.c"
2 .arch attiny2313
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
17 .Ltext0:
18 .global pixelNum
19 .data
22 pixelNum:
23 0000 0F .byte 15
24 .global charNum
27 charNum:
28 0001 1F .byte 31
29 .global botChar
30 .global botChar
31 .section .bss
34 botChar:
35 0000 0000 .skip 2,0
36 .global topChar
37 .global topChar
40 topChar:
41 0002 0000 .skip 2,0
42 .global line_shift
43 .data
46 line_shift:
47 0002 0F .byte 15
48 .global cur_line
51 cur_line:
52 0003 05 .byte 5
53 .global line_timer
56 line_timer:
57 0004 10 .byte 16
58 .global dynamicTime
61 dynamicTime:
62 0005 3533 7C38 .ascii "53|85|21"
62 357C 3231
63 .global div732
64 .section .progmem.data,"a",@progbits
67 div732:
68 0000 00 .string ""
69 0001 00 .string ""
70 0002 0100 .string "\001"
71 0004 00 .string ""
72 0005 0300 .string "\003"
73 0007 00 .string ""
74 0008 0500 .string "\005"
75 000a 0101 00 .string "\001\001"
76 000d 0202 00 .string "\002\002"
77 0010 0403 00 .string "\004\003"
78 0013 0806 0107 .string "\b\006\001\007\003\003\004\005"
78 0303 0405
78 00
79 .global dynamicRPM
80 .data
83 dynamicRPM:
84 000d 3030 30 .ascii "000"
85 .global dynamicREV
88 dynamicREV:
89 0010 3030 3030 .ascii "0000"
90 .global dynamicType
91 .global dynamicType
92 .section .bss
95 dynamicType:
96 0004 00 .skip 1,0
97 .global dynamicPtr
98 .global dynamicPtr
101 dynamicPtr:
102 0005 0000 .skip 2,0
103 .global dInfo
104 .section .progmem.data
107 dInfo:
108 001c 00 .byte 0
109 001d 28 .byte 40
110 001e 00 .byte 0
111 001f 3B .byte 59
112 0020 00 .byte 0
113 0021 19 .byte 25
114 0022 00 .byte 0
115 0023 2A .byte 42
116 .global lines
119 lines:
120 0024 2020 2020 .ascii " RPM| 0000 "
120 2020 5250
120 4D7C 2020
120 2020 2020
120 2020 2020
121 0044 2020 2020 .string " Clock: 00:00:00 Rotations| 0000 "
121 2043 6C6F
121 636B 3A20
121 2020 2020
121 2020 2020
122 .global lineOffsets
125 lineOffsets:
126 0085 00 .byte 0
127 0086 10 .byte 16
128 0087 20 .byte 32
129 0088 30 .byte 48
130 0089 40 .byte 64
131 008a 50 .byte 80
132 008b 00 .byte 0
133 008c 10 .byte 16
134 .text
135 .global clock_scroll
137 clock_scroll:
138 .LFB2:
139 .LM1:
140 /* prologue: frame size=0 */
141 0000 CF93 push r28
142 /* prologue end (size=1) */
143 0002 C82F mov r28,r24
144 .LM2:
145 0004 8091 0000 lds r24,fleds
146 0008 00D0 rcall spi_transfer
147 .LM3:
148 000a 8091 0000 lds r24,fleds+1
149 000e 00D0 rcall spi_transfer
150 .LM4:
151 0010 8091 0000 lds r24,fleds+2
152 0014 00D0 rcall spi_transfer
153 .LM5:
154 0016 8091 0000 lds r24,fleds+3
155 001a 00D0 rcall spi_transfer
156 .LM6:
157 001c CC23 tst r28
158 001e 79F0 breq .L2
159 .LM7:
160 0020 C830 cpi r28,lo8(8)
161 0022 20F4 brsh .L3
162 .LM8:
163 0024 6C2F mov r22,r28
164 0026 8091 0000 lds r24,fleds+4
165 002a 08C0 rjmp .L6
166 .L3:
167 .LM9:
168 002c 8091 0000 lds r24,fleds+4
169 0030 00D0 rcall spi_transfer
170 .LM10:
171 0032 C850 subi r28,lo8(-(-8))
172 .LM11:
173 0034 21F0 breq .L2
174 .LM12:
175 0036 6C2F mov r22,r28
176 0038 8091 0000 lds r24,fleds+5
177 .L6:
178 003c 00D0 rcall spi_transfer_n
179 .L2:
180 .LM13:
181 003e 949A sbi 50-0x20,4
182 .LM14:
183 /* #APP */
184 0040 0000 nop
185 0042 0000 nop
186 0044 0000 nop
187 0046 0000 nop
188 .LM15:
189 /* #NOAPP */
190 0048 9498 cbi 50-0x20,4
191 /* epilogue: frame size=0 */
192 004a CF91 pop r28
193 004c 0895 ret
194 /* epilogue end (size=2) */
195 /* function clock_scroll size 44 (41) */
196 .LFE2:
198 .global __vector_6
200 __vector_6:
201 .LFB3:
202 .LM16:
203 /* prologue: frame size=0 */
204 004e 1F92 push __zero_reg__
205 0050 0F92 push __tmp_reg__
206 0052 0FB6 in __tmp_reg__,__SREG__
207 0054 0F92 push __tmp_reg__
208 0056 1124 clr __zero_reg__
209 0058 2F93 push r18
210 005a 8F93 push r24
211 005c 9F93 push r25
212 /* prologue end (size=8) */
213 .LM17:
214 005e 8091 0000 lds r24,hall_debounce
215 0062 8F5F subi r24,lo8(-(1))
216 0064 8093 0000 sts hall_debounce,r24
217 .LM18:
218 0068 8091 0000 lds r24,sensor_timer+1
219 006c 8F3F cpi r24,lo8(-1)
220 006e 49F0 breq .L8
221 .LM19:
222 0070 8091 0000 lds r24,sensor_timer
223 0074 9091 0000 lds r25,(sensor_timer)+1
224 0078 0196 adiw r24,1
225 007a 9093 0000 sts (sensor_timer)+1,r25
226 007e 8093 0000 sts sensor_timer,r24
227 .L8:
228 .LM20:
229 0082 8091 0000 lds r24,line_timer
230 0086 8F3F cpi r24,lo8(-1)
231 0088 29F0 breq .L9
232 .LM21:
233 008a 8091 0000 lds r24,line_timer
234 008e 8F5F subi r24,lo8(-(1))
235 0090 8093 0000 sts line_timer,r24
236 .L9:
237 .LM22:
238 0094 8091 0000 lds r24,dynamicTimeCounter
239 0098 9091 0000 lds r25,(dynamicTimeCounter)+1
240 009c 845F subi r24,lo8(-(268))
241 009e 9E4F sbci r25,hi8(-(268))
242 00a0 9093 0000 sts (dynamicTimeCounter)+1,r25
243 00a4 8093 0000 sts dynamicTimeCounter,r24
244 .LM23:
245 00a8 8091 0000 lds r24,dynamicTimeCounter+1
246 00ac 87FF sbrs r24,7
247 00ae 4FC0 rjmp .L7
248 .LM24:
249 00b0 8091 0000 lds r24,dynamicTimeCounter+1
250 00b4 8F77 andi r24,lo8(127)
251 00b6 8093 0000 sts dynamicTimeCounter+1,r24
252 .LM25:
253 00ba 8091 0000 lds r24,dynamicTime
254 00be 8F5F subi r24,lo8(-(1))
255 00c0 8093 0000 sts dynamicTime,r24
256 .LM26:
257 00c4 8091 0000 lds r24,dynamicTime
258 00c8 8A33 cpi r24,lo8(58)
259 00ca 09F0 breq .+2
260 00cc 40C0 rjmp .L7
261 .LM27:
262 00ce 20E3 ldi r18,lo8(48)
263 00d0 2093 0000 sts dynamicTime,r18
264 .LM28:
265 00d4 8091 0000 lds r24,dynamicTime+1
266 00d8 8F5F subi r24,lo8(-(1))
267 00da 8093 0000 sts dynamicTime+1,r24
268 .LM29:
269 00de 8091 0000 lds r24,dynamicTime+1
270 00e2 8633 cpi r24,lo8(54)
271 00e4 A1F5 brne .L7
272 .LM30:
273 00e6 2093 0000 sts dynamicTime+1,r18
274 .LM31:
275 00ea 8091 0000 lds r24,dynamicTime+3
276 00ee 8F5F subi r24,lo8(-(1))
277 00f0 8093 0000 sts dynamicTime+3,r24
278 .LM32:
279 00f4 8091 0000 lds r24,dynamicTime+3
280 00f8 8A33 cpi r24,lo8(58)
281 00fa 49F5 brne .L7
282 .LM33:
283 00fc 2093 0000 sts dynamicTime+3,r18
284 .LM34:
285 0100 8091 0000 lds r24,dynamicTime+4
286 0104 8F5F subi r24,lo8(-(1))
287 0106 8093 0000 sts dynamicTime+4,r24
288 .LM35:
289 010a 8091 0000 lds r24,dynamicTime+4
290 010e 8633 cpi r24,lo8(54)
291 0110 F1F4 brne .L7
292 .LM36:
293 0112 2093 0000 sts dynamicTime+4,r18
294 .LM37:
295 0116 8091 0000 lds r24,dynamicTime+6
296 011a 8F5F subi r24,lo8(-(1))
297 011c 8093 0000 sts dynamicTime+6,r24
298 .LM38:
299 0120 8091 0000 lds r24,dynamicTime+6
300 0124 8A33 cpi r24,lo8(58)
301 0126 39F4 brne .L15
302 .LM39:
303 0128 2093 0000 sts dynamicTime+6,r18
304 .LM40:
305 012c 8091 0000 lds r24,dynamicTime+7
306 0130 8F5F subi r24,lo8(-(1))
307 0132 8093 0000 sts dynamicTime+7,r24
308 .L15:
309 .LM41:
310 0136 9091 0000 lds r25,dynamicTime+7
311 013a 9133 cpi r25,lo8(49)
312 013c 41F4 brne .L7
313 013e 8091 0000 lds r24,dynamicTime+6
314 0142 8333 cpi r24,lo8(51)
315 0144 21F4 brne .L7
316 .LM42:
317 0146 2093 0000 sts dynamicTime+7,r18
318 .LM43:
319 014a 9093 0000 sts dynamicTime+6,r25
320 .L7:
321 /* epilogue: frame size=0 */
322 014e 9F91 pop r25
323 0150 8F91 pop r24
324 0152 2F91 pop r18
325 0154 0F90 pop __tmp_reg__
326 0156 0FBE out __SREG__,__tmp_reg__
327 0158 0F90 pop __tmp_reg__
328 015a 1F90 pop __zero_reg__
329 015c 1895 reti
330 /* epilogue end (size=8) */
331 /* function __vector_6 size 136 (120) */
332 .LFE3:
334 .global set_all
336 set_all:
337 .LFB8:
338 .LM44:
339 /* prologue: frame size=0 */
340 /* prologue end (size=0) */
341 .LM45:
342 015e 8093 0000 sts fleds+3,r24
343 0162 8093 0000 sts fleds+2,r24
344 0166 8093 0000 sts fleds+1,r24
345 016a 8093 0000 sts fleds,r24
346 .LM46:
347 016e 80E0 ldi r24,lo8(0)
348 0170 47DF rcall clock_scroll
349 /* epilogue: frame size=0 */
350 0172 0895 ret
351 /* epilogue end (size=1) */
352 /* function set_all size 11 (10) */
353 .LFE8:
355 .global __vector_4
357 __vector_4:
358 .LFB4:
359 .LM47:
360 /* prologue: frame size=0 */
361 0174 1F92 push __zero_reg__
362 0176 0F92 push __tmp_reg__
363 0178 0FB6 in __tmp_reg__,__SREG__
364 017a 0F92 push __tmp_reg__
365 017c 1124 clr __zero_reg__
366 017e 2F93 push r18
367 0180 3F93 push r19
368 0182 4F93 push r20
369 0184 5F93 push r21
370 0186 6F93 push r22
371 0188 7F93 push r23
372 018a 8F93 push r24
373 018c 9F93 push r25
374 018e AF93 push r26
375 0190 BF93 push r27
376 0192 EF93 push r30
377 0194 FF93 push r31
378 /* prologue end (size=17) */
379 .LM48:
380 0196 8091 0000 lds r24,sensor_timer+1
381 019a 8230 cpi r24,lo8(2)
382 019c 08F0 brlo .+2
383 019e 5CC0 rjmp .L18
384 .LM49:
385 01a0 8091 0000 lds r24,pixelNum
386 01a4 8F5F subi r24,lo8(-(1))
387 01a6 8093 0000 sts pixelNum,r24
388 .LM50:
389 01aa 8091 0000 lds r24,pixelNum
390 01ae 8031 cpi r24,lo8(16)
391 01b0 69F5 brne .L20
392 .LM51:
393 01b2 8091 0000 lds r24,charNum
394 01b6 8F30 cpi r24,lo8(15)
395 01b8 31F4 brne .L21
396 .LM52:
397 01ba 8EB5 in r24,78-0x20
398 01bc 887F andi r24,lo8(-8)
399 01be 8EBD out 78-0x20,r24
400 .LM53:
401 01c0 8FEF ldi r24,lo8(-1)
402 01c2 CDDF rcall set_all
403 .LM54:
404 01c4 49C0 rjmp .L18
405 .L21:
406 .LM55:
407 01c6 1092 0000 sts pixelNum,__zero_reg__
408 .LM56:
409 01ca 8091 0000 lds r24,charNum
410 01ce 8F5F subi r24,lo8(-(1))
411 01d0 8F70 andi r24,lo8(15)
412 01d2 8093 0000 sts charNum,r24
413 .LM57:
414 01d6 8091 0000 lds r24,charNum
415 01da E82F mov r30,r24
416 01dc FF27 clr r31
417 01de E050 subi r30,lo8(-(topLine))
418 01e0 F040 sbci r31,hi8(-(topLine))
419 01e2 8081 ld r24,Z
420 01e4 9927 clr r25
421 01e6 8097 sbiw r24,32
422 01e8 880F lsl r24
423 01ea 991F rol r25
424 01ec 9093 0000 sts (topChar)+1,r25
425 01f0 8093 0000 sts topChar,r24
426 .LM58:
427 01f4 8091 0000 lds r24,charNum
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?