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 + -
显示快捷键?