1 .file "LCD_Driver.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 15 .Ltext0: 16 .section .text.LCD_WriteDigit,"ax",@progbits 17 .global LCD_WriteDigit 19 LCD_WriteDigit: 20 .LFB3: 21 .LSM0: 22 .LVL0: 23 0000 CF93 push r28 24 0002 DF93 push r29 25 /* prologue: function */ 26 /* frame size = 0 */ 27 0004 982F mov r25,r24 28 .LSM1: 29 0006 6630 cpi r22,lo8(6) 30 0008 00F4 brsh .L10 31 .LVL1: 32 .LSM2: 33 000a 8A52 subi r24,lo8(-(-42)) 34 000c 8135 cpi r24,lo8(81) 35 000e 00F0 brlo .L3 36 0010 A0E0 ldi r26,lo8(0) 37 0012 B0E0 ldi r27,hi8(0) 38 .LVL2: 39 0014 00C0 rjmp .L4 40 .LVL3: 41 .L3: 42 .LSM3: 43 0016 9136 cpi r25,lo8(97) 44 0018 00F0 brlo .L5 45 .LSM4: 46 001a 9F7D andi r25,lo8(-33) 47 .L5: 48 .LBB2: 49 .LSM5: 50 001c 9A52 subi r25,lo8(-(-42)) 51 001e E92F mov r30,r25 52 .LVL4: 53 0020 F0E0 ldi r31,lo8(0) 54 .LVL5: 55 0022 EE0F lsl r30 56 0024 FF1F rol r31 57 .LVL6: 58 0026 E050 subi r30,lo8(-(LCD_character_table)) 59 0028 F040 sbci r31,hi8(-(LCD_character_table)) 60 /* #APP */ 61 ; 213 "LCD_Driver.c" 1 62 002a A591 lpm r26, Z+ 63 002c B491 lpm r27, Z 64 65 ; 0 "" 2 66 .LVL7: 67 /* #NOAPP */ 68 .L4: 69 .LBE2: 70 .LSM6: 71 002e 862F mov r24,r22 72 0030 90E0 ldi r25,lo8(0) 73 .LVL8: 74 0032 EC01 movw r28,r24 75 0034 C170 andi r28,lo8(1) 76 0036 D070 andi r29,hi8(1) 77 0038 60FD sbrc r22,0 78 003a 00C0 rjmp .L6 79 003c 90EF ldi r25,lo8(-16) 80 .LVL9: 81 003e 00C0 rjmp .L7 82 .LVL10: 83 .L6: 84 0040 9FE0 ldi r25,lo8(15) 85 .LVL11: 86 .L7: 87 .LSM7: 88 0042 6695 lsr r22 89 .LVL12: 90 0044 70E0 ldi r23,lo8(0) 91 .LVL13: 92 0046 6050 subi r22,lo8(-(LCD_Data)) 93 0048 7040 sbci r23,hi8(-(LCD_Data)) 94 .LVL14: 95 004a 20E0 ldi r18,lo8(0) 96 004c 30E0 ldi r19,hi8(0) 97 .LVL15: 98 .L9: 99 004e FB01 movw r30,r22 100 .LVL16: 101 0050 E20F add r30,r18 102 0052 F31F adc r31,r19 103 .LSM8: 104 0054 4A2F mov r20,r26 105 .LVL17: 106 0056 4F70 andi r20,lo8(15) 107 .LSM9: 108 0058 84E0 ldi r24,4 109 005a B695 1: lsr r27 110 005c A795 ror r26 111 005e 8A95 dec r24 112 0060 01F4 brne 1b 113 .LVL18: 114 .LSM10: 115 0062 2097 sbiw r28,0 116 0064 01F0 breq .L8 117 .LSM11: 118 0066 4295 swap r20 119 0068 407F andi r20,lo8(-16) 120 .L8: 121 .LSM12: 122 006a 8081 ld r24,Z 123 006c 8923 and r24,r25 124 006e 482B or r20,r24 125 0070 4083 st Z,r20 126 0072 2B5F subi r18,lo8(-(5)) 127 0074 3F4F sbci r19,hi8(-(5)) 128 .LSM13: 129 0076 2431 cpi r18,20 130 0078 3105 cpc r19,__zero_reg__ 131 007a 01F4 brne .L9 132 .LVL19: 133 .L10: 134 /* epilogue start */ 135 .LSM14: 136 007c DF91 pop r29 137 007e CF91 pop r28 138 0080 0895 ret 139 .LFE3: 141 .section .text.LCD_AllSegments,"ax",@progbits 142 .global LCD_AllSegments 144 LCD_AllSegments: 145 .LFB4: 146 .LSM15: 147 .LVL20: 148 /* prologue: function */ 149 /* frame size = 0 */ 150 .LSM16: 151 0000 8111 cpse r24,__zero_reg__ 152 0002 8FEF ldi r24,lo8(-1) 153 .LVL21: 154 .L13: 155 0004 20E0 ldi r18,lo8(0) 156 0006 30E0 ldi r19,hi8(0) 157 .L14: 158 0008 F901 movw r30,r18 159 000a E050 subi r30,lo8(-(LCD_Data)) 160 000c F040 sbci r31,hi8(-(LCD_Data)) 161 .LSM17: 162 000e 8083 st Z,r24 163 0010 2F5F subi r18,lo8(-(1)) 164 0012 3F4F sbci r19,hi8(-(1)) 165 .LSM18: 166 0014 2431 cpi r18,20 167 0016 3105 cpc r19,__zero_reg__ 168 0018 01F4 brne .L14 169 /* epilogue start */ 170 .LSM19: 171 001a 0895 ret 172 .LFE4: 174 .section .text.LCD_Init,"ax",@progbits 175 .global LCD_Init 177 LCD_Init: 178 .LFB2: 179 .LSM20: 180 /* prologue: function */ 181 /* frame size = 0 */ 182 .LSM21: 183 0000 80E0 ldi r24,lo8(0) 184 0002 0E94 0000 call LCD_AllSegments 185 .LSM22: 186 0006 A7EE ldi r26,lo8(231) 187 0008 B0E0 ldi r27,hi8(231) 188 000a 8C91 ld r24,X 189 000c 8F60 ori r24,lo8(15) 190 000e 8C93 st X,r24 191 .LSM23: 192 0010 87EB ldi r24,lo8(-73) 193 0012 8093 E500 sts 229,r24 194 .LSM24: 195 0016 87E0 ldi r24,lo8(7) 196 0018 8093 E600 sts 230,r24 197 .LSM25: 198 001c E4EE ldi r30,lo8(228) 199 001e F0E0 ldi r31,hi8(228) 200 0020 80EC ldi r24,lo8(-64) 201 0022 8083 st Z,r24 202 .LSM26: 203 0024 8081 ld r24,Z 204 0026 8860 ori r24,lo8(8) 205 0028 8083 st Z,r24 206 .LSM27: 207 002a 8C91 ld r24,X 208 002c 806E ori r24,lo8(-32) 209 002e 8C93 st X,r24 210 .LSM28: 211 0030 1092 0000 sts gLCD_Update_Required,__zero_reg__ 212 /* epilogue start */ 213 .LSM29: 214 0034 0895 ret 215 .LFE2: 217 .section .text.__vector_22,"ax",@progbits 218 .global __vector_22 220 __vector_22: 221 .LFB5: 222 .LSM30: 223 0000 1F92 push __zero_reg__ 224 0002 0F92 push r0 225 0004 0FB6 in r0,__SREG__ 226 0006 0F92 push r0 227 0008 1124 clr __zero_reg__ 228 000a EF92 push r14 229 000c FF92 push r15 230 000e 0F93 push r16 231 0010 1F93 push r17 232 0012 2F93 push r18 233 0014 3F93 push r19 234 0016 4F93 push r20 235 0018 5F93 push r21 236 001a 6F93 push r22 237 001c 7F93 push r23 238 001e 8F93 push r24 239 0020 9F93 push r25 240 0022 AF93 push r26 241 0024 BF93 push r27 242 0026 CF93 push r28 243 0028 DF93 push r29 244 002a EF93 push r30 245 002c FF93 push r31 246 /* prologue: Signal */ 247 /* frame size = 0 */ 248 .LSM31: 249 002e 0091 0000 lds r16,LCD_timer.1439 250 0032 0150 subi r16,lo8(-(-1)) 251 0034 0093 0000 sts LCD_timer.1439,r16 252 .LSM32: 253 0038 8091 0000 lds r24,gScrollMode 254 003c 8823 tst r24 255 003e 01F0 breq .L20 256 .LSM33: 257 0040 0023 tst r16 258 0042 01F4 brne .L21 259 .LSM34: 260 0044 8091 0000 lds r24,gLCD_Start_Scroll_Timer 261 0048 8823 tst r24 262 004a 01F4 brne .L22 263 .LSM35: 264 004c 81E0 ldi r24,lo8(1) 265 004e 8093 0000 sts gLCD_Update_Required,r24 266 0052 00C0 rjmp .L21 267 .L22: 268 .LSM36: 269 0054 8091 0000 lds r24,gLCD_Start_Scroll_Timer 270 0058 8150 subi r24,lo8(-(-1)) 271 005a 8093 0000 sts gLCD_Start_Scroll_Timer,r24 272 005e 00C0 rjmp .L21 273 .L20: 274 .LSM37: 275 0060 1092 0000 sts gScroll,__zero_reg__ 276 .L21: 277 .LSM38: 278 0064 8091 0000 lds r24,gLCD_Update_Required 279 0068 8130 cpi r24,lo8(1) 280 006a 01F0 breq .+2 281 006c 00C0 rjmp .L23 282 .LSM39: 283 006e E090 0000 lds r14,gFlashTimer 284 0072 FF24 clr r15 285 .LVL22: 286 0074 10E0 ldi r17,lo8(0) 287 .LVL23: 288 0076 C0E0 ldi r28,lo8(0) 289 0078 D0E0 ldi r29,hi8(0) 290 .L29: 291 007a 6C2F mov r22,r28 292 .LVL24: 293 .LSM40: 294 007c 8091 0000 lds r24,gScroll 295 0080 9927 clr r25 296 0082 87FD sbrc r24,7 297 0084 9095 com r25 298 0086 8C0F add r24,r28 299 0088 9D1F adc r25,r29 300 008a 97FD sbrc r25,7 301 008c 00C0 rjmp .L24 302 008e 1123 tst r17 303 0090 01F4 brne .L24 304 .LSM41: 305 0092 E091 0000 lds r30,gScroll 306 0096 FF27 clr r31 307 0098 E7FD sbrc r30,7 308 009a F095 com r31 309 009c EC0F add r30,r28 310 009e FD1F adc r31,r29 311 00a0 E050 subi r30,lo8(-(gTextBuffer)) 312 00a2 F040 sbci r31,hi8(-(gTextBuffer)) 313 00a4 8081 ld r24,Z 314 .LVL25: 315 .LSM42: 316 00a6 F82E mov r15,r24 317 00a8 FF1C rol r15 318 00aa FF24 clr r15 319 00ac FF1C rol r15 320 .LSM43: 321 00ae 8F77 andi r24,lo8(127) 322 .LVL26: 323 .LSM44: 324 00b0 01F4 brne .L26 325 00b2 1C2F mov r17,r28 326 00b4 1F5F subi r17,lo8(-(1)) 327 00b6 00C0 rjmp .L26 328 .LVL27: 329 .L24: 330 00b8 80E2 ldi r24,lo8(32) 331 .LVL28: 332 .L26: 333 .LSM45: 334 00ba FF20 tst r15 335 00bc 01F0 breq .L27 336 00be 94E0 ldi r25,lo8(4) 337 00c0 9E15 cp r25,r14 338 00c2 00F4 brsh .L27 339 .LSM46: 340 00c4 80E2 ldi r24,lo8(32) 341 .LVL29: 342 .L27: 343 .LSM47: 344 00c6 0E94 0000 call LCD_WriteDigit 345 .LVL30: 346 00ca 2196 adiw r28,1 347 .LVL31: 348 .LSM48: 349 00cc C630 cpi r28,6 350 00ce D105 cpc r29,__zero_reg__ 351 00d0 01F4 brne .L29 352 00d2 ACEE ldi r26,lo8(236) 353 00d4 B0E0 ldi r27,hi8(236) 354 .L30: 355 00d6 FD01 movw r30,r26 356 00d8 E050 subi r30,lo8(-(LCD_Data-236)) 357 00da F040 sbci r31,hi8(-(LCD_Data-236)) 358 .LSM49: 359 00dc 8081 ld r24,Z 360 00de 8D93 st X+,r24 361 .LSM50: 362 00e0 81E0 ldi r24,hi8(256) 363 00e2 A030 cpi r26,lo8(256) 364 00e4 B807 cpc r27,r24 365 00e6 01F4 brne .L30 366 .LSM51: 367 00e8 8091 0000 lds r24,gColon 368 00ec 8823 tst r24 369 00ee 01F0 breq .L31 370 .LSM52: 371 00f0 81E0 ldi r24,lo8(1) 372 00f2 8093 F400 sts 244,r24 373 00f6 00C0 rjmp .L32 374 .L31: 375 .LSM53: 376 00f8 1092 F400 sts 244,__zero_reg__ 377 .L32: 378 .LSM54: 379 00fc 1130 cpi r17,lo8(1) 380 00fe 01F4 brne .L33 381 .LSM55: 382 0100 8AEF ldi r24,lo8(-6) 383 0102 00C0 rjmp .L41 384 .L33: 385 .LSM56: 386 0104 8091 0000 lds r24,gScroll 387 0108 8F5F subi r24,lo8(-(1)) 388 .L41: 389 010a 8093 0000 sts gScroll,r24 390 .LSM57: 391 010e 1092 0000 sts gLCD_Update_Required,__zero_reg__ 392 .L23: 393 .LSM58: 394 0112 0023 tst r16 395 0114 01F4 brne .L35 396 .LSM59: 397 0116 83E0 ldi r24,lo8(3) 398 0118 8093 0000 sts LCD_timer.1439,r24 399 .L35: 400 .LSM60: 401 011c 8091 0000 lds r24,gFlashTimer 402 0120 8A30 cpi r24,lo8(10) 403 0122 01F4 brne .L36 404 .LSM61: 405 0124 1092 0000 sts gFlashTimer,__zero_reg__ 406 0128 00C0 rjmp .L38 407 .L36: 408 .LSM62: 409 012a 8091 0000 lds r24,gFlashTimer 410 012e 8F5F subi r24,lo8(-(1)) 411 0130 8093 0000 sts gFlashTimer,r24 412 .L38: 413 /* epilogue start */ 414 .LSM63: 415 0134 FF91 pop r31 416 0136 EF91 pop r30 417 0138 DF91 pop r29 418 013a CF91 pop r28 419 013c BF91 pop r27 420 013e AF91 pop r26 421 0140 9F91 pop r25 422 0142 8F91 pop r24 423 0144 7F91 pop r23 424 0146 6F91 pop r22 425 0148 5F91 pop r21 426 014a 4F91 pop r20 427 014c 3F91 pop r19 428 014e 2F91 pop r18 429 0150 1F91 pop r17 430 .LVL32: 431 0152 0F91 pop r16 432 0154 FF90 pop r15 433 .LVL33: 434 0156 EF90 pop r14 435 0158 0F90 pop r0 436 015a 0FBE out __SREG__,r0 437 015c 0F90 pop r0 438 015e 1F90 pop __zero_reg__ 439 0160 1895 reti 440 .LFE5: 442 .global gLCD_Update_Required 443 .section .bss.gLCD_Update_Required,"aw",@nobits 446 gLCD_Update_Required: 447 0000 00 .skip 1,0 448 .global gLCD_Start_Scroll_Timer 449 .section .bss.gLCD_Start_Scroll_Timer,"aw",@nobits 452 gLCD_Start_Scroll_Timer: 453 0000 00 .skip 1,0 454 .global gFlashTimer 455 .section .bss.gFlashTimer,"aw",@nobits 458 gFlashTimer: 459 0000 00 .skip 1,0 460 .global gColon 461 .section .bss.gColon,"aw",@nobits 464 gColon: 465 0000 00 .skip 1,0 466 .global LCD_character_table 467 .section .progmem.data,"a",@progbits 470 LCD_character_table: 471 0000 510A .word 2641 472 0002 802A .word 10880 473 0004 0000 .word 0 474 0006 000A .word 2560 475 0008 00FF .word -256 476 000a 0000 .word 0 477 000c 5955 .word 21849 478 000e 1801 .word 280 479 0010 111E .word 7697 480 0012 111B .word 6929 481 0014 500B .word 2896 482 0016 411B .word 6977 483 0018 411F .word 8001 484 001a 1101 .word 273 485 001c 511F .word 8017 486 001e 511B .word 6993 487 0020 0000 .word 0 488 0022 0000 .word 0 489 0024 0000 .word 0 490 0026 0000 .word 0 491 0028 0000 .word 0 492 002a 0000 .word 0 493 002c 0000 .word 0 494 002e 510F .word 3921 495 0030 9139 .word 14737 496 0032 4114 .word 5185 497 0034 9131 .word 12689 498 0036 411E .word 7745 499 0038 410E .word 3649 500 003a 411D .word 7489 501 003c 500F .word 3920 502 003e 8020 .word 8320 503 0040 1015 .word 5392 504 0042 4886 .word -31160 505 0044 4014 .word 5184 506 0046 7805 .word 1400 507 0048 7085 .word -31376 508 004a 5115 .word 5457 509 004c 510E .word 3665 510 004e 5195 .word -27311 511 0050 518E .word -29103 512 0052 2190 .word -28639 513 0054 8120 .word 8321 514 0056 5015 .word 5456 515 0058 4844 .word 17480 516 005a 50C5 .word -15024 517 005c 28C0 .word -16344 518 005e 2820 .word 8232 519 0060 0950 .word 20489 520 0062 0000 .word 0 521 0064 0000 .word 0 522 0066 0000 .word 0 523 0068 0000 .word 0 524 006a 0000 .word 0 525 .section .data.LCD_timer.1439,"aw",@progbits 528 LCD_timer.1439: 529 0000 03 .byte 3 530 .comm gTextBuffer,25,1 531 .comm gScrollMode,1,1 532 .comm gScroll,1,1 533 .comm LCD_Data,20,1 582 .Letext0: DEFINED SYMBOLS *ABS*:0000000000000000 LCD_Driver.c /tmp/ccJXwAbc.s:2 *ABS*:000000000000003f __SREG__ /tmp/ccJXwAbc.s:3 *ABS*:000000000000003e __SP_H__ /tmp/ccJXwAbc.s:4 *ABS*:000000000000003d __SP_L__ /tmp/ccJXwAbc.s:5 *ABS*:0000000000000034 __CCP__ /tmp/ccJXwAbc.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccJXwAbc.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccJXwAbc.s:19 .text.LCD_WriteDigit:0000000000000000 LCD_WriteDigit /tmp/ccJXwAbc.s:470 .progmem.data:0000000000000000 LCD_character_table *COM*:0000000000000014 LCD_Data /tmp/ccJXwAbc.s:144 .text.LCD_AllSegments:0000000000000000 LCD_AllSegments /tmp/ccJXwAbc.s:177 .text.LCD_Init:0000000000000000 LCD_Init /tmp/ccJXwAbc.s:446 .bss.gLCD_Update_Required:0000000000000000 gLCD_Update_Required /tmp/ccJXwAbc.s:220 .text.__vector_22:0000000000000000 __vector_22 /tmp/ccJXwAbc.s:528 .data.LCD_timer.1439:0000000000000000 LCD_timer.1439 *COM*:0000000000000001 gScrollMode /tmp/ccJXwAbc.s:452 .bss.gLCD_Start_Scroll_Timer:0000000000000000 gLCD_Start_Scroll_Timer *COM*:0000000000000001 gScroll /tmp/ccJXwAbc.s:458 .bss.gFlashTimer:0000000000000000 gFlashTimer *COM*:0000000000000019 gTextBuffer /tmp/ccJXwAbc.s:464 .bss.gColon:0000000000000000 gColon UNDEFINED SYMBOLS __do_copy_data __do_clear_bss