From fd37a5a9855803f08c9a6386fb38847e6422dffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Ple=C3=9F?= Date: Wed, 3 Oct 2012 00:23:08 +0200 Subject: [PATCH] led und off/on taster eingebaut --- lcd_routines.lst | 502 ++++++++++++++++++++++++++++++++++++++++++++++ lcd_routines.o | Bin 0 -> 9856 bytes main.c | 62 +++--- main.eep | 1 + main.elf | Bin 0 -> 15888 bytes main.hex | 96 +++++++++ main.lst | 363 +++++++++++++++++++++++++++++++++ main.map | 511 +++++++++++++++++++++++++++++++++++++++++++++++ main.o | Bin 0 -> 6520 bytes uart.lst | 405 +++++++++++++++++++++++++++++++++++++ uart.o | Bin 0 -> 8260 bytes 11 files changed, 1913 insertions(+), 27 deletions(-) create mode 100644 lcd_routines.lst create mode 100644 lcd_routines.o create mode 100644 main.eep create mode 100755 main.elf create mode 100644 main.hex create mode 100644 main.lst create mode 100644 main.map create mode 100644 main.o create mode 100644 uart.lst create mode 100644 uart.o diff --git a/lcd_routines.lst b/lcd_routines.lst new file mode 100644 index 0000000..1b90623 --- /dev/null +++ b/lcd_routines.lst @@ -0,0 +1,502 @@ + 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 diff --git a/lcd_routines.o b/lcd_routines.o new file mode 100644 index 0000000000000000000000000000000000000000..84c7d24a633190ed6f11d1ed7ec5eac06a023350 GIT binary patch literal 9856 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: key press detect - if ((key_state & REPEAT_MASK) == 0) // check repeat function - rpt = REPEAT_START; // start delay - if (--rpt == 0) { - rpt = REPEAT_NEXT; // repeat delay - key_rpt |= key_state & REPEAT_MASK; - } } -uint8_t get_key_press(uint8_t key_mask) { +uint16_t get_key_press(uint16_t key_mask) { cli(); // read and clear atomic ! key_mask &= key_press; // read key(s) diff --git a/main.eep b/main.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/main.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/main.elf b/main.elf new file mode 100755 index 0000000000000000000000000000000000000000..f5bf893fc68ad013e4d233c12bb95b10e6882e85 GIT binary patch literal 15888 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 JrPiwW{{a}iZ1eyC literal 0 HcmV?d00001 diff --git a/main.hex b/main.hex new file mode 100644 index 0000000..cdce73d --- /dev/null +++ b/main.hex @@ -0,0 +1,96 @@ +:100000000C942A000C943C000C943C000C943C0092 +:100010000C943C000C943C000C943C000C943C0070 +:100020000C943C000C9450000C943C000C940D0279 +:100030000C9436020C943C000C943C000C943C0054 +:100040000C943C000C943C000C943C000C943C0040 +:100050000C943C0011241FBECFE5D4E0DEBFCDBF21 +:1000600010E0A0E6B0E001C01D92AD3AB107E1F7A3 +:100070000E94C2000C94F6020C94000081B38370BD +:1000800081BB82B38C6F82BBB898C09AD79ADF9835 +:1000900085E083BF84E682BF89B7816089BF089508 +:1000A0001F920F920FB60F9211242F933F934F93ED +:1000B0005F938F939F9384E682BF4091AB005091F2 +:1000C000AC0080B396B3392F20E090E0822B932BC5 +:1000D0008095909584279527209162003091630048 +:1000E00028233923209530953093630020936200B4 +:1000F00040916000509161004823592342275327C3 +:1001000050936100409360008223932384239523BE +:100110002091AB003091AC00282739273093AC00F8 +:100120002093AB002091A9003091AA004091AB0030 +:100130005091AC0048235923422B532B5093AA00D3 +:100140004093A9009F918F915F914F913F912F9183 +:100150000F900FBE0F901F9018959C01F8948091FE +:10016000A9009091AA00282339238091A900909199 +:10017000AA00822793279093AA008093A9007894DD +:10018000C90108950E943E000E946C0187E690E03C +:100190000E945B0280E060E00E94B00178940E94BF +:1001A000BD0218161906E4F40E946F028A32910506 +:1001B00019F40E94620114C08B32910529F480E089 +:1001C00062E00E94B0010CC08732910511F4DF9803 +:1001D00007C08332910511F4DF9A02C00E944301E7 +:1001E00080E190E00E94AD00009719F086E60E9441 +:1001F0008A0280E290E00E94AD00009719F086E448 +:100200000E948A0288E090E00E94AD00009719F0F9 +:1002100083E70E948A0280E890E00E94AD00009788 +:1002200019F081E40E948A0280E490E00E94AD000F +:10023000009719F081E60E948A0280E091E00E9416 +:10024000AD00009719F08FE60E948A0284E090E0EA +:100250000E94AD00009709F4A2CF86E70E948A02AF +:100260009ECFDD9A8AE68A95F1F700C0DD98089561 +:100270009BB3907F9BBB9BB382958F70892B8BBB6D +:100280000E94310108951F93182FDC9A0E943801B3 +:10029000812F8295807F0E94380185EF8A95F1F742 +:1002A00000001F9108951F93182FDC980E943801B9 +:1002B000812F8295807F0E94380180EE8A95F1F728 +:1002C0001F91089581E00E9453018FE39FE1019700 +:1002D000F1F700C0000008958AB38F638ABB8BB327 +:1002E000807C8BBB8FE59AEE0197F1F700C0000090 +:1002F00080E30E9438018FE19EE40197F1F700C08E +:1003000000000E9431018FE99FE00197F1F700C0E2 +:1003100000000E9431018FE99FE00197F1F700C0D2 +:10032000000080E20E9438018FE19EE40197F1F71E +:1003300000C0000088E20E9453018CE00E9453013B +:1003400086E00E9453010E946201089582E00E94AB +:1003500053018FE39FE10197F1F700C0000008957A +:10036000623061F0633018F4613079F405C06330B5 +:1003700039F0643051F406C0805805C0805403C081 +:10038000805701C080530E9453010895EF92FF925D +:10039000CF93DF93E82EE7017E01F92EE70102C03B +:1003A0000E94430189918823D9F7DF91CF91FF9073 +:1003B000EF900895CF93DF93EC0102C00E944301B8 +:1003C000FE01219684918823C9F7DF91CF9108958A +:1003D000EF92FF921F93DF93CF9300D0CDB7DEB79C +:1003E000880F880F880F806469837A830E94530185 +:1003F00069817A81462F572F7A0118E0F7018191A0 +:100400007F010E9443011150C9F70F900F90CF91C7 +:10041000DF911F91FF90EF9008951F920F920FB6FA +:100420000F9211242F938F939F93EF93FF938BB190 +:100430009CB1E0916500EF5FEF7120916400E217DD +:1004400041F08871E0936500F0E0E857FF4F90833A +:1004500001C082E08093A800FF91EF919F918F915E +:100460002F910F900FBE0F901F9018951F920F9213 +:100470000FB60F9211248F939F93EF93FF93909158 +:10048000660080916700981761F0E0916700EF5F68 +:10049000EF71E0936700F0E0E859FF4F80818CB97D +:1004A00001C05598FF91EF919F918F910F900FBED2 +:1004B0000F901F901895109266001092670010928E +:1004C00065001092640097FF03C022E02BB99F776C +:1004D00090BD89B988E98AB986E880BD0895909170 +:1004E000650080916400981789F0E0916400EF5FE7 +:1004F000EF71E0936400F0E0E857FF4F8081909146 +:10050000A800392F20E0280F311D02C020E031E083 +:10051000C9010895909166009F5F9F7120916700C7 +:100520009217E1F3E92FF0E0E859FF4F80839093B1 +:100530006600559A0895EF92FF92CF93DF93E82ECD +:10054000E7017E01F92EE70102C00E948A0289912B +:100550008823D9F7DF91CF91FF90EF900895CF9343 +:10056000DF93EC0102C00E948A02FE012196849171 +:100570008823C9F7DF91CF9108958091650020917C +:10058000640090E04F96821B91096FE170E00E9439 +:10059000CF0208958091640080936500089597FBD1 +:1005A000092E07260AD077FD04D00CD006D00020F3 +:1005B0001AF4709561957F4F0895F6F7909581959F +:1005C0009F4F0895AA1BBB1B51E107C0AA1FBB1F69 +:1005D000A617B70710F0A61BB70B881F991F5A95CF +:1005E000A9F780959095BC01CD010895F894FFCFAF +:00000001FF diff --git a/main.lst b/main.lst new file mode 100644 index 0000000..07ddbdf --- /dev/null +++ b/main.lst @@ -0,0 +1,363 @@ + 1 .file "main.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 .global init_io + 18 init_io: + 19 .LFB1: + 20 .LM1: + 21 /* prologue: function */ + 22 /* frame size = 0 */ + 23 /* stack size = 0 */ + 24 .L__stack_usage = 0 + 25 .LM2: + 26 0000 81B3 in r24,49-32 + 27 0002 8370 andi r24,lo8(3) + 28 0004 81BB out 49-32,r24 + 29 .LM3: + 30 0006 82B3 in r24,50-32 + 31 0008 8C6F ori r24,lo8(-4) + 32 000a 82BB out 50-32,r24 + 33 .LM4: + 34 000c B898 cbi 55-32,0 + 35 .LM5: + 36 000e C09A sbi 56-32,0 + 37 .LM6: + 38 0010 D79A sbi 58-32,7 + 39 .LM7: + 40 0012 DF98 cbi 59-32,7 + 41 .LM8: + 42 0014 85E0 ldi r24,lo8(5) + 43 0016 83BF out 83-32,r24 + 44 .LM9: + 45 0018 84E6 ldi r24,lo8(100) + 46 001a 82BF out 82-32,r24 + 47 .LM10: + 48 001c 89B7 in r24,89-32 + 49 001e 8160 ori r24,lo8(1) + 50 0020 89BF out 89-32,r24 + 51 /* epilogue start */ + 52 .LM11: + 53 0022 0895 ret + 54 .LFE1: + 56 .global __vector_9 + 58 __vector_9: + 59 .LFB2: + 60 .LM12: + 61 0024 1F92 push __zero_reg__ + 62 0026 0F92 push r0 + 63 0028 0FB6 in r0,__SREG__ + 64 002a 0F92 push r0 + 65 002c 1124 clr __zero_reg__ + 66 002e 2F93 push r18 + 67 0030 3F93 push r19 + 68 0032 4F93 push r20 + 69 0034 5F93 push r21 + 70 0036 8F93 push r24 + 71 0038 9F93 push r25 + 72 /* prologue: Signal */ + 73 /* frame size = 0 */ + 74 /* stack size = 9 */ + 75 .L__stack_usage = 9 + 76 .LM13: + 77 003a 84E6 ldi r24,lo8(100) + 78 003c 82BF out 82-32,r24 + 79 .LM14: + 80 003e 4091 0000 lds r20,key_state + 81 0042 5091 0000 lds r21,key_state+1 + 82 0046 80B3 in r24,48-32 + 83 0048 96B3 in r25,54-32 + 84 004a 392F mov r19,r25 + 85 004c 20E0 ldi r18,lo8(0) + 86 004e 90E0 ldi r25,lo8(0) + 87 0050 822B or r24,r18 + 88 0052 932B or r25,r19 + 89 0054 8095 com r24 + 90 0056 9095 com r25 + 91 0058 8427 eor r24,r20 + 92 005a 9527 eor r25,r21 + 93 .LVL0: + 94 .LM15: + 95 005c 2091 0000 lds r18,ct0.1588 + 96 0060 3091 0000 lds r19,ct0.1588+1 + 97 0064 2823 and r18,r24 + 98 0066 3923 and r19,r25 + 99 0068 2095 com r18 + 100 006a 3095 com r19 + 101 006c 3093 0000 sts ct0.1588+1,r19 + 102 0070 2093 0000 sts ct0.1588,r18 + 103 .LM16: + 104 0074 4091 0000 lds r20,ct1.1589 + 105 0078 5091 0000 lds r21,ct1.1589+1 + 106 007c 4823 and r20,r24 + 107 007e 5923 and r21,r25 + 108 0080 4227 eor r20,r18 + 109 0082 5327 eor r21,r19 + 110 0084 5093 0000 sts ct1.1589+1,r21 + 111 0088 4093 0000 sts ct1.1589,r20 + 112 .LM17: + 113 008c 8223 and r24,r18 + 114 008e 9323 and r25,r19 + 115 .LVL1: + 116 0090 8423 and r24,r20 + 117 0092 9523 and r25,r21 + 118 .LVL2: + 119 .LM18: + 120 0094 2091 0000 lds r18,key_state + 121 0098 3091 0000 lds r19,key_state+1 + 122 009c 2827 eor r18,r24 + 123 009e 3927 eor r19,r25 + 124 00a0 3093 0000 sts key_state+1,r19 + 125 00a4 2093 0000 sts key_state,r18 + 126 .LM19: + 127 00a8 2091 0000 lds r18,key_press + 128 00ac 3091 0000 lds r19,key_press+1 + 129 00b0 4091 0000 lds r20,key_state + 130 00b4 5091 0000 lds r21,key_state+1 + 131 00b8 4823 and r20,r24 + 132 00ba 5923 and r21,r25 + 133 00bc 422B or r20,r18 + 134 00be 532B or r21,r19 + 135 00c0 5093 0000 sts key_press+1,r21 + 136 00c4 4093 0000 sts key_press,r20 + 137 /* epilogue start */ + 138 .LM20: + 139 00c8 9F91 pop r25 + 140 00ca 8F91 pop r24 + 141 .LVL3: + 142 00cc 5F91 pop r21 + 143 00ce 4F91 pop r20 + 144 00d0 3F91 pop r19 + 145 00d2 2F91 pop r18 + 146 00d4 0F90 pop r0 + 147 00d6 0FBE out __SREG__,r0 + 148 00d8 0F90 pop r0 + 149 00da 1F90 pop __zero_reg__ + 150 00dc 1895 reti + 151 .LFE2: + 153 .global get_key_press + 155 get_key_press: + 156 .LFB3: + 157 .LM21: + 158 .LVL4: + 159 /* prologue: function */ + 160 /* frame size = 0 */ + 161 /* stack size = 0 */ + 162 .L__stack_usage = 0 + 163 00de 9C01 movw r18,r24 + 164 .LM22: + 165 /* #APP */ + 166 ; 131 "main.c" 1 + 167 00e0 F894 cli + 168 ; 0 "" 2 + 169 .LM23: + 170 /* #NOAPP */ + 171 00e2 8091 0000 lds r24,key_press + 172 00e6 9091 0000 lds r25,key_press+1 + 173 .LVL5: + 174 00ea 2823 and r18,r24 + 175 00ec 3923 and r19,r25 + 176 .LVL6: + 177 .LM24: + 178 00ee 8091 0000 lds r24,key_press + 179 00f2 9091 0000 lds r25,key_press+1 + 180 00f6 8227 eor r24,r18 + 181 00f8 9327 eor r25,r19 + 182 00fa 9093 0000 sts key_press+1,r25 + 183 00fe 8093 0000 sts key_press,r24 + 184 .LM25: + 185 /* #APP */ + 186 ; 135 "main.c" 1 + 187 0102 7894 sei + 188 ; 0 "" 2 + 189 .LM26: + 190 /* #NOAPP */ + 191 0104 C901 movw r24,r18 + 192 /* epilogue start */ + 193 0106 0895 ret + 194 .LFE3: + 196 .global main + 198 main: + 199 .LFB0: + 200 .LM27: + 201 /* prologue: function */ + 202 /* frame size = 0 */ + 203 /* stack size = 0 */ + 204 .L__stack_usage = 0 + 205 .LM28: + 206 0108 0E94 0000 call init_io + 207 .LM29: + 208 010c 0E94 0000 call lcd_init + 209 .LM30: + 210 0110 87E6 ldi r24,lo8(103) + 211 0112 90E0 ldi r25,hi8(103) + 212 0114 0E94 0000 call uart_init + 213 .LM31: + 214 0118 80E0 ldi r24,lo8(0) + 215 011a 60E0 ldi r22,lo8(0) + 216 011c 0E94 0000 call lcd_setcursor + 217 .LM32: + 218 /* #APP */ + 219 ; 55 "main.c" 1 + 220 0120 7894 sei + 221 ; 0 "" 2 + 222 /* #NOAPP */ + 223 .L20: + 224 .LM33: + 225 0122 0E94 0000 call uart_available + 226 0126 1816 cp __zero_reg__,r24 + 227 0128 1906 cpc __zero_reg__,r25 + 228 012a 04F4 brge .L5 + 229 .LM34: + 230 012c 0E94 0000 call uart_getc + 231 .LVL7: + 232 .LM35: + 233 0130 8A32 cpi r24,42 + 234 0132 9105 cpc r25,__zero_reg__ + 235 0134 01F4 brne .L6 + 236 .LM36: + 237 0136 0E94 0000 call lcd_clear + 238 .LVL8: + 239 013a 00C0 rjmp .L5 + 240 .LVL9: + 241 .L6: + 242 .LM37: + 243 013c 8B32 cpi r24,43 + 244 013e 9105 cpc r25,__zero_reg__ + 245 0140 01F4 brne .L7 + 246 .LM38: + 247 0142 80E0 ldi r24,lo8(0) + 248 .LVL10: + 249 0144 62E0 ldi r22,lo8(2) + 250 0146 0E94 0000 call lcd_setcursor + 251 014a 00C0 rjmp .L5 + 252 .LVL11: + 253 .L7: + 254 .LM39: + 255 014c 8732 cpi r24,39 + 256 014e 9105 cpc r25,__zero_reg__ + 257 0150 01F4 brne .L8 + 258 .LM40: + 259 0152 DF98 cbi 59-32,7 + 260 0154 00C0 rjmp .L5 + 261 .L8: + 262 .LM41: + 263 0156 8332 cpi r24,35 + 264 0158 9105 cpc r25,__zero_reg__ + 265 015a 01F4 brne .L9 + 266 .LM42: + 267 015c DF9A sbi 59-32,7 + 268 015e 00C0 rjmp .L5 + 269 .L9: + 270 .LM43: + 271 0160 0E94 0000 call lcd_data + 272 .LVL12: + 273 .L5: + 274 .LM44: + 275 0164 80E1 ldi r24,lo8(16) + 276 0166 90E0 ldi r25,hi8(16) + 277 0168 0E94 0000 call get_key_press + 278 016c 0097 sbiw r24,0 + 279 016e 01F0 breq .L10 + 280 .LM45: + 281 0170 86E6 ldi r24,lo8(102) + 282 0172 0E94 0000 call uart_putc + 283 .L10: + 284 .LM46: + 285 0176 80E2 ldi r24,lo8(32) + 286 0178 90E0 ldi r25,hi8(32) + 287 017a 0E94 0000 call get_key_press + 288 017e 0097 sbiw r24,0 + 289 0180 01F0 breq .L11 + 290 .LM47: + 291 0182 86E4 ldi r24,lo8(70) + 292 0184 0E94 0000 call uart_putc + 293 .L11: + 294 .LM48: + 295 0188 88E0 ldi r24,lo8(8) + 296 018a 90E0 ldi r25,hi8(8) + 297 018c 0E94 0000 call get_key_press + 298 0190 0097 sbiw r24,0 + 299 0192 01F0 breq .L12 + 300 .LM49: + 301 0194 83E7 ldi r24,lo8(115) + 302 0196 0E94 0000 call uart_putc + 303 .L12: + 304 .LM50: + 305 019a 80E8 ldi r24,lo8(128) + 306 019c 90E0 ldi r25,hi8(128) + 307 019e 0E94 0000 call get_key_press + 308 01a2 0097 sbiw r24,0 + 309 01a4 01F0 breq .L13 + 310 .LM51: + 311 01a6 81E4 ldi r24,lo8(65) + 312 01a8 0E94 0000 call uart_putc + 313 .L13: + 314 .LM52: + 315 01ac 80E4 ldi r24,lo8(64) + 316 01ae 90E0 ldi r25,hi8(64) + 317 01b0 0E94 0000 call get_key_press + 318 01b4 0097 sbiw r24,0 + 319 01b6 01F0 breq .L14 + 320 .LM53: + 321 01b8 81E6 ldi r24,lo8(97) + 322 01ba 0E94 0000 call uart_putc + 323 .L14: + 324 .LM54: + 325 01be 80E0 ldi r24,lo8(256) + 326 01c0 91E0 ldi r25,hi8(256) + 327 01c2 0E94 0000 call get_key_press + 328 01c6 0097 sbiw r24,0 + 329 01c8 01F0 breq .L15 + 330 .LM55: + 331 01ca 8FE6 ldi r24,lo8(111) + 332 01cc 0E94 0000 call uart_putc + 333 .L15: + 334 .LM56: + 335 01d0 84E0 ldi r24,lo8(4) + 336 01d2 90E0 ldi r25,hi8(4) + 337 01d4 0E94 0000 call get_key_press + 338 01d8 0097 sbiw r24,0 + 339 01da 01F4 brne .+2 + 340 01dc 00C0 rjmp .L20 + 341 .LM57: + 342 01de 86E7 ldi r24,lo8(118) + 343 01e0 0E94 0000 call uart_putc + 344 01e4 00C0 rjmp .L20 + 345 .LFE0: + 347 .comm key_state,2,1 + 348 .comm key_press,2,1 + 349 .lcomm ct1.1589,2 + 350 .lcomm ct0.1588,2 + 399 .Letext0: +DEFINED SYMBOLS + *ABS*:0000000000000000 main.c + /tmp/cc8a5ehv.s:2 *ABS*:000000000000003f __SREG__ + /tmp/cc8a5ehv.s:3 *ABS*:000000000000003e __SP_H__ + /tmp/cc8a5ehv.s:4 *ABS*:000000000000003d __SP_L__ + /tmp/cc8a5ehv.s:5 *ABS*:0000000000000034 __CCP__ + /tmp/cc8a5ehv.s:6 *ABS*:0000000000000000 __tmp_reg__ + /tmp/cc8a5ehv.s:7 *ABS*:0000000000000001 __zero_reg__ + /tmp/cc8a5ehv.s:18 .text:0000000000000000 init_io + /tmp/cc8a5ehv.s:58 .text:0000000000000024 __vector_9 + *COM*:0000000000000002 key_state + /tmp/cc8a5ehv.s:349 .bss:0000000000000002 ct0.1588 + .bss:0000000000000000 ct1.1589 + *COM*:0000000000000002 key_press + /tmp/cc8a5ehv.s:155 .text:00000000000000de get_key_press + /tmp/cc8a5ehv.s:198 .text:0000000000000108 main + +UNDEFINED SYMBOLS +lcd_init +uart_init +lcd_setcursor +uart_available +uart_getc +lcd_clear +lcd_data +uart_putc +__do_clear_bss diff --git a/main.map b/main.map new file mode 100644 index 0000000..1d96ef7 --- /dev/null +++ b/main.map @@ -0,0 +1,511 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + uart.o (__divmodhi4) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o (exit) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4) + +Allocating common symbols +Common symbol size file + +key_press 0x2 main.o +key_state 0x2 main.o + +Memory Configuration + +Name Origin Length Attributes +text 0x0000000000000000 0x0000000000020000 xr +data 0x0000000000800060 0x000000000000ffa0 rw !x +eeprom 0x0000000000810000 0x0000000000010000 rw !x +fuse 0x0000000000820000 0x0000000000000400 rw !x +lock 0x0000000000830000 0x0000000000000400 rw !x +signature 0x0000000000840000 0x0000000000000400 rw !x +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +LOAD main.o +LOAD lcd_routines.o +LOAD uart.o +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x0000000000000000 0x5f0 + *(.vectors) + .vectors 0x0000000000000000 0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + 0x0000000000000000 __vectors + 0x0000000000000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x0000000000000054 . = ALIGN (0x2) + 0x0000000000000054 __trampolines_start = . + *(.trampolines) + .trampolines 0x0000000000000054 0x0 linker stubs + *(.trampolines*) + 0x0000000000000054 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000000000000054 __ctors_start = . + *(.ctors) + 0x0000000000000054 __ctors_end = . + 0x0000000000000054 __dtors_start = . + *(.dtors) + 0x0000000000000054 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000000000000054 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + 0x0000000000000054 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000000000000054 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x0000000000000060 0x10 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + 0x0000000000000060 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000000000000070 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + *(.init9) + *(.text) + .text 0x0000000000000078 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + 0x0000000000000078 __vector_1 + 0x0000000000000078 __bad_interrupt + 0x0000000000000078 __vector_6 + 0x0000000000000078 __vector_3 + 0x0000000000000078 __vector_13 + 0x0000000000000078 __vector_17 + 0x0000000000000078 __vector_19 + 0x0000000000000078 __vector_7 + 0x0000000000000078 __vector_5 + 0x0000000000000078 __vector_4 + 0x0000000000000078 __vector_2 + 0x0000000000000078 __vector_15 + 0x0000000000000078 __vector_8 + 0x0000000000000078 __vector_14 + 0x0000000000000078 __vector_10 + 0x0000000000000078 __vector_16 + 0x0000000000000078 __vector_18 + 0x0000000000000078 __vector_20 + .text 0x000000000000007c 0x1e6 main.o + 0x000000000000007c init_io + 0x00000000000000a0 __vector_9 + 0x000000000000015a get_key_press + 0x0000000000000184 main + .text 0x0000000000000262 0x1b8 lcd_routines.o + 0x0000000000000286 lcd_data + 0x00000000000002a6 lcd_command + 0x00000000000002c4 lcd_clear + 0x00000000000002d8 lcd_init + 0x000000000000034c lcd_home + 0x0000000000000360 lcd_setcursor + 0x000000000000038c lcd_string + 0x00000000000003b4 lcd_string_p + 0x00000000000003d0 lcd_generatechar + .text 0x000000000000041a 0x184 uart.o + 0x000000000000041a __vector_11 + 0x000000000000046c __vector_12 + 0x00000000000004b6 uart_init + 0x00000000000004de uart_getc + 0x0000000000000514 uart_putc + 0x0000000000000536 uart_puts + 0x000000000000055e uart_puts_p + 0x000000000000057a uart_available + 0x0000000000000594 uart_flush + .text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text 0x000000000000059e 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + 0x000000000000059e . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x000000000000059e 0x26 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + 0x000000000000059e __divmodhi4 + 0x000000000000059e _div + .text.libgcc 0x00000000000005c4 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000000000005c4 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000000005c4 0x28 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + 0x00000000000005c4 __udivmodhi4 + 0x00000000000005ec . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000000000005ec 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + 0x00000000000005ec exit + 0x00000000000005ec _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000000000005ec 0x4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000000000005f0 _etext = . + +.data 0x0000000000800060 0x0 load address 0x00000000000005f0 + 0x0000000000800060 PROVIDE (__data_start, .) + *(.data) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + .data 0x0000000000800060 0x0 main.o + .data 0x0000000000800060 0x0 lcd_routines.o + .data 0x0000000000800060 0x0 uart.o + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .data 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0000000000800060 . = ALIGN (0x2) + 0x0000000000800060 _edata = . + 0x0000000000800060 PROVIDE (__data_end, .) + +.bss 0x0000000000800060 0x4d + 0x0000000000800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + .bss 0x0000000000800060 0x4 main.o + .bss 0x0000000000800064 0x0 lcd_routines.o + .bss 0x0000000000800064 0x45 uart.o + .bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + .bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + .bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + .bss 0x00000000008000a9 0x0 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + *(.bss*) + *(COMMON) + COMMON 0x00000000008000a9 0x4 main.o + 0x00000000008000a9 key_press + 0x00000000008000ab key_state + 0x00000000008000ad PROVIDE (__bss_end, .) + 0x00000000000005f0 __data_load_start = LOADADDR (.data) + 0x00000000000005f0 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00000000008000ad 0x0 + 0x00000000008000ad PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00000000008000ad PROVIDE (__noinit_end, .) + 0x00000000008000ad _end = . + 0x00000000008000ad PROVIDE (__heap_start, .) + +.eeprom 0x0000000000810000 0x0 + *(.eeprom*) + 0x0000000000810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x0000000000000000 0x6cc + *(.stab) + .stab 0x0000000000000000 0x6cc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + +.stabstr 0x0000000000000000 0x54 + *(.stabstr) + .stabstr 0x0000000000000000 0x54 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x0000000000000000 0x60 + *(.debug_aranges) + .debug_aranges + 0x0000000000000000 0x20 main.o + .debug_aranges + 0x0000000000000020 0x20 lcd_routines.o + .debug_aranges + 0x0000000000000040 0x20 uart.o + +.debug_pubnames + 0x0000000000000000 0x19e + *(.debug_pubnames) + .debug_pubnames + 0x0000000000000000 0x64 main.o + .debug_pubnames + 0x0000000000000064 0x9e lcd_routines.o + .debug_pubnames + 0x0000000000000102 0x9c uart.o + +.debug_info 0x0000000000000000 0xa3e + *(.debug_info) + .debug_info 0x0000000000000000 0x185 main.o + .debug_info 0x0000000000000185 0x5a5 lcd_routines.o + .debug_info 0x000000000000072a 0x314 uart.o + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x0000000000000000 0x344 + *(.debug_abbrev) + .debug_abbrev 0x0000000000000000 0xd0 main.o + .debug_abbrev 0x00000000000000d0 0x155 lcd_routines.o + .debug_abbrev 0x0000000000000225 0x11f uart.o + +.debug_line 0x0000000000000000 0x82e + *(.debug_line) + .debug_line 0x0000000000000000 0x24b main.o + .debug_line 0x000000000000024b 0x360 lcd_routines.o + .debug_line 0x00000000000005ab 0x283 uart.o + +.debug_frame 0x0000000000000000 0x1b0 + *(.debug_frame) + .debug_frame 0x0000000000000000 0x50 main.o + .debug_frame 0x0000000000000050 0xc0 lcd_routines.o + .debug_frame 0x0000000000000110 0xa0 uart.o + +.debug_str 0x0000000000000000 0x2b5 + *(.debug_str) + .debug_str 0x0000000000000000 0xba main.o + 0x100 (size before relaxing) + .debug_str 0x00000000000000ba 0x112 lcd_routines.o + 0x1ca (size before relaxing) + .debug_str 0x00000000000001cc 0xe9 uart.o + 0x1bd (size before relaxing) + +.debug_loc 0x0000000000000000 0x49a + *(.debug_loc) + .debug_loc 0x0000000000000000 0x98 main.o + .debug_loc 0x0000000000000098 0x209 lcd_routines.o + .debug_loc 0x00000000000002a1 0x1f9 uart.o + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(main.elf elf32-avr) +LOAD linker stubs + +.debug_pubtypes + 0x0000000000000000 0x9a + .debug_pubtypes + 0x0000000000000000 0x37 main.o + .debug_pubtypes + 0x0000000000000037 0x38 lcd_routines.o + .debug_pubtypes + 0x000000000000006f 0x2b uart.o + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__bss_end /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) +__divmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) + uart.o +__do_clear_bss /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_clear_bss.o) + uart.o + main.o +__heap_end /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__init /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__stack /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__udivmodhi4 /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +__vector_1 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_11 uart.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_12 uart.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_16 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_17 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_18 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_19 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_2 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_20 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_3 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_5 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_7 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_9 main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vector_default /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +__vectors /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +_div /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_divmodhi4.o) +_exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) +exit /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +get_key_press main.o +init_io main.o +key_press main.o +key_state main.o +lcd_clear lcd_routines.o + main.o +lcd_command lcd_routines.o +lcd_data lcd_routines.o + main.o +lcd_generatechar lcd_routines.o +lcd_home lcd_routines.o +lcd_init lcd_routines.o + main.o +lcd_setcursor lcd_routines.o + main.o +lcd_string lcd_routines.o +lcd_string_p lcd_routines.o +main main.o + /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/crtm16.o +uart_available uart.o + main.o +uart_flush uart.o +uart_getc uart.o + main.o +uart_init uart.o + main.o +uart_putc uart.o + main.o +uart_puts uart.o +uart_puts_p uart.o diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3c0f1ad12084749faa8f8f15cf181f65f2812252 GIT binary patch literal 6520 zcmcIoYiv}<8J)Xp8-pDi8)C?#WrInLfbN>cP)rj{fF#h;U;#mDgmS%JFZLFD*V>19 zv?;cEhM-`xHlbEkDw?J=O8N*AK_m(mm6|k))ToMt6t&#ux5#w{dGv9nOcizjcN7g>-IF2&OQ5#g=QflrLrS_t*K|9PeV^`$pNCX-X9bRa3cVvet4epOT613tB$ zft=fapMt;o>~TVwR5H{VYYnwWBB5|kGSm=U6nr2Q49Y)Bv3R62(-u{#D;$dlBWx~} zZo@nUJG>*SSWoXZ<>8$LSn~z#&#OOE;uOX!^e?oHzd=)8Xcy}KpY3uAx^7$ynh>UI zGYb4ox$*y^XzH8zroPetUpAIU4QAP=rs@Ur&x-tl;p}6#t8pYpIlJbR2eeI{X$~^W zO*#u=+w%(Si?BB%4q64?bfUl$vWhv*d-;(vtjB~ z53Nz_Ui=5aS6TL2@Q7ubdMzN{$+Z`yhhW9xv9udYsGoqlZcj9lP9)t%eOk0f)9%*j z4!1iQO{Mgf=XOyos7X1M4yU6kDVFDiAnF0+d>aqL%3xC=&tx{BZ?J@)t$ft3NhnXTqC@l>om9&HOmI>JfSnTWRsauTAeiQl06KcQUL z_|Iyl$EJg3l=AKjE~kgP2&n znRYka+M0~^sG#=oq*#1QVuH{ai$^C2Taw`}D4u&~A~K<{JJT9RF1^GgQ%r3!l%x7(f2>BBPa*RP1JFFx?Q zz10ThB@=G}Oy0@1pB>-$ErgHZjKFyBkw`LSt6&?>q8sqz?lZ~ICJ1&r3#P+{FTaCh zV7}uCa8n0VB~b7!>sw4&v(%vvQ#}sAGZK&AXX0%EH+AUu1{z~slT4q&5DaJ8^_fbw z0NFpj1x&mYxE-$?ua;xbOfqG=AsEiG7vR@soUF1RfZOe^zRR0Ww##>cX_sx-@k;TL zUx#LrDa%5z<88F!RZ1Dx%PYvH4ybBEya0(LQ+5)z9j^uPFf@8xuoQFsdjp(x>XDgT zPJ#&{lqTz#wFj!)$x6LNBFR)CTGOsZF&NDdc+WAjPg9XmeL}pc5N|^>$;30ZL0d0U zH^+@m^xGZRw%ucv7wJ93HSMLFYwbUNXScFlK2 zlL;~KdnLGV(UK(!zf(vWbMF=FTFpO3@~@Tua_@IW+Fah_DicoP$wNjd6-`Gn$y6fg z>EWJmtTWu&8TCxWiDUdbauE*zB(6Df&MW7; zsK{G?t-`r$;uh!qXncBv1Jq98jI+<;2ZaOFQF3W_L^%CVSo}rH=OuESRZPD`Ca3?a z~HfZ|5wOs8(AyPRxUxY~0$-m_Bd&$4- z@!90FJU$QHhq`UR1=Itc-XJ>P$BU`o=jltq{o=nIoOStTeiYfn|EA^BEIyln8!i1w z(OZB|Svu|N*68}Xqn&Dn^%Q2fN z`YP~Ra@3`Nop6pb_YeJB;Io1parj2!ULgMvJZ$M)=Z>5q{BJ1Z!?o?mnWM*9#-ttf z&G;mQbB$~h&bD?5uK?~B&U@{!@M_@m!lwg|3uiZeE}TaS*96;|4SY>F=i;33rNFm@ zF9ZHT_-5b*;c4I{;fH|Ngma$%Cj2DuQ{is|$AxoV^jx41W8jq>6Y$I6GlYKxK1;X{ zXy&2_JR~~jXsN~ZydX|FG@f0IITg5GIOq9E;Q?T)@Y%rc3SR)^xx~8lz@5Su1N((@ zEgTfiHhC7&e=TrCINLlSd=u~`;hTZ43U2|P72XCsFT5N0j_@AfABD614}>28UKTzC zydj+JeGL?7H|_o#Nc;MK literal 0 HcmV?d00001 diff --git a/uart.lst b/uart.lst new file mode 100644 index 0000000..602f5ab --- /dev/null +++ b/uart.lst @@ -0,0 +1,405 @@ + 1 .file "uart.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 .global __vector_11 + 18 __vector_11: + 19 .LFB0: + 20 .LM1: + 21 0000 1F92 push __zero_reg__ + 22 0002 0F92 push r0 + 23 0004 0FB6 in r0,__SREG__ + 24 0006 0F92 push r0 + 25 0008 1124 clr __zero_reg__ + 26 000a 2F93 push r18 + 27 000c 8F93 push r24 + 28 000e 9F93 push r25 + 29 0010 EF93 push r30 + 30 0012 FF93 push r31 + 31 /* prologue: Signal */ + 32 /* frame size = 0 */ + 33 /* stack size = 8 */ + 34 .L__stack_usage = 8 + 35 .LM2: + 36 0014 8BB1 in r24,43-32 + 37 .LVL0: + 38 .LM3: + 39 0016 9CB1 in r25,44-32 + 40 .LVL1: + 41 .LM4: + 42 0018 E091 0000 lds r30,UART_RxHead + 43 001c EF5F subi r30,lo8(-(1)) + 44 001e EF71 andi r30,lo8(31) + 45 .LVL2: + 46 .LM5: + 47 0020 2091 0000 lds r18,UART_RxTail + 48 0024 E217 cp r30,r18 + 49 0026 01F0 breq .L3 + 50 .LM6: + 51 0028 8871 andi r24,lo8(24) + 52 .LVL3: + 53 .LM7: + 54 002a E093 0000 sts UART_RxHead,r30 + 55 .LM8: + 56 002e F0E0 ldi r31,lo8(0) + 57 0030 E050 subi r30,lo8(-(UART_RxBuf)) + 58 0032 F040 sbci r31,hi8(-(UART_RxBuf)) + 59 .LVL4: + 60 0034 9083 st Z,r25 + 61 0036 00C0 rjmp .L2 + 62 .LVL5: + 63 .L3: + 64 .LM9: + 65 0038 82E0 ldi r24,lo8(2) + 66 .LVL6: + 67 .L2: + 68 .LM10: + 69 003a 8093 0000 sts UART_LastRxError,r24 + 70 /* epilogue start */ + 71 .LM11: + 72 003e FF91 pop r31 + 73 0040 EF91 pop r30 + 74 0042 9F91 pop r25 + 75 .LVL7: + 76 0044 8F91 pop r24 + 77 .LVL8: + 78 0046 2F91 pop r18 + 79 0048 0F90 pop r0 + 80 004a 0FBE out __SREG__,r0 + 81 004c 0F90 pop r0 + 82 004e 1F90 pop __zero_reg__ + 83 0050 1895 reti + 84 .LFE0: + 86 .global __vector_12 + 88 __vector_12: + 89 .LFB1: + 90 .LM12: + 91 0052 1F92 push __zero_reg__ + 92 0054 0F92 push r0 + 93 0056 0FB6 in r0,__SREG__ + 94 0058 0F92 push r0 + 95 005a 1124 clr __zero_reg__ + 96 005c 8F93 push r24 + 97 005e 9F93 push r25 + 98 0060 EF93 push r30 + 99 0062 FF93 push r31 + 100 /* prologue: Signal */ + 101 /* frame size = 0 */ + 102 /* stack size = 7 */ + 103 .L__stack_usage = 7 + 104 .LM13: + 105 0064 9091 0000 lds r25,UART_TxHead + 106 0068 8091 0000 lds r24,UART_TxTail + 107 006c 9817 cp r25,r24 + 108 006e 01F0 breq .L5 + 109 .LM14: + 110 0070 E091 0000 lds r30,UART_TxTail + 111 0074 EF5F subi r30,lo8(-(1)) + 112 0076 EF71 andi r30,lo8(31) + 113 .LVL9: + 114 .LM15: + 115 0078 E093 0000 sts UART_TxTail,r30 + 116 .LM16: + 117 007c F0E0 ldi r31,lo8(0) + 118 007e E050 subi r30,lo8(-(UART_TxBuf)) + 119 0080 F040 sbci r31,hi8(-(UART_TxBuf)) + 120 .LVL10: + 121 0082 8081 ld r24,Z + 122 0084 8CB9 out 44-32,r24 + 123 0086 00C0 rjmp .L4 + 124 .LVL11: + 125 .L5: + 126 .LM17: + 127 0088 5598 cbi 42-32,5 + 128 .L4: + 129 /* epilogue start */ + 130 .LM18: + 131 008a FF91 pop r31 + 132 008c EF91 pop r30 + 133 008e 9F91 pop r25 + 134 0090 8F91 pop r24 + 135 0092 0F90 pop r0 + 136 0094 0FBE out __SREG__,r0 + 137 0096 0F90 pop r0 + 138 0098 1F90 pop __zero_reg__ + 139 009a 1895 reti + 140 .LFE1: + 142 .global uart_init + 144 uart_init: + 145 .LFB2: + 146 .LM19: + 147 .LVL12: + 148 /* prologue: function */ + 149 /* frame size = 0 */ + 150 /* stack size = 0 */ + 151 .L__stack_usage = 0 + 152 .LM20: + 153 009c 1092 0000 sts UART_TxHead,__zero_reg__ + 154 .LM21: + 155 00a0 1092 0000 sts UART_TxTail,__zero_reg__ + 156 .LM22: + 157 00a4 1092 0000 sts UART_RxHead,__zero_reg__ + 158 .LM23: + 159 00a8 1092 0000 sts UART_RxTail,__zero_reg__ + 160 .LM24: + 161 00ac 97FF sbrs r25,7 + 162 00ae 00C0 rjmp .L8 + 163 .LM25: + 164 00b0 22E0 ldi r18,lo8(2) + 165 00b2 2BB9 out 43-32,r18 + 166 .LM26: + 167 00b4 9F77 andi r25,hi8(32767) + 168 .LVL13: + 169 .L8: + 170 .LM27: + 171 00b6 90BD out 64-32,r25 + 172 .LM28: + 173 00b8 89B9 out 41-32,r24 + 174 .LM29: + 175 00ba 88E9 ldi r24,lo8(-104) + 176 .LVL14: + 177 00bc 8AB9 out 42-32,r24 + 178 .LM30: + 179 00be 86E8 ldi r24,lo8(-122) + 180 00c0 80BD out 64-32,r24 + 181 /* epilogue start */ + 182 .LM31: + 183 00c2 0895 ret + 184 .LFE2: + 186 .global uart_getc + 188 uart_getc: + 189 .LFB3: + 190 .LM32: + 191 /* prologue: function */ + 192 /* frame size = 0 */ + 193 /* stack size = 0 */ + 194 .L__stack_usage = 0 + 195 .LM33: + 196 00c4 9091 0000 lds r25,UART_RxHead + 197 00c8 8091 0000 lds r24,UART_RxTail + 198 00cc 9817 cp r25,r24 + 199 00ce 01F0 breq .L11 + 200 .LM34: + 201 00d0 E091 0000 lds r30,UART_RxTail + 202 00d4 EF5F subi r30,lo8(-(1)) + 203 00d6 EF71 andi r30,lo8(31) + 204 .LVL15: + 205 .LM35: + 206 00d8 E093 0000 sts UART_RxTail,r30 + 207 .LM36: + 208 00dc F0E0 ldi r31,lo8(0) + 209 00de E050 subi r30,lo8(-(UART_RxBuf)) + 210 00e0 F040 sbci r31,hi8(-(UART_RxBuf)) + 211 .LVL16: + 212 00e2 8081 ld r24,Z + 213 .LVL17: + 214 .LM37: + 215 00e4 9091 0000 lds r25,UART_LastRxError + 216 00e8 392F mov r19,r25 + 217 00ea 20E0 ldi r18,lo8(0) + 218 00ec 280F add r18,r24 + 219 00ee 311D adc r19,__zero_reg__ + 220 00f0 00C0 rjmp .L10 + 221 .LVL18: + 222 .L11: + 223 .LM38: + 224 00f2 20E0 ldi r18,lo8(256) + 225 00f4 31E0 ldi r19,hi8(256) + 226 .L10: + 227 .LM39: + 228 00f6 C901 movw r24,r18 + 229 /* epilogue start */ + 230 00f8 0895 ret + 231 .LFE3: + 233 .global uart_putc + 235 uart_putc: + 236 .LFB4: + 237 .LM40: + 238 .LVL19: + 239 /* prologue: function */ + 240 /* frame size = 0 */ + 241 /* stack size = 0 */ + 242 .L__stack_usage = 0 + 243 .LM41: + 244 00fa 9091 0000 lds r25,UART_TxHead + 245 00fe 9F5F subi r25,lo8(-(1)) + 246 0100 9F71 andi r25,lo8(31) + 247 .LVL20: + 248 .L13: + 249 .LM42: + 250 0102 2091 0000 lds r18,UART_TxTail + 251 0106 9217 cp r25,r18 + 252 0108 01F0 breq .L13 + 253 .LM43: + 254 010a E92F mov r30,r25 + 255 010c F0E0 ldi r31,lo8(0) + 256 010e E050 subi r30,lo8(-(UART_TxBuf)) + 257 0110 F040 sbci r31,hi8(-(UART_TxBuf)) + 258 0112 8083 st Z,r24 + 259 .LM44: + 260 0114 9093 0000 sts UART_TxHead,r25 + 261 .LM45: + 262 0118 559A sbi 42-32,5 + 263 /* epilogue start */ + 264 .LM46: + 265 011a 0895 ret + 266 .LFE4: + 268 .global uart_puts + 270 uart_puts: + 271 .LFB5: + 272 .LM47: + 273 .LVL21: + 274 011c EF92 push r14 + 275 011e FF92 push r15 + 276 0120 CF93 push r28 + 277 0122 DF93 push r29 + 278 /* prologue: function */ + 279 /* frame size = 0 */ + 280 /* stack size = 4 */ + 281 .L__stack_usage = 4 + 282 .LM48: + 283 0124 E82E mov r14,r24 + 284 0126 E701 movw r28,r14 + 285 0128 7E01 movw r14,r28 + 286 012a F92E mov r15,r25 + 287 012c E701 movw r28,r14 + 288 .LM49: + 289 012e 00C0 rjmp .L16 + 290 .LVL22: + 291 .L17: + 292 .LM50: + 293 0130 0E94 0000 call uart_putc + 294 .L16: + 295 .LM51: + 296 0134 8991 ld r24,Y+ + 297 0136 8823 tst r24 + 298 0138 01F4 brne .L17 + 299 /* epilogue start */ + 300 .LM52: + 301 013a DF91 pop r29 + 302 013c CF91 pop r28 + 303 013e FF90 pop r15 + 304 0140 EF90 pop r14 + 305 0142 0895 ret + 306 .LFE5: + 308 .global uart_puts_p + 310 uart_puts_p: + 311 .LFB6: + 312 .LM53: + 313 .LVL23: + 314 0144 CF93 push r28 + 315 0146 DF93 push r29 + 316 /* prologue: function */ + 317 /* frame size = 0 */ + 318 /* stack size = 2 */ + 319 .L__stack_usage = 2 + 320 0148 EC01 movw r28,r24 + 321 .LM54: + 322 014a 00C0 rjmp .L19 + 323 .LVL24: + 324 .L20: + 325 .LM55: + 326 014c 0E94 0000 call uart_putc + 327 .LVL25: + 328 .L19: + 329 .LM56: + 330 0150 FE01 movw r30,r28 + 331 .LVL26: + 332 .LBB2: + 333 .LM57: + 334 0152 2196 adiw r28,1 + 335 .LVL27: + 336 /* #APP */ + 337 ; 538 "uart.c" 1 + 338 0154 8491 lpm r24, Z + 339 + 340 ; 0 "" 2 + 341 .LVL28: + 342 /* #NOAPP */ + 343 .LBE2: + 344 0156 8823 tst r24 + 345 0158 01F4 brne .L20 + 346 /* epilogue start */ + 347 .LM58: + 348 015a DF91 pop r29 + 349 015c CF91 pop r28 + 350 .LVL29: + 351 015e 0895 ret + 352 .LFE6: + 354 .global uart_available + 356 uart_available: + 357 .LFB7: + 358 .LM59: + 359 /* prologue: function */ + 360 /* frame size = 0 */ + 361 /* stack size = 0 */ + 362 .L__stack_usage = 0 + 363 .LM60: + 364 0160 8091 0000 lds r24,UART_RxHead + 365 0164 2091 0000 lds r18,UART_RxTail + 366 0168 90E0 ldi r25,lo8(0) + 367 016a 4F96 adiw r24,31 + 368 016c 821B sub r24,r18 + 369 016e 9109 sbc r25,__zero_reg__ + 370 0170 6FE1 ldi r22,lo8(31) + 371 0172 70E0 ldi r23,hi8(31) + 372 0174 0E94 0000 call __divmodhi4 + 373 /* epilogue start */ + 374 .LM61: + 375 0178 0895 ret + 376 .LFE7: + 378 .global uart_flush + 380 uart_flush: + 381 .LFB8: + 382 .LM62: + 383 /* prologue: function */ + 384 /* frame size = 0 */ + 385 /* stack size = 0 */ + 386 .L__stack_usage = 0 + 387 .LM63: + 388 017a 8091 0000 lds r24,UART_RxTail + 389 017e 8093 0000 sts UART_RxHead,r24 + 390 /* epilogue start */ + 391 .LM64: + 392 0182 0895 ret + 393 .LFE8: + 395 .lcomm UART_RxTail,1 + 396 .lcomm UART_RxHead,1 + 397 .lcomm UART_TxHead,1 + 398 .lcomm UART_TxTail,1 + 399 .lcomm UART_TxBuf,32 + 400 .lcomm UART_RxBuf,32 + 401 .lcomm UART_LastRxError,1 + 490 .Letext0: +DEFINED SYMBOLS + *ABS*:0000000000000000 uart.c + /tmp/ccUnbh69.s:2 *ABS*:000000000000003f __SREG__ + /tmp/ccUnbh69.s:3 *ABS*:000000000000003e __SP_H__ + /tmp/ccUnbh69.s:4 *ABS*:000000000000003d __SP_L__ + /tmp/ccUnbh69.s:5 *ABS*:0000000000000034 __CCP__ + /tmp/ccUnbh69.s:6 *ABS*:0000000000000000 __tmp_reg__ + /tmp/ccUnbh69.s:7 *ABS*:0000000000000001 __zero_reg__ + /tmp/ccUnbh69.s:18 .text:0000000000000000 __vector_11 + /tmp/ccUnbh69.s:395 .bss:0000000000000001 UART_RxHead + .bss:0000000000000000 UART_RxTail + /tmp/ccUnbh69.s:399 .bss:0000000000000024 UART_RxBuf + /tmp/ccUnbh69.s:400 .bss:0000000000000044 UART_LastRxError + /tmp/ccUnbh69.s:88 .text:0000000000000052 __vector_12 + /tmp/ccUnbh69.s:396 .bss:0000000000000002 UART_TxHead + /tmp/ccUnbh69.s:397 .bss:0000000000000003 UART_TxTail + /tmp/ccUnbh69.s:398 .bss:0000000000000004 UART_TxBuf + /tmp/ccUnbh69.s:144 .text:000000000000009c uart_init + /tmp/ccUnbh69.s:188 .text:00000000000000c4 uart_getc + /tmp/ccUnbh69.s:235 .text:00000000000000fa uart_putc + /tmp/ccUnbh69.s:270 .text:000000000000011c uart_puts + /tmp/ccUnbh69.s:310 .text:0000000000000144 uart_puts_p + /tmp/ccUnbh69.s:356 .text:0000000000000160 uart_available + /tmp/ccUnbh69.s:380 .text:000000000000017a uart_flush + +UNDEFINED SYMBOLS +__divmodhi4 +__do_clear_bss diff --git a/uart.o b/uart.o new file mode 100644 index 0000000000000000000000000000000000000000..0160b9bfb59d87942ea3c110e7aa9ee53431c542 GIT binary patch literal 8260 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