1 .file "lcd_routines.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: 17 lcd_enable: 18 .LFB6: 19 .LM1: 20 /* prologue: function */ 21 /* frame size = 0 */ 22 /* stack size = 0 */ 23 .L__stack_usage = 0 24 .LM2: 25 0000 DD9A sbi 59-32,5 26 .LVL0: 27 .LBB22: 28 .LBB23: 29 .LM3: 30 0002 8AE6 ldi r24,lo8(106) 31 0004 8A95 1:dec r24 32 0006 01F4 brne 1b 33 0008 00C0 rjmp . 34 .LBE23: 35 .LBE22: 36 .LM4: 37 000a DD98 cbi 59-32,5 38 /* epilogue start */ 39 .LM5: 40 000c 0895 ret 41 .LFE6: 44 lcd_out: 45 .LFB7: 46 .LM6: 47 .LVL1: 48 /* prologue: function */ 49 /* frame size = 0 */ 50 /* stack size = 0 */ 51 .L__stack_usage = 0 52 .LM7: 53 000e 9BB3 in r25,59-32 54 0010 907F andi r25,lo8(-16) 55 0012 9BBB out 59-32,r25 56 .LM8: 57 0014 9BB3 in r25,59-32 58 0016 8295 swap r24 59 .LVL2: 60 0018 8F70 andi r24,lo8(15) 61 001a 892B or r24,r25 62 001c 8BBB out 59-32,r24 63 .LM9: 64 001e 0E94 0000 call lcd_enable 65 /* epilogue start */ 66 .LM10: 67 0022 0895 ret 68 .LFE7: 70 .global lcd_data 72 lcd_data: 73 .LFB9: 74 .LM11: 75 .LVL3: 76 0024 1F93 push r17 77 /* prologue: function */ 78 /* frame size = 0 */ 79 /* stack size = 1 */ 80 .L__stack_usage = 1 81 0026 182F mov r17,r24 82 .LM12: 83 0028 DC9A sbi 59-32,4 84 .LM13: 85 002a 0E94 0000 call lcd_out 86 .LVL4: 87 .LM14: 88 002e 812F mov r24,r17 89 0030 8295 swap r24 90 0032 807F andi r24,lo8(-16) 91 0034 0E94 0000 call lcd_out 92 .LVL5: 93 .LBB24: 94 .LBB25: 95 .LM15: 96 0038 85EF ldi r24,lo8(-11) 97 003a 8A95 1:dec r24 98 003c 01F4 brne 1b 99 003e 0000 nop 100 /* epilogue start */ 101 .LBE25: 102 .LBE24: 103 .LM16: 104 0040 1F91 pop r17 105 .LVL6: 106 0042 0895 ret 107 .LFE9: 109 .global lcd_command 111 lcd_command: 112 .LFB10: 113 .LM17: 114 .LVL7: 115 0044 1F93 push r17 116 /* prologue: function */ 117 /* frame size = 0 */ 118 /* stack size = 1 */ 119 .L__stack_usage = 1 120 0046 182F mov r17,r24 121 .LM18: 122 0048 DC98 cbi 59-32,4 123 .LM19: 124 004a 0E94 0000 call lcd_out 125 .LVL8: 126 .LM20: 127 004e 812F mov r24,r17 128 0050 8295 swap r24 129 0052 807F andi r24,lo8(-16) 130 0054 0E94 0000 call lcd_out 131 .LVL9: 132 .LBB26: 133 .LBB27: 134 .LM21: 135 0058 80EE ldi r24,lo8(-32) 136 005a 8A95 1:dec r24 137 005c 01F4 brne 1b 138 /* epilogue start */ 139 .LBE27: 140 .LBE26: 141 .LM22: 142 005e 1F91 pop r17 143 .LVL10: 144 0060 0895 ret 145 .LFE10: 147 .global lcd_clear 149 lcd_clear: 150 .LFB11: 151 .LM23: 152 /* prologue: function */ 153 /* frame size = 0 */ 154 /* stack size = 0 */ 155 .L__stack_usage = 0 156 .LM24: 157 0062 81E0 ldi r24,lo8(1) 158 0064 0E94 0000 call lcd_command 159 .LVL11: 160 .LBB28: 161 .LBB29: 162 .LM25: 163 0068 8FE3 ldi r24,lo8(7999) 164 006a 9FE1 ldi r25,hi8(7999) 165 006c 0197 1:sbiw r24,1 166 006e 01F4 brne 1b 167 0070 00C0 rjmp . 168 0072 0000 nop 169 /* epilogue start */ 170 .LBE29: 171 .LBE28: 172 .LM26: 173 0074 0895 ret 174 .LFE11: 176 .global lcd_init 178 lcd_init: 179 .LFB8: 180 .LM27: 181 /* prologue: function */ 182 /* frame size = 0 */ 183 /* stack size = 0 */ 184 .L__stack_usage = 0 185 .LVL12: 186 .LM28: 187 0076 8AB3 in r24,58-32 188 0078 8F63 ori r24,lo8(63) 189 007a 8ABB out 58-32,r24 190 .LM29: 191 007c 8BB3 in r24,59-32 192 007e 807C andi r24,lo8(-64) 193 0080 8BBB out 59-32,r24 194 .LVL13: 195 .LBB30: 196 .LBB31: 197 .LM30: 198 0082 8FE5 ldi r24,lo8(-5537) 199 0084 9AEE ldi r25,hi8(-5537) 200 0086 0197 1:sbiw r24,1 201 0088 01F4 brne 1b 202 008a 00C0 rjmp . 203 008c 0000 nop 204 .LBE31: 205 .LBE30: 206 .LM31: 207 008e 80E3 ldi r24,lo8(48) 208 0090 0E94 0000 call lcd_out 209 .LVL14: 210 .LBB32: 211 .LBB33: 212 .LM32: 213 0094 8FE1 ldi r24,lo8(19999) 214 0096 9EE4 ldi r25,hi8(19999) 215 0098 0197 1:sbiw r24,1 216 009a 01F4 brne 1b 217 009c 00C0 rjmp . 218 009e 0000 nop 219 .LBE33: 220 .LBE32: 221 .LM33: 222 00a0 0E94 0000 call lcd_enable 223 .LVL15: 224 .LBB34: 225 .LBB35: 226 .LM34: 227 00a4 8FE9 ldi r24,lo8(3999) 228 00a6 9FE0 ldi r25,hi8(3999) 229 00a8 0197 1:sbiw r24,1 230 00aa 01F4 brne 1b 231 00ac 00C0 rjmp . 232 00ae 0000 nop 233 .LBE35: 234 .LBE34: 235 .LM35: 236 00b0 0E94 0000 call lcd_enable 237 .LVL16: 238 .LBB36: 239 .LBB37: 240 .LM36: 241 00b4 8FE9 ldi r24,lo8(3999) 242 00b6 9FE0 ldi r25,hi8(3999) 243 00b8 0197 1:sbiw r24,1 244 00ba 01F4 brne 1b 245 00bc 00C0 rjmp . 246 00be 0000 nop 247 .LBE37: 248 .LBE36: 249 .LM37: 250 00c0 80E2 ldi r24,lo8(32) 251 00c2 0E94 0000 call lcd_out 252 .LVL17: 253 .LBB38: 254 .LBB39: 255 .LM38: 256 00c6 8FE1 ldi r24,lo8(19999) 257 00c8 9EE4 ldi r25,hi8(19999) 258 00ca 0197 1:sbiw r24,1 259 00cc 01F4 brne 1b 260 00ce 00C0 rjmp . 261 00d0 0000 nop 262 .LBE39: 263 .LBE38: 264 .LM39: 265 00d2 88E2 ldi r24,lo8(40) 266 00d4 0E94 0000 call lcd_command 267 .LM40: 268 00d8 8CE0 ldi r24,lo8(12) 269 00da 0E94 0000 call lcd_command 270 .LM41: 271 00de 86E0 ldi r24,lo8(6) 272 00e0 0E94 0000 call lcd_command 273 .LM42: 274 00e4 0E94 0000 call lcd_clear 275 /* epilogue start */ 276 .LM43: 277 00e8 0895 ret 278 .LFE8: 280 .global lcd_home 282 lcd_home: 283 .LFB12: 284 .LM44: 285 /* prologue: function */ 286 /* frame size = 0 */ 287 /* stack size = 0 */ 288 .L__stack_usage = 0 289 .LM45: 290 00ea 82E0 ldi r24,lo8(2) 291 00ec 0E94 0000 call lcd_command 292 .LVL18: 293 .LBB40: 294 .LBB41: 295 .LM46: 296 00f0 8FE3 ldi r24,lo8(7999) 297 00f2 9FE1 ldi r25,hi8(7999) 298 00f4 0197 1:sbiw r24,1 299 00f6 01F4 brne 1b 300 00f8 00C0 rjmp . 301 00fa 0000 nop 302 /* epilogue start */ 303 .LBE41: 304 .LBE40: 305 .LM47: 306 00fc 0895 ret 307 .LFE12: 309 .global lcd_setcursor 311 lcd_setcursor: 312 .LFB13: 313 .LM48: 314 .LVL19: 315 /* prologue: function */ 316 /* frame size = 0 */ 317 /* stack size = 0 */ 318 .L__stack_usage = 0 319 .LM49: 320 00fe 6230 cpi r22,lo8(2) 321 0100 01F0 breq .L11 322 0102 6330 cpi r22,lo8(3) 323 0104 00F4 brsh .L14 324 0106 6130 cpi r22,lo8(1) 325 0108 01F4 brne .L8 326 010a 00C0 rjmp .L16 327 .L14: 328 010c 6330 cpi r22,lo8(3) 329 010e 01F0 breq .L12 330 0110 6430 cpi r22,lo8(4) 331 0112 01F4 brne .L8 332 0114 00C0 rjmp .L17 333 .L16: 334 .LM50: 335 0116 8058 subi r24,lo8(-(-128)) 336 .LVL20: 337 .LM51: 338 0118 00C0 rjmp .L15 339 .LVL21: 340 .L11: 341 .LM52: 342 011a 8054 subi r24,lo8(-(-64)) 343 .LVL22: 344 .LM53: 345 011c 00C0 rjmp .L15 346 .LVL23: 347 .L12: 348 .LM54: 349 011e 8057 subi r24,lo8(-(-112)) 350 .LVL24: 351 .LM55: 352 0120 00C0 rjmp .L15 353 .LVL25: 354 .L17: 355 .LM56: 356 0122 8053 subi r24,lo8(-(-48)) 357 .LVL26: 358 .L15: 359 .LM57: 360 0124 0E94 0000 call lcd_command 361 .LVL27: 362 .L8: 363 0128 0895 ret 364 .LFE13: 366 .global lcd_string 368 lcd_string: 369 .LFB14: 370 .LM58: 371 .LVL28: 372 012a EF92 push r14 373 012c FF92 push r15 374 012e CF93 push r28 375 0130 DF93 push r29 376 /* prologue: function */ 377 /* frame size = 0 */ 378 /* stack size = 4 */ 379 .L__stack_usage = 4 380 .LM59: 381 0132 E82E mov r14,r24 382 0134 E701 movw r28,r14 383 0136 7E01 movw r14,r28 384 0138 F92E mov r15,r25 385 013a E701 movw r28,r14 386 .LM60: 387 013c 00C0 rjmp .L19 388 .LVL29: 389 .L20: 390 .LM61: 391 013e 0E94 0000 call lcd_data 392 .L19: 393 .LM62: 394 0142 8991 ld r24,Y+ 395 0144 8823 tst r24 396 0146 01F4 brne .L20 397 /* epilogue start */ 398 .LM63: 399 0148 DF91 pop r29 400 014a CF91 pop r28 401 014c FF90 pop r15 402 014e EF90 pop r14 403 0150 0895 ret 404 .LFE14: 406 .global lcd_string_p 408 lcd_string_p: 409 .LFB15: 410 .LM64: 411 .LVL30: 412 0152 CF93 push r28 413 0154 DF93 push r29 414 /* prologue: function */ 415 /* frame size = 0 */ 416 /* stack size = 2 */ 417 .L__stack_usage = 2 418 0156 EC01 movw r28,r24 419 .LM65: 420 0158 00C0 rjmp .L22 421 .LVL31: 422 .L23: 423 .LM66: 424 015a 0E94 0000 call lcd_data 425 .LVL32: 426 .L22: 427 .LM67: 428 015e FE01 movw r30,r28 429 .LVL33: 430 .LBB42: 431 .LM68: 432 0160 2196 adiw r28,1 433 .LVL34: 434 /* #APP */ 435 ; 167 "lcd_routines.c" 1 436 0162 8491 lpm r24, Z 437 438 ; 0 "" 2 439 .LVL35: 440 /* #NOAPP */ 441 .LBE42: 442 0164 8823 tst r24 443 0166 01F4 brne .L23 444 /* epilogue start */ 445 .LM69: 446 0168 DF91 pop r29 447 016a CF91 pop r28 448 .LVL36: 449 016c 0895 ret 450 .LFE15: 452 .global lcd_generatechar 454 lcd_generatechar: 455 .LFB16: 456 .LM70: 457 .LVL37: 458 016e EF92 push r14 459 0170 FF92 push r15 460 0172 1F93 push r17 461 0174 DF93 push r29 462 0176 CF93 push r28 463 0178 00D0 rcall . 464 017a CDB7 in r28,__SP_L__ 465 017c DEB7 in r29,__SP_H__ 466 /* prologue: function */ 467 /* frame size = 2 */ 468 /* stack size = 7 */ 469 .L__stack_usage = 7 470 .LM71: 471 017e 880F lsl r24 472 0180 880F lsl r24 473 0182 880F lsl r24 474 .LVL38: 475 0184 8064 ori r24,lo8(64) 476 0186 6983 std Y+1,r22 477 0188 7A83 std Y+2,r23 478 018a 0E94 0000 call lcd_command 479 .LVL39: 480 018e 6981 ldd r22,Y+1 481 0190 7A81 ldd r23,Y+2 482 0192 462F mov r20,r22 483 0194 572F mov r21,r23 484 0196 7A01 movw r14,r20 485 0198 18E0 ldi r17,lo8(8) 486 .LVL40: 487 .L25: 488 .LBB43: 489 .LM72: 490 019a F701 movw r30,r14 491 019c 8191 ld r24,Z+ 492 019e 7F01 movw r14,r30 493 01a0 0E94 0000 call lcd_data 494 01a4 1150 subi r17,lo8(-(-1)) 495 .LM73: 496 01a6 01F4 brne .L25 497 /* epilogue start */ 498 .LBE43: 499 .LM74: 500 01a8 0F90 pop __tmp_reg__ 501 01aa 0F90 pop __tmp_reg__ 502 01ac CF91 pop r28 503 01ae DF91 pop r29 504 01b0 1F91 pop r17 505 01b2 FF90 pop r15 506 01b4 EF90 pop r14 507 01b6 0895 ret 508 .LFE16: 614 .Letext0: DEFINED SYMBOLS *ABS*:0000000000000000 lcd_routines.c /tmp/cc7NhYw7.s:2 *ABS*:000000000000003f __SREG__ /tmp/cc7NhYw7.s:3 *ABS*:000000000000003e __SP_H__ /tmp/cc7NhYw7.s:4 *ABS*:000000000000003d __SP_L__ /tmp/cc7NhYw7.s:5 *ABS*:0000000000000034 __CCP__ /tmp/cc7NhYw7.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/cc7NhYw7.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/cc7NhYw7.s:17 .text:0000000000000000 lcd_enable /tmp/cc7NhYw7.s:44 .text:000000000000000e lcd_out /tmp/cc7NhYw7.s:72 .text:0000000000000024 lcd_data /tmp/cc7NhYw7.s:111 .text:0000000000000044 lcd_command /tmp/cc7NhYw7.s:149 .text:0000000000000062 lcd_clear /tmp/cc7NhYw7.s:178 .text:0000000000000076 lcd_init /tmp/cc7NhYw7.s:282 .text:00000000000000ea lcd_home /tmp/cc7NhYw7.s:311 .text:00000000000000fe lcd_setcursor /tmp/cc7NhYw7.s:368 .text:000000000000012a lcd_string /tmp/cc7NhYw7.s:408 .text:0000000000000152 lcd_string_p /tmp/cc7NhYw7.s:454 .text:000000000000016e lcd_generatechar NO UNDEFINED SYMBOLS