diff --git a/Timer/Timer.c b/Timer/Timer.c index a52d7b9..6e4e382 100644 --- a/Timer/Timer.c +++ b/Timer/Timer.c @@ -81,6 +81,10 @@ ISR(TIMER0_COMPA_vect) int main(void) { DDRB = 0; + DDRD |= (1< 3a: 05 90 lpm r0, Z+ 3c: 0d 92 st X+, r0 @@ -88,7 +90,7 @@ Disassembly of section .text: 50: b1 07 cpc r27, r17 52: e1 f7 brne .-8 ; 0x4c <.do_clear_bss_loop> 54: af d0 rcall .+350 ; 0x1b4
- 56: 3d c1 rjmp .+634 ; 0x2d2 <_exit> + 56: 1e c2 rjmp .+1084 ; 0x494 <_exit> 00000058 <__bad_interrupt>: 58: d3 cf rjmp .-90 ; 0x0 <__vectors> @@ -366,231 +368,612 @@ ISR(TIMER0_COMPA_vect) 000001b4
: int main(void) { - 1b4: af 92 push r10 - 1b6: bf 92 push r11 - 1b8: cf 92 push r12 - 1ba: df 92 push r13 - 1bc: ef 92 push r14 - 1be: ff 92 push r15 - 1c0: 0f 93 push r16 - 1c2: 1f 93 push r17 - 1c4: df 93 push r29 - 1c6: cf 93 push r28 - 1c8: 0f 92 push r0 - 1ca: cd b7 in r28, 0x3d ; 61 - 1cc: de b7 in r29, 0x3e ; 62 + 1b4: 4f 92 push r4 + 1b6: 5f 92 push r5 + 1b8: 7f 92 push r7 + 1ba: 8f 92 push r8 + 1bc: 9f 92 push r9 + 1be: af 92 push r10 + 1c0: bf 92 push r11 + 1c2: cf 92 push r12 + 1c4: df 92 push r13 + 1c6: ef 92 push r14 + 1c8: ff 92 push r15 + 1ca: 0f 93 push r16 + 1cc: 1f 93 push r17 + 1ce: df 93 push r29 + 1d0: cf 93 push r28 + 1d2: 0f 92 push r0 + 1d4: cd b7 in r28, 0x3d ; 61 + 1d6: de b7 in r29, 0x3e ; 62 DDRB = 0; - 1ce: 17 ba out 0x17, r1 ; 23 - TCCR0B |= (1< + break; + } + } frame[0] = 11; - 1d0: 8b e0 ldi r24, 0x0B ; 11 - 1d2: 80 93 72 00 sts 0x0072, r24 - 1d6: 6d e1 ldi r22, 0x1D ; 29 - 1d8: a6 2e mov r10, r22 - 1da: b1 2c mov r11, r1 + 1e4: 8b e0 ldi r24, 0x0B ; 11 + 1e6: 80 93 72 00 sts 0x0072, r24 + 1ea: 6d e1 ldi r22, 0x1D ; 29 + 1ec: a6 2e mov r10, r22 + 1ee: b1 2c mov r11, r1 for(uint8_t j=0;j<=MIN;j++) { frame[2] = (uint8_t)((MIN-j)/10); - 1dc: 5a e0 ldi r21, 0x0A ; 10 - 1de: e5 2e mov r14, r21 - 1e0: f1 2c mov r15, r1 - 1e2: c5 01 movw r24, r10 - 1e4: b7 01 movw r22, r14 - 1e6: 4e d0 rcall .+156 ; 0x284 <__divmodhi4> - 1e8: 60 93 74 00 sts 0x0074, r22 - frame[3] = (uint8_t)((MIN-j)%10); - 1ec: 80 93 75 00 sts 0x0075, r24 - 1f0: 0b e3 ldi r16, 0x3B ; 59 - 1f2: 10 e0 ldi r17, 0x00 ; 0 - for(uint8_t i=0;i<=59;i++) { - 1f4: 20 e0 ldi r18, 0x00 ; 0 - frame[4] = (uint8_t)((59-i)/10); - 1f6: c8 01 movw r24, r16 + 1f0: 5a e0 ldi r21, 0x0A ; 10 + 1f2: e5 2e mov r14, r21 + 1f4: f1 2c mov r15, r1 + 1f6: c5 01 movw r24, r10 1f8: b7 01 movw r22, r14 - 1fa: 44 d0 rcall .+136 ; 0x284 <__divmodhi4> - 1fc: 60 93 76 00 sts 0x0076, r22 + 1fa: 25 d1 rcall .+586 ; 0x446 <__divmodhi4> + 1fc: 60 93 74 00 sts 0x0074, r22 + frame[3] = (uint8_t)((MIN-j)%10); + 200: 80 93 75 00 sts 0x0075, r24 + 204: 0b e3 ldi r16, 0x3B ; 59 + 206: 10 e0 ldi r17, 0x00 ; 0 + for(uint8_t i=0;i<=59;i++) { + 208: 20 e0 ldi r18, 0x00 ; 0 + frame[4] = (uint8_t)((59-i)/10); + 20a: c8 01 movw r24, r16 + 20c: b7 01 movw r22, r14 + 20e: 1b d1 rcall .+566 ; 0x446 <__divmodhi4> + 210: 60 93 76 00 sts 0x0076, r22 frame[5] = (uint8_t)((59-i)%10); - 200: 80 93 77 00 sts 0x0077, r24 + 214: 80 93 77 00 sts 0x0077, r24 frame[0] = (i%2==0)?11:14; - 204: 20 ff sbrs r18, 0 - 206: 02 c0 rjmp .+4 ; 0x20c - 208: 8e e0 ldi r24, 0x0E ; 14 - 20a: 01 c0 rjmp .+2 ; 0x20e - 20c: 8b e0 ldi r24, 0x0B ; 11 - 20e: 80 93 72 00 sts 0x0072, r24 - 212: 42 e5 ldi r20, 0x52 ; 82 - 214: d4 2e mov r13, r20 + 218: 20 ff sbrs r18, 0 + 21a: 02 c0 rjmp .+4 ; 0x220 + 21c: 8e e0 ldi r24, 0x0E ; 14 + 21e: 01 c0 rjmp .+2 ; 0x222 + 220: 8b e0 ldi r24, 0x0B ; 11 + 222: 80 93 72 00 sts 0x0072, r24 + 226: 42 e5 ldi r20, 0x52 ; 82 + 228: d4 2e mov r13, r20 for(uint8_t k=0;k<82;k++) { render(); - 216: 29 83 std Y+1, r18 ; 0x01 - 218: 8b df rcall .-234 ; 0x130 - 21a: da 94 dec r13 + 22a: 29 83 std Y+1, r18 ; 0x01 + 22c: 81 df rcall .-254 ; 0x130 + 22e: da 94 dec r13 frame[3] = (uint8_t)((MIN-j)%10); for(uint8_t i=0;i<=59;i++) { frame[4] = (uint8_t)((59-i)/10); frame[5] = (uint8_t)((59-i)%10); frame[0] = (i%2==0)?11:14; for(uint8_t k=0;k<82;k++) { - 21c: 29 81 ldd r18, Y+1 ; 0x01 - 21e: dd 20 and r13, r13 - 220: d1 f7 brne .-12 ; 0x216 - while(1){ + 230: 29 81 ldd r18, Y+1 ; 0x01 + 232: dd 20 and r13, r13 + 234: d1 f7 brne .-12 ; 0x22a + } frame[0] = 11; for(uint8_t j=0;j<=MIN;j++) { frame[2] = (uint8_t)((MIN-j)/10); frame[3] = (uint8_t)((MIN-j)%10); for(uint8_t i=0;i<=59;i++) { - 222: 2f 5f subi r18, 0xFF ; 255 - 224: 01 50 subi r16, 0x01 ; 1 - 226: 10 40 sbci r17, 0x00 ; 0 - 228: 2c 33 cpi r18, 0x3C ; 60 - 22a: 29 f7 brne .-54 ; 0x1f6 - 22c: 08 94 sec - 22e: a1 08 sbc r10, r1 - 230: b1 08 sbc r11, r1 - OCR0A = 250; //geladen mit 10ms - TIMSK |= (1< + 240: 08 94 sec + 242: a1 08 sbc r10, r1 + 244: b1 08 sbc r11, r1 + if (!(PIND & (1< + 246: 8f ef ldi r24, 0xFF ; 255 + 248: a8 16 cp r10, r24 + 24a: 8f ef ldi r24, 0xFF ; 255 + 24c: b8 06 cpc r11, r24 + 24e: 99 f6 brne .-90 ; 0x1f6 render(); } } } while(1) { frame[0] = 10; - 23c: 3a e0 ldi r19, 0x0A ; 10 - 23e: c3 2e mov r12, r19 - frame[2] = 15; - 240: 2f e0 ldi r18, 0x0F ; 15 - 242: e2 2e mov r14, r18 - frame[3] = 16; - 244: 90 e1 ldi r25, 0x10 ; 16 - 246: f9 2e mov r15, r25 - frame[4] = 17; - 248: 81 e1 ldi r24, 0x11 ; 17 - 24a: d8 2e mov r13, r24 - frame[5] = 15; - for(uint8_t k=0;k<82;k++) { - render(); - } - frame[2] = 14; - 24c: 0e e0 ldi r16, 0x0E ; 14 + 250: 8a e0 ldi r24, 0x0A ; 10 + 252: 80 93 72 00 sts 0x0072, r24 + 256: 0a e0 ldi r16, 0x0A ; 10 + for(uint8_t j=0;j<10;j++) { + frame[2] = 15; + 258: 3f e0 ldi r19, 0x0F ; 15 + 25a: e3 2e mov r14, r19 + frame[3] = 14; + 25c: 1e e0 ldi r17, 0x0E ; 14 + frame[5] = 14; + for(uint8_t k=0;k<5;k++) { render(); } + frame[2] = 14; + frame[3] = 16; + 25e: 20 e1 ldi r18, 0x10 ; 16 + 260: c2 2e mov r12, r18 + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[3] = 14; + frame[4] = 17; + 262: 91 e1 ldi r25, 0x11 ; 17 + 264: d9 2e mov r13, r25 } } while(1) { frame[0] = 10; - 24e: c0 92 72 00 sts 0x0072, r12 - frame[2] = 15; - 252: e0 92 74 00 sts 0x0074, r14 - frame[3] = 16; - 256: f0 92 75 00 sts 0x0075, r15 - frame[4] = 17; - 25a: d0 92 76 00 sts 0x0076, r13 - frame[5] = 15; - 25e: e0 92 77 00 sts 0x0077, r14 - 262: 12 e5 ldi r17, 0x52 ; 82 - for(uint8_t k=0;k<82;k++) { - render(); - 264: 65 df rcall .-310 ; 0x130 - 266: 11 50 subi r17, 0x01 ; 1 - frame[0] = 10; - frame[2] = 15; - frame[3] = 16; - frame[4] = 17; - frame[5] = 15; - for(uint8_t k=0;k<82;k++) { - 268: e9 f7 brne .-6 ; 0x264 - render(); - } - frame[2] = 14; - 26a: 00 93 74 00 sts 0x0074, r16 - frame[3] = 14; - 26e: 00 93 75 00 sts 0x0075, r16 - frame[4] = 14; - 272: 00 93 76 00 sts 0x0076, r16 - frame[5] = 14; - 276: 00 93 77 00 sts 0x0077, r16 - 27a: 12 e5 ldi r17, 0x52 ; 82 - for(uint8_t k=0;k<82;k++) { - render(); + for(uint8_t j=0;j<10;j++) { + frame[2] = 15; + 266: e0 92 74 00 sts 0x0074, r14 + frame[3] = 14; + 26a: 10 93 75 00 sts 0x0075, r17 + frame[4] = 14; + 26e: 10 93 76 00 sts 0x0076, r17 + frame[5] = 14; + 272: 10 93 77 00 sts 0x0077, r17 + for(uint8_t k=0;k<5;k++) { + render(); + 276: 5c df rcall .-328 ; 0x130 + 278: 5b df rcall .-330 ; 0x130 + 27a: 5a df rcall .-332 ; 0x130 27c: 59 df rcall .-334 ; 0x130 - 27e: 11 50 subi r17, 0x01 ; 1 + 27e: 58 df rcall .-336 ; 0x130 + } + frame[2] = 14; + 280: 10 93 74 00 sts 0x0074, r17 + frame[3] = 16; + 284: c0 92 75 00 sts 0x0075, r12 + for(uint8_t k=0;k<5;k++) { + render(); + 288: 53 df rcall .-346 ; 0x130 + 28a: 52 df rcall .-348 ; 0x130 + 28c: 51 df rcall .-350 ; 0x130 + 28e: 50 df rcall .-352 ; 0x130 + 290: 4f df rcall .-354 ; 0x130 + } + frame[3] = 14; + 292: 10 93 75 00 sts 0x0075, r17 + frame[4] = 17; + 296: d0 92 76 00 sts 0x0076, r13 + for(uint8_t k=0;k<5;k++) { + render(); + 29a: 4a df rcall .-364 ; 0x130 + 29c: 49 df rcall .-366 ; 0x130 + 29e: 48 df rcall .-368 ; 0x130 + 2a0: 47 df rcall .-370 ; 0x130 + 2a2: 46 df rcall .-372 ; 0x130 + } + frame[4] = 14; + 2a4: 10 93 76 00 sts 0x0076, r17 + frame[5] = 15; + 2a8: e0 92 77 00 sts 0x0077, r14 + for(uint8_t k=0;k<5;k++) { + render(); + 2ac: 41 df rcall .-382 ; 0x130 + 2ae: 40 df rcall .-384 ; 0x130 + 2b0: 3f df rcall .-386 ; 0x130 + 2b2: 3e df rcall .-388 ; 0x130 + 2b4: 3d df rcall .-390 ; 0x130 + 2b6: 01 50 subi r16, 0x01 ; 1 + } + } + } + while(1) { + frame[0] = 10; + for(uint8_t j=0;j<10;j++) { + 2b8: b1 f6 brne .-84 ; 0x266 + 2ba: 0a e0 ldi r16, 0x0A ; 10 + for(uint8_t k=0;k<5;k++) { + render(); + } } - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t k=0;k<82;k++) { - 280: e9 f7 brne .-6 ; 0x27c - 282: e5 cf rjmp .-54 ; 0x24e + for(uint8_t j=0;j<10;j++) { + frame[2] = 14; + 2bc: 1e e0 ldi r17, 0x0E ; 14 + frame[3] = 14; + frame[4] = 14; + frame[5] = 15; + 2be: 8f e0 ldi r24, 0x0F ; 15 + 2c0: e8 2e mov r14, r24 + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[5] = 14; + frame[3] = 16; + 2c2: b0 e1 ldi r27, 0x10 ; 16 + 2c4: cb 2e mov r12, r27 + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[3] = 14; + frame[4] = 17; + 2c6: a1 e1 ldi r26, 0x11 ; 17 + 2c8: da 2e mov r13, r26 + for(uint8_t k=0;k<5;k++) { + render(); + } + } + for(uint8_t j=0;j<10;j++) { + frame[2] = 14; + 2ca: 10 93 74 00 sts 0x0074, r17 + frame[3] = 14; + 2ce: 10 93 75 00 sts 0x0075, r17 + frame[4] = 14; + 2d2: 10 93 76 00 sts 0x0076, r17 + frame[5] = 15; + 2d6: e0 92 77 00 sts 0x0077, r14 + for(uint8_t k=0;k<5;k++) { + render(); + 2da: 2a df rcall .-428 ; 0x130 + 2dc: 29 df rcall .-430 ; 0x130 + 2de: 28 df rcall .-432 ; 0x130 + 2e0: 27 df rcall .-434 ; 0x130 + 2e2: 26 df rcall .-436 ; 0x130 + } + frame[5] = 14; + 2e4: 10 93 77 00 sts 0x0077, r17 + frame[3] = 16; + 2e8: c0 92 75 00 sts 0x0075, r12 + for(uint8_t k=0;k<5;k++) { + render(); + 2ec: 21 df rcall .-446 ; 0x130 + 2ee: 20 df rcall .-448 ; 0x130 + 2f0: 1f df rcall .-450 ; 0x130 + 2f2: 1e df rcall .-452 ; 0x130 + 2f4: 1d df rcall .-454 ; 0x130 + } + frame[3] = 14; + 2f6: 10 93 75 00 sts 0x0075, r17 + frame[4] = 17; + 2fa: d0 92 76 00 sts 0x0076, r13 + for(uint8_t k=0;k<5;k++) { + render(); + 2fe: 18 df rcall .-464 ; 0x130 + 300: 17 df rcall .-466 ; 0x130 + 302: 16 df rcall .-468 ; 0x130 + 304: 15 df rcall .-470 ; 0x130 + 306: 14 df rcall .-472 ; 0x130 + } + frame[2] = 15; + 308: e0 92 74 00 sts 0x0074, r14 + frame[4] = 14; + 30c: 10 93 76 00 sts 0x0076, r17 + for(uint8_t k=0;k<5;k++) { + render(); + 310: 0f df rcall .-482 ; 0x130 + 312: 0e df rcall .-484 ; 0x130 + 314: 0d df rcall .-486 ; 0x130 + 316: 0c df rcall .-488 ; 0x130 + 318: 0b df rcall .-490 ; 0x130 + 31a: 01 50 subi r16, 0x01 ; 1 + frame[5] = 15; + for(uint8_t k=0;k<5;k++) { + render(); + } + } + for(uint8_t j=0;j<10;j++) { + 31c: b1 f6 brne .-84 ; 0x2ca + 31e: 06 e0 ldi r16, 0x06 ; 6 + 320: 10 e0 ldi r17, 0x00 ; 0 + 322: 44 24 eor r4, r4 + 324: 55 24 eor r5, r5 + for(uint8_t k=0;k<5;k++) { + render(); + } + } + for(uint8_t j=0;j<39;j++) { + frame[2] = 15; + 326: ff e0 ldi r31, 0x0F ; 15 + 328: cf 2e mov r12, r31 + frame[3] = 16; + 32a: e0 e1 ldi r30, 0x10 ; 16 + 32c: ae 2e mov r10, r30 + frame[4] = 17; + 32e: 71 e1 ldi r23, 0x11 ; 17 + 330: b7 2e mov r11, r23 + frame[5] = 15; + for(uint8_t k=0;k<6+(j*2);k++) { + if(k%3==0) { + 332: 63 e0 ldi r22, 0x03 ; 3 + 334: 86 2e mov r8, r22 + frame[2] = 15; + frame[3] = 16; + frame[4] = 17; + frame[5] = 15; + } else { + frame[0] = 14; + 336: 5e e0 ldi r21, 0x0E ; 14 + 338: d5 2e mov r13, r21 + frame[4] = 17; + frame[5] = 15; + for(uint8_t k=0;k<6+(j*2);k++) { + if(k%3==0) { + if(frame[2] == 14) { + frame[0] = 10; + 33a: 4a e0 ldi r20, 0x0A ; 10 + 33c: 94 2e mov r9, r20 + for(uint8_t k=0;k<5;k++) { + render(); + } + } + for(uint8_t j=0;j<39;j++) { + frame[2] = 15; + 33e: c0 92 74 00 sts 0x0074, r12 + frame[3] = 16; + 342: a0 92 75 00 sts 0x0075, r10 + frame[4] = 17; + 346: b0 92 76 00 sts 0x0076, r11 + frame[5] = 15; + 34a: c0 92 77 00 sts 0x0077, r12 + for(uint8_t k=0;k<6+(j*2);k++) { + 34e: ee 24 eor r14, r14 + 350: 20 c0 rjmp .+64 ; 0x392 + if(k%3==0) { + 352: 8e 2d mov r24, r14 + 354: 68 2d mov r22, r8 + 356: 6b d0 rcall .+214 ; 0x42e <__udivmodqi4> + 358: 99 23 and r25, r25 + 35a: c9 f4 brne .+50 ; 0x38e + if(frame[2] == 14) { + 35c: 80 91 74 00 lds r24, 0x0074 + 360: 8e 30 cpi r24, 0x0E ; 14 + 362: 59 f4 brne .+22 ; 0x37a + frame[0] = 10; + 364: 90 92 72 00 sts 0x0072, r9 + frame[2] = 15; + 368: c0 92 74 00 sts 0x0074, r12 + frame[3] = 16; + 36c: a0 92 75 00 sts 0x0075, r10 + frame[4] = 17; + 370: b0 92 76 00 sts 0x0076, r11 + frame[5] = 15; + 374: c0 92 77 00 sts 0x0077, r12 + 378: 0a c0 rjmp .+20 ; 0x38e + } else { + frame[0] = 14; + 37a: d0 92 72 00 sts 0x0072, r13 + frame[2] = 14; + 37e: d0 92 74 00 sts 0x0074, r13 + frame[3] = 14; + 382: d0 92 75 00 sts 0x0075, r13 + frame[4] = 14; + 386: d0 92 76 00 sts 0x0076, r13 + frame[5] = 14; + 38a: d0 92 77 00 sts 0x0077, r13 + } + } + render(); + 38e: d0 de rcall .-608 ; 0x130 + for(uint8_t j=0;j<39;j++) { + frame[2] = 15; + frame[3] = 16; + frame[4] = 17; + frame[5] = 15; + for(uint8_t k=0;k<6+(j*2);k++) { + 390: e3 94 inc r14 + 392: 8e 2d mov r24, r14 + 394: 90 e0 ldi r25, 0x00 ; 0 + 396: 80 17 cp r24, r16 + 398: 91 07 cpc r25, r17 + 39a: dc f2 brlt .-74 ; 0x352 + frame[5] = 14; + } + } + render(); + } + frame[2] = 14; + 39c: d0 92 74 00 sts 0x0074, r13 + frame[3] = 14; + 3a0: d0 92 75 00 sts 0x0075, r13 + frame[4] = 14; + 3a4: d0 92 76 00 sts 0x0076, r13 + frame[5] = 14; + 3a8: d0 92 77 00 sts 0x0077, r13 + for(uint8_t k=0;k<5+j;k++) { + 3ac: 77 24 eor r7, r7 + } + } + +} -00000284 <__divmodhi4>: - 284: 97 fb bst r25, 7 - 286: 09 2e mov r0, r25 - 288: 07 26 eor r0, r23 - 28a: 0a d0 rcall .+20 ; 0x2a0 <__divmodhi4_neg1> - 28c: 77 fd sbrc r23, 7 - 28e: 04 d0 rcall .+8 ; 0x298 <__divmodhi4_neg2> - 290: 0c d0 rcall .+24 ; 0x2aa <__udivmodhi4> - 292: 06 d0 rcall .+12 ; 0x2a0 <__divmodhi4_neg1> - 294: 00 20 and r0, r0 - 296: 1a f4 brpl .+6 ; 0x29e <__divmodhi4_exit> +int main(void) { + 3ae: 34 e0 ldi r19, 0x04 ; 4 + 3b0: e3 2e mov r14, r19 + 3b2: f1 2c mov r15, r1 + 3b4: e4 0c add r14, r4 + 3b6: f5 1c adc r15, r5 + } + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + frame[5] = 14; + for(uint8_t k=0;k<5+j;k++) { + 3b8: 02 c0 rjmp .+4 ; 0x3be + render(); + 3ba: ba de rcall .-652 ; 0x130 + } + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + frame[5] = 14; + for(uint8_t k=0;k<5+j;k++) { + 3bc: 73 94 inc r7 + 3be: 87 2d mov r24, r7 + 3c0: 90 e0 ldi r25, 0x00 ; 0 + 3c2: e8 16 cp r14, r24 + 3c4: f9 06 cpc r15, r25 + 3c6: cc f7 brge .-14 ; 0x3ba + 3c8: 08 94 sec + 3ca: 41 1c adc r4, r1 + 3cc: 51 1c adc r5, r1 + 3ce: 0e 5f subi r16, 0xFE ; 254 + 3d0: 1f 4f sbci r17, 0xFF ; 255 + frame[4] = 14; + for(uint8_t k=0;k<5;k++) { + render(); + } + } + for(uint8_t j=0;j<39;j++) { + 3d2: e7 e2 ldi r30, 0x27 ; 39 + 3d4: 4e 16 cp r4, r30 + 3d6: 51 04 cpc r5, r1 + 3d8: 09 f0 breq .+2 ; 0x3dc + 3da: b1 cf rjmp .-158 ; 0x33e + for(uint8_t k=0;k<5+j;k++) { + render(); + } + } + while(1) { + frame[0] = 10; + 3dc: 2a e0 ldi r18, 0x0A ; 10 + 3de: e2 2e mov r14, r18 + 3e0: 9a e0 ldi r25, 0x0A ; 10 + 3e2: d9 2e mov r13, r25 + 3e4: d0 92 72 00 sts 0x0072, r13 + for(uint8_t j=1;j<=99;j++) { + 3e8: 11 e0 ldi r17, 0x01 ; 1 + frame[2] = (uint8_t)(j/10); + 3ea: 81 2f mov r24, r17 + 3ec: 6e 2d mov r22, r14 + 3ee: 1f d0 rcall .+62 ; 0x42e <__udivmodqi4> + 3f0: 80 93 74 00 sts 0x0074, r24 + frame[3] = (uint8_t)(j%10); + 3f4: 90 93 75 00 sts 0x0075, r25 + for(uint8_t i=0;i<=59;i++) { + 3f8: 00 e0 ldi r16, 0x00 ; 0 + frame[4] = (uint8_t)(i/10); + 3fa: 80 2f mov r24, r16 + 3fc: 6e 2d mov r22, r14 + 3fe: 17 d0 rcall .+46 ; 0x42e <__udivmodqi4> + 400: 80 93 76 00 sts 0x0076, r24 + frame[5] = (uint8_t)(i%10); + 404: 90 93 77 00 sts 0x0077, r25 + frame[0] = (i%2==0)?10:14; + 408: 00 ff sbrs r16, 0 + 40a: 02 c0 rjmp .+4 ; 0x410 + 40c: 8e e0 ldi r24, 0x0E ; 14 + 40e: 01 c0 rjmp .+2 ; 0x412 + 410: 8a e0 ldi r24, 0x0A ; 10 + 412: 80 93 72 00 sts 0x0072, r24 + 416: 82 e5 ldi r24, 0x52 ; 82 + 418: c8 2e mov r12, r24 + for(uint8_t k=0;k<82;k++) { + render(); + 41a: 8a de rcall .-748 ; 0x130 + 41c: ca 94 dec r12 + frame[3] = (uint8_t)(j%10); + for(uint8_t i=0;i<=59;i++) { + frame[4] = (uint8_t)(i/10); + frame[5] = (uint8_t)(i%10); + frame[0] = (i%2==0)?10:14; + for(uint8_t k=0;k<82;k++) { + 41e: e9 f7 brne .-6 ; 0x41a + while(1) { + frame[0] = 10; + for(uint8_t j=1;j<=99;j++) { + frame[2] = (uint8_t)(j/10); + frame[3] = (uint8_t)(j%10); + for(uint8_t i=0;i<=59;i++) { + 420: 0f 5f subi r16, 0xFF ; 255 + 422: 0c 33 cpi r16, 0x3C ; 60 + 424: 51 f7 brne .-44 ; 0x3fa + render(); + } + } + while(1) { + frame[0] = 10; + for(uint8_t j=1;j<=99;j++) { + 426: 1f 5f subi r17, 0xFF ; 255 + 428: 14 36 cpi r17, 0x64 ; 100 + 42a: f9 f6 brne .-66 ; 0x3ea + 42c: db cf rjmp .-74 ; 0x3e4 -00000298 <__divmodhi4_neg2>: - 298: 70 95 com r23 - 29a: 61 95 neg r22 - 29c: 7f 4f sbci r23, 0xFF ; 255 +0000042e <__udivmodqi4>: + 42e: 99 1b sub r25, r25 + 430: 79 e0 ldi r23, 0x09 ; 9 + 432: 04 c0 rjmp .+8 ; 0x43c <__udivmodqi4_ep> -0000029e <__divmodhi4_exit>: - 29e: 08 95 ret +00000434 <__udivmodqi4_loop>: + 434: 99 1f adc r25, r25 + 436: 96 17 cp r25, r22 + 438: 08 f0 brcs .+2 ; 0x43c <__udivmodqi4_ep> + 43a: 96 1b sub r25, r22 -000002a0 <__divmodhi4_neg1>: - 2a0: f6 f7 brtc .-4 ; 0x29e <__divmodhi4_exit> - 2a2: 90 95 com r25 - 2a4: 81 95 neg r24 - 2a6: 9f 4f sbci r25, 0xFF ; 255 - 2a8: 08 95 ret +0000043c <__udivmodqi4_ep>: + 43c: 88 1f adc r24, r24 + 43e: 7a 95 dec r23 + 440: c9 f7 brne .-14 ; 0x434 <__udivmodqi4_loop> + 442: 80 95 com r24 + 444: 08 95 ret -000002aa <__udivmodhi4>: - 2aa: aa 1b sub r26, r26 - 2ac: bb 1b sub r27, r27 - 2ae: 51 e1 ldi r21, 0x11 ; 17 - 2b0: 07 c0 rjmp .+14 ; 0x2c0 <__udivmodhi4_ep> +00000446 <__divmodhi4>: + 446: 97 fb bst r25, 7 + 448: 09 2e mov r0, r25 + 44a: 07 26 eor r0, r23 + 44c: 0a d0 rcall .+20 ; 0x462 <__divmodhi4_neg1> + 44e: 77 fd sbrc r23, 7 + 450: 04 d0 rcall .+8 ; 0x45a <__divmodhi4_neg2> + 452: 0c d0 rcall .+24 ; 0x46c <__udivmodhi4> + 454: 06 d0 rcall .+12 ; 0x462 <__divmodhi4_neg1> + 456: 00 20 and r0, r0 + 458: 1a f4 brpl .+6 ; 0x460 <__divmodhi4_exit> -000002b2 <__udivmodhi4_loop>: - 2b2: aa 1f adc r26, r26 - 2b4: bb 1f adc r27, r27 - 2b6: a6 17 cp r26, r22 - 2b8: b7 07 cpc r27, r23 - 2ba: 10 f0 brcs .+4 ; 0x2c0 <__udivmodhi4_ep> - 2bc: a6 1b sub r26, r22 - 2be: b7 0b sbc r27, r23 +0000045a <__divmodhi4_neg2>: + 45a: 70 95 com r23 + 45c: 61 95 neg r22 + 45e: 7f 4f sbci r23, 0xFF ; 255 -000002c0 <__udivmodhi4_ep>: - 2c0: 88 1f adc r24, r24 - 2c2: 99 1f adc r25, r25 - 2c4: 5a 95 dec r21 - 2c6: a9 f7 brne .-22 ; 0x2b2 <__udivmodhi4_loop> - 2c8: 80 95 com r24 - 2ca: 90 95 com r25 - 2cc: bc 01 movw r22, r24 - 2ce: cd 01 movw r24, r26 - 2d0: 08 95 ret +00000460 <__divmodhi4_exit>: + 460: 08 95 ret -000002d2 <_exit>: - 2d2: f8 94 cli +00000462 <__divmodhi4_neg1>: + 462: f6 f7 brtc .-4 ; 0x460 <__divmodhi4_exit> + 464: 90 95 com r25 + 466: 81 95 neg r24 + 468: 9f 4f sbci r25, 0xFF ; 255 + 46a: 08 95 ret -000002d4 <__stop_program>: - 2d4: ff cf rjmp .-2 ; 0x2d4 <__stop_program> +0000046c <__udivmodhi4>: + 46c: aa 1b sub r26, r26 + 46e: bb 1b sub r27, r27 + 470: 51 e1 ldi r21, 0x11 ; 17 + 472: 07 c0 rjmp .+14 ; 0x482 <__udivmodhi4_ep> + +00000474 <__udivmodhi4_loop>: + 474: aa 1f adc r26, r26 + 476: bb 1f adc r27, r27 + 478: a6 17 cp r26, r22 + 47a: b7 07 cpc r27, r23 + 47c: 10 f0 brcs .+4 ; 0x482 <__udivmodhi4_ep> + 47e: a6 1b sub r26, r22 + 480: b7 0b sbc r27, r23 + +00000482 <__udivmodhi4_ep>: + 482: 88 1f adc r24, r24 + 484: 99 1f adc r25, r25 + 486: 5a 95 dec r21 + 488: a9 f7 brne .-22 ; 0x474 <__udivmodhi4_loop> + 48a: 80 95 com r24 + 48c: 90 95 com r25 + 48e: bc 01 movw r22, r24 + 490: cd 01 movw r24, r26 + 492: 08 95 ret + +00000494 <_exit>: + 494: f8 94 cli + +00000496 <__stop_program>: + 496: ff cf rjmp .-2 ; 0x496 <__stop_program> diff --git a/Timer/default/Timer.map b/Timer/default/Timer.map index 8d3bc3a..ddac2f6 100644 --- a/Timer/default/Timer.map +++ b/Timer/default/Timer.map @@ -1,5 +1,7 @@ Archive member included because of file (symbol) +e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + Timer.o (__udivmodqi4) e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) Timer.o (__divmodhi4) e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) @@ -120,7 +122,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .rela.plt *(.rela.plt) -.text 0x00000000 0x2d6 +.text 0x00000000 0x498 *(.vectors) .vectors 0x00000000 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o 0x00000000 __vector_default @@ -194,31 +196,34 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00000058 __vector_10 0x00000058 __vector_16 0x00000058 __vector_18 - .text 0x0000005a 0x22a Timer.o + .text 0x0000005a 0x3d4 Timer.o 0x0000005a display 0x00000130 render 0x00000164 __vector_13 0x000001b4 main - .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) - .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) - .text 0x00000284 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) - 0x00000284 . = ALIGN (0x2) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text 0x0000042e 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x0000042e . = ALIGN (0x2) *(.text.*) - .text.libgcc 0x00000284 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) - 0x00000284 _div - 0x00000284 __divmodhi4 - .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .text.libgcc 0x000002aa 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) - .text.libgcc 0x000002aa 0x28 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) - 0x000002aa __udivmodhi4 - 0x000002d2 . = ALIGN (0x2) + .text.libgcc 0x0000042e 0x18 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + 0x0000042e __udivmodqi4 + .text.libgcc 0x00000446 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) + 0x00000446 _div + 0x00000446 __divmodhi4 + .text.libgcc 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text.libgcc 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .text.libgcc 0x0000046c 0x28 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodhi4.o) + 0x0000046c __udivmodhi4 + 0x00000494 . = ALIGN (0x2) *(.fini9) - .fini9 0x000002d2 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - 0x000002d2 _exit - 0x000002d2 exit + .fini9 0x00000494 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + 0x00000494 _exit + 0x00000494 exit *(.fini9) *(.fini8) *(.fini8) @@ -237,17 +242,18 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000002d2 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .fini0 0x00000494 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) *(.fini0) - 0x000002d6 _etext = . + 0x00000498 _etext = . -.data 0x00800060 0x18 load address 0x000002d6 +.data 0x00800060 0x18 load address 0x00000498 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o .data 0x00800060 0x18 Timer.o 0x00800060 segs 0x00800072 frame + .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) .data 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) @@ -267,6 +273,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .bss 0x00800078 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o .bss 0x00800078 0x1 Timer.o 0x00800078 var + .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_divmodhi4.o) .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) .bss 0x00800079 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) @@ -275,8 +282,8 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.bss*) *(COMMON) 0x00800079 PROVIDE (__bss_end, .) - 0x000002d6 __data_load_start = LOADADDR (.data) - 0x000002ee __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000498 __data_load_start = LOADADDR (.data) + 0x000004b0 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x00800079 0x0 0x00800079 PROVIDE (__noinit_start, .) @@ -347,18 +354,18 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .debug_pubnames 0x00000000 0x5d Timer.o -.debug_info 0x00000000 0x309 +.debug_info 0x00000000 0x463 *(.debug_info) - .debug_info 0x00000000 0x309 Timer.o + .debug_info 0x00000000 0x463 Timer.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x1cd +.debug_abbrev 0x00000000 0x1e3 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x1cd Timer.o + .debug_abbrev 0x00000000 0x1e3 Timer.o -.debug_line 0x00000000 0x33a +.debug_line 0x00000000 0x5a9 *(.debug_line) - .debug_line 0x00000000 0x33a Timer.o + .debug_line 0x00000000 0x5a9 Timer.o .debug_frame 0x00000000 0x50 *(.debug_frame) @@ -369,9 +376,9 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .debug_str 0x00000000 0x102 Timer.o 0x13b (size before relaxing) -.debug_loc 0x00000000 0xde +.debug_loc 0x00000000 0x3fb *(.debug_loc) - .debug_loc 0x00000000 0xde Timer.o + .debug_loc 0x00000000 0x3fb Timer.o .debug_macinfo *(.debug_macinfo) @@ -382,3 +389,6 @@ LOAD linker stubs 0x00000000 0x2b .debug_pubtypes 0x00000000 0x2b Timer.o + +.debug_ranges 0x00000000 0x18 + .debug_ranges 0x00000000 0x18 Timer.o diff --git a/Timer/timer.aws b/Timer/timer.aws index f46552c..f0d9ffa 100644 --- a/Timer/timer.aws +++ b/Timer/timer.aws @@ -1 +1 @@ - +