main.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 000002d8 00800100 000011b8 0000124c 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 000011b8 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 000000cc 008003d8 008003d8 00001524 2**0 ALLOC 3 .stab 00000378 00000000 00000000 00001524 2**2 CONTENTS, READONLY, DEBUGGING 4 .stabstr 00000071 00000000 00000000 0000189c 2**0 CONTENTS, READONLY, DEBUGGING 5 .debug_aranges 00000020 00000000 00000000 0000190d 2**0 CONTENTS, READONLY, DEBUGGING 6 .debug_pubnames 00000207 00000000 00000000 0000192d 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_info 000007c7 00000000 00000000 00001b34 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_abbrev 0000020c 00000000 00000000 000022fb 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_line 00000d5d 00000000 00000000 00002507 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_frame 000000a0 00000000 00000000 00003264 2**2 CONTENTS, READONLY, DEBUGGING 11 .debug_str 00000287 00000000 00000000 00003304 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_loc 00000453 00000000 00000000 0000358b 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> 2: 70 c8 rjmp .-3872 ; 0xfffff0e4 <__eeprom_end+0xff7ef0e4> 4: 9c c8 rjmp .-3784 ; 0xfffff13e <__eeprom_end+0xff7ef13e> 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> 16: 29 c0 rjmp .+82 ; 0x6a <__bad_interrupt> 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> 00000034 <__ctors_end>: 34: 11 24 eor r1, r1 36: 1f be out 0x3f, r1 ; 63 38: cf ef ldi r28, 0xFF ; 255 3a: d4 e0 ldi r29, 0x04 ; 4 3c: de bf out 0x3e, r29 ; 62 3e: cd bf out 0x3d, r28 ; 61 00000040 <__do_copy_data>: 40: 13 e0 ldi r17, 0x03 ; 3 42: a0 e0 ldi r26, 0x00 ; 0 44: b1 e0 ldi r27, 0x01 ; 1 46: e8 eb ldi r30, 0xB8 ; 184 48: f1 e1 ldi r31, 0x11 ; 17 4a: 02 c0 rjmp .+4 ; 0x50 <.do_copy_data_start> 0000004c <.do_copy_data_loop>: 4c: 05 90 lpm r0, Z+ 4e: 0d 92 st X+, r0 00000050 <.do_copy_data_start>: 50: a8 3d cpi r26, 0xD8 ; 216 52: b1 07 cpc r27, r17 54: d9 f7 brne .-10 ; 0x4c <.do_copy_data_loop> 00000056 <__do_clear_bss>: 56: 14 e0 ldi r17, 0x04 ; 4 58: a8 ed ldi r26, 0xD8 ; 216 5a: b3 e0 ldi r27, 0x03 ; 3 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> 0000005e <.do_clear_bss_loop>: 5e: 1d 92 st X+, r1 00000060 <.do_clear_bss_start>: 60: a4 3a cpi r26, 0xA4 ; 164 62: b1 07 cpc r27, r17 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> 66: f6 d1 rcall .+1004 ; 0x454
68: a6 c8 rjmp .-3764 ; 0xfffff1b6 <__eeprom_end+0xff7ef1b6> 0000006a <__bad_interrupt>: 6a: ca cf rjmp .-108 ; 0x0 <__vectors> 0000006c : //----------------------------------------------------------------------------- // copy bitmap //----------------------------------------------------------------------------- extern void GR_Copy(unsigned char* source,int start,int max) { 6c: dc 01 movw r26, r24 int i; for(i=0;i 74: fb 01 movw r30, r22 76: e9 5c subi r30, 0xC9 ; 201 78: fe 4f sbci r31, 0xFE ; 254 7a: 20 e0 ldi r18, 0x00 ; 0 7c: 30 e0 ldi r19, 0x00 ; 0 { dmem[start+i]=*source; 7e: 8d 91 ld r24, X+ 80: 81 93 st Z+, r24 82: 2f 5f subi r18, 0xFF ; 255 84: 3f 4f sbci r19, 0xFF ; 255 86: 42 17 cp r20, r18 88: 53 07 cpc r21, r19 8a: c9 f7 brne .-14 ; 0x7e 8c: 08 95 ret 0000008e : source++; } } //----------------------------------------------------------------------------- // Clear Graphic Area //----------------------------------------------------------------------------- extern void GR_Clear() { 8e: e7 e3 ldi r30, 0x37 ; 55 90: f1 e0 ldi r31, 0x01 ; 1 92: 8f e4 ldi r24, 0x4F ; 79 94: 92 e0 ldi r25, 0x02 ; 2 int i; for(i=0;i 9e: 08 95 ret 000000a0 : } } //----------------------------------------------------------------------------- // Show and Hide Graphic area and Background //----------------------------------------------------------------------------- #define SHOWGRAPHIC showgraphic=1 #define HIDEGRAPHIC showgraphic=0 #define SHOWGRAPHICBACK showgraphicb=1 #define HIDEGRAPHICBACK showgraphicb=0 //----------------------------------------------------------------------------- // Decode64 //----------------------------------------------------------------------------- extern void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) { a0: ef 92 push r14 a2: ff 92 push r15 a4: 1f 93 push r17 a6: cf 93 push r28 a8: df 93 push r29 aa: ec 01 movw r28, r24 ac: 16 2f mov r17, r22 unsigned char a,b,c,d; unsigned char ptr = 0; unsigned char x,y,z; while(len) ae: 66 23 and r22, r22 b0: 09 f4 brne .+2 ; 0xb4 b2: 7b c0 rjmp .+246 ; 0x1aa { a = RxdBuffer[ptrIn++] - '='; b4: a4 ef ldi r26, 0xF4 ; 244 b6: b3 e0 ldi r27, 0x03 ; 3 b8: fd 01 movw r30, r26 ba: e4 0f add r30, r20 bc: f1 1d adc r31, r1 be: 50 81 ld r21, Z c0: 84 2f mov r24, r20 c2: 8f 5f subi r24, 0xFF ; 255 b = RxdBuffer[ptrIn++] - '='; c4: fd 01 movw r30, r26 c6: e8 0f add r30, r24 c8: f1 1d adc r31, r1 ca: 30 81 ld r19, Z cc: 8f 5f subi r24, 0xFF ; 255 c = RxdBuffer[ptrIn++] - '='; ce: fd 01 movw r30, r26 d0: e8 0f add r30, r24 d2: f1 1d adc r31, r1 d4: e0 81 ld r30, Z d6: 8f 5f subi r24, 0xFF ; 255 d = RxdBuffer[ptrIn++] - '='; d8: a8 0f add r26, r24 da: b1 1d adc r27, r1 dc: ac 91 ld r26, X de: 4c 5f subi r20, 0xFC ; 252 if(ptrIn > max - 2) break; e0: 82 2f mov r24, r18 e2: 99 27 eor r25, r25 e4: 0f 2e mov r0, r31 e6: fe ef ldi r31, 0xFE ; 254 e8: ef 2e mov r14, r31 ea: ff ef ldi r31, 0xFF ; 255 ec: ff 2e mov r15, r31 ee: f0 2d mov r31, r0 f0: e8 0e add r14, r24 f2: f9 1e adc r15, r25 f4: 84 2f mov r24, r20 f6: 99 27 eor r25, r25 f8: e8 16 cp r14, r24 fa: f9 06 cpc r15, r25 fc: 0c f4 brge .+2 ; 0x100 fe: 55 c0 rjmp .+170 ; 0x1aa 100: 85 2f mov r24, r21 102: 8d 53 subi r24, 0x3D ; 61 104: 3d 53 subi r19, 0x3D ; 61 106: 5e 2f mov r21, r30 108: 5d 53 subi r21, 0x3D ; 61 10a: ad 53 subi r26, 0x3D ; 61 10c: 20 e0 ldi r18, 0x00 ; 0 10e: 64 ef ldi r22, 0xF4 ; 244 110: 73 e0 ldi r23, 0x03 ; 3 112: 20 c0 rjmp .+64 ; 0x154 114: fb 01 movw r30, r22 116: e4 0f add r30, r20 118: f1 1d adc r31, r1 11a: b0 81 ld r27, Z 11c: 84 2f mov r24, r20 11e: 8f 5f subi r24, 0xFF ; 255 120: fb 01 movw r30, r22 122: e8 0f add r30, r24 124: f1 1d adc r31, r1 126: 30 81 ld r19, Z 128: 8f 5f subi r24, 0xFF ; 255 12a: fb 01 movw r30, r22 12c: e8 0f add r30, r24 12e: f1 1d adc r31, r1 130: 50 81 ld r21, Z 132: 8f 5f subi r24, 0xFF ; 255 134: fb 01 movw r30, r22 136: e8 0f add r30, r24 138: f1 1d adc r31, r1 13a: a0 81 ld r26, Z 13c: 4c 5f subi r20, 0xFC ; 252 13e: 84 2f mov r24, r20 140: 99 27 eor r25, r25 142: e8 16 cp r14, r24 144: f9 06 cpc r15, r25 146: 8c f1 brlt .+98 ; 0x1aa 148: 8b 2f mov r24, r27 14a: 8d 53 subi r24, 0x3D ; 61 14c: 3d 53 subi r19, 0x3D ; 61 14e: 5d 53 subi r21, 0x3D ; 61 150: ad 53 subi r26, 0x3D ; 61 152: 2d 5f subi r18, 0xFD ; 253 x = (a << 2) | (b >> 4); y = ((b & 0x0f) << 4) | (c >> 2); z = ((c & 0x03) << 6) | d; if(len--) ptrOut[ptr++] = x; else break; 154: fe 01 movw r30, r28 156: e2 0f add r30, r18 158: f1 1d adc r31, r1 15a: 88 0f add r24, r24 15c: 88 0f add r24, r24 15e: 93 2f mov r25, r19 160: 92 95 swap r25 162: 9f 70 andi r25, 0x0F ; 15 164: 89 2b or r24, r25 166: 80 83 st Z, r24 if(len--) ptrOut[ptr++] = y; else break; 168: 11 30 cpi r17, 0x01 ; 1 16a: f9 f0 breq .+62 ; 0x1aa 16c: 82 2f mov r24, r18 16e: 8f 5f subi r24, 0xFF ; 255 170: fe 01 movw r30, r28 172: e8 0f add r30, r24 174: f1 1d adc r31, r1 176: 83 2f mov r24, r19 178: 82 95 swap r24 17a: 80 7f andi r24, 0xF0 ; 240 17c: 95 2f mov r25, r21 17e: 96 95 lsr r25 180: 96 95 lsr r25 182: 89 2b or r24, r25 184: 80 83 st Z, r24 186: 13 50 subi r17, 0x03 ; 3 if(len--) ptrOut[ptr++] = z; else break; 188: 1f 3f cpi r17, 0xFF ; 255 18a: 79 f0 breq .+30 ; 0x1aa 18c: 82 2f mov r24, r18 18e: 8e 5f subi r24, 0xFE ; 254 190: fe 01 movw r30, r28 192: e8 0f add r30, r24 194: f1 1d adc r31, r1 196: 85 2f mov r24, r21 198: 82 95 swap r24 19a: 88 0f add r24, r24 19c: 88 0f add r24, r24 19e: 80 7c andi r24, 0xC0 ; 192 1a0: 8a 2b or r24, r26 1a2: 80 83 st Z, r24 1a4: 11 23 and r17, r17 1a6: 09 f0 breq .+2 ; 0x1aa 1a8: b5 cf rjmp .-150 ; 0x114 1aa: df 91 pop r29 1ac: cf 91 pop r28 1ae: 1f 91 pop r17 1b0: ff 90 pop r15 1b2: ef 90 pop r14 1b4: 08 95 ret 000001b6 : } } //----------------------------------------------------------------------------- // process RX Data //----------------------------------------------------------------------------- extern void process_rxdata(unsigned char c) { 1b6: 80 93 e1 03 sts 0x03E1, r24 static unsigned int crc; static unsigned char crc1,crc2,buf_ptr; static unsigned char UartState = 0; unsigned char CrcOkay = 0; SioTmp=c; if(buf_ptr >= MAX_RX_BUF) 1ba: 50 91 e6 03 lds r21, 0x03E6 1be: 54 36 cpi r21, 0x64 ; 100 1c0: 10 f0 brcs .+4 ; 0x1c6 UartState = 0; 1c2: 10 92 e5 03 sts 0x03E5, r1 if(SioTmp == '\r' && UartState == 2) 1c6: 80 91 e1 03 lds r24, 0x03E1 1ca: 8d 30 cpi r24, 0x0D ; 13 1cc: 09 f0 breq .+2 ; 0x1d0 1ce: 5c c0 rjmp .+184 ; 0x288 1d0: 80 91 e5 03 lds r24, 0x03E5 1d4: 82 30 cpi r24, 0x02 ; 2 1d6: 09 f0 breq .+2 ; 0x1da 1d8: 57 c0 rjmp .+174 ; 0x288 { UartState = 0; 1da: 10 92 e5 03 sts 0x03E5, r1 crc -= RxdBuffer[buf_ptr-2]; 1de: 65 2f mov r22, r21 1e0: 77 27 eor r23, r23 1e2: fb 01 movw r30, r22 1e4: 32 97 sbiw r30, 0x02 ; 2 1e6: 24 ef ldi r18, 0xF4 ; 244 1e8: 33 e0 ldi r19, 0x03 ; 3 1ea: e2 0f add r30, r18 1ec: f3 1f adc r31, r19 1ee: 40 81 ld r20, Z crc -= RxdBuffer[buf_ptr-1]; 1f0: cb 01 movw r24, r22 1f2: 01 97 sbiw r24, 0x01 ; 1 1f4: dc 01 movw r26, r24 1f6: a2 0f add r26, r18 1f8: b3 1f adc r27, r19 1fa: 2c 91 ld r18, X crc %= 4096; 1fc: 80 91 e9 03 lds r24, 0x03E9 200: 90 91 ea 03 lds r25, 0x03EA 204: 84 1b sub r24, r20 206: 91 09 sbc r25, r1 208: 82 1b sub r24, r18 20a: 91 09 sbc r25, r1 20c: 9f 70 andi r25, 0x0F ; 15 20e: 90 93 ea 03 sts 0x03EA, r25 212: 80 93 e9 03 sts 0x03E9, r24 crc1 = '=' + crc / 64; 216: 9c 01 movw r18, r24 218: 00 24 eor r0, r0 21a: 22 0f add r18, r18 21c: 33 1f adc r19, r19 21e: 00 1c adc r0, r0 220: 22 0f add r18, r18 222: 33 1f adc r19, r19 224: 00 1c adc r0, r0 226: 23 2f mov r18, r19 228: 30 2d mov r19, r0 22a: 23 5c subi r18, 0xC3 ; 195 22c: 20 93 e8 03 sts 0x03E8, r18 crc2 = '=' + crc % 64; 230: 8f 73 andi r24, 0x3F ; 63 232: 38 2f mov r19, r24 234: 33 5c subi r19, 0xC3 ; 195 236: 30 93 e7 03 sts 0x03E7, r19 CrcOkay = 0; if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) 23a: 80 81 ld r24, Z 23c: 28 17 cp r18, r24 23e: 29 f4 brne .+10 ; 0x24a 240: 8c 91 ld r24, X 242: 38 17 cp r19, r24 244: 11 f4 brne .+4 ; 0x24a 246: 91 e0 ldi r25, 0x01 ; 1 248: 09 c0 rjmp .+18 ; 0x25c { CrcOkay = 1; } else { CrcOkay = 0; CntCrcError++; 24a: 80 91 e3 03 lds r24, 0x03E3 24e: 8f 5f subi r24, 0xFF ; 255 250: 80 93 e3 03 sts 0x03E3, r24 display_line1[1]='E'; 254: 85 e4 ldi r24, 0x45 ; 69 256: 80 93 59 04 sts 0x0459, r24 25a: 90 e0 ldi r25, 0x00 ; 0 } if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet 25c: 80 91 e2 03 lds r24, 0x03E2 260: 88 23 and r24, r24 262: 09 f0 breq .+2 ; 0x266 264: 7e c0 rjmp .+252 ; 0x362 266: 99 23 and r25, r25 268: 09 f4 brne .+2 ; 0x26c 26a: 7b c0 rjmp .+246 ; 0x362 { NeuerDatensatzEmpfangen = 1; 26c: 81 e0 ldi r24, 0x01 ; 1 26e: 80 93 e2 03 sts 0x03E2, r24 AnzahlEmpfangsBytes = buf_ptr; 272: 50 93 e4 03 sts 0x03E4, r21 RxdBuffer[buf_ptr] = '\r'; 276: fb 01 movw r30, r22 278: ec 50 subi r30, 0x0C ; 12 27a: fc 4f sbci r31, 0xFC ; 252 27c: 8d e0 ldi r24, 0x0D ; 13 27e: 80 83 st Z, r24 display_line1[1]='R'; 280: 82 e5 ldi r24, 0x52 ; 82 282: 80 93 59 04 sts 0x0459, r24 286: 6d c0 rjmp .+218 ; 0x362 } } else switch(UartState) 288: 80 91 e5 03 lds r24, 0x03E5 28c: 81 30 cpi r24, 0x01 ; 1 28e: 31 f1 breq .+76 ; 0x2dc 290: 81 30 cpi r24, 0x01 ; 1 292: 20 f0 brcs .+8 ; 0x29c 294: 82 30 cpi r24, 0x02 ; 2 296: 09 f0 breq .+2 ; 0x29a 298: 5f c0 rjmp .+190 ; 0x358 29a: 3e c0 rjmp .+124 ; 0x318 { case 0: if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet 29c: 80 91 e1 03 lds r24, 0x03E1 2a0: 83 32 cpi r24, 0x23 ; 35 2a2: 39 f4 brne .+14 ; 0x2b2 2a4: 80 91 e2 03 lds r24, 0x03E2 2a8: 88 23 and r24, r24 2aa: 19 f4 brne .+6 ; 0x2b2 2ac: 81 e0 ldi r24, 0x01 ; 1 2ae: 80 93 e5 03 sts 0x03E5, r24 buf_ptr = 0; RxdBuffer[buf_ptr++] = SioTmp; 2b2: 80 91 e1 03 lds r24, 0x03E1 2b6: 80 93 f4 03 sts 0x03F4, r24 2ba: 81 e0 ldi r24, 0x01 ; 1 2bc: 80 93 e6 03 sts 0x03E6, r24 crc = SioTmp; 2c0: 80 91 e1 03 lds r24, 0x03E1 2c4: 99 27 eor r25, r25 2c6: 90 93 ea 03 sts 0x03EA, r25 2ca: 80 93 e9 03 sts 0x03E9, r24 display_line1[2]='A'; 2ce: 81 e4 ldi r24, 0x41 ; 65 2d0: 80 93 5a 04 sts 0x045A, r24 display_line1[1]='X'; 2d4: 88 e5 ldi r24, 0x58 ; 88 2d6: 80 93 59 04 sts 0x0459, r24 2da: 43 c0 rjmp .+134 ; 0x362 break; case 1: // Adresse auswerten UartState++; 2dc: 82 e0 ldi r24, 0x02 ; 2 2de: 80 93 e5 03 sts 0x03E5, r24 RxdBuffer[buf_ptr++] = SioTmp; 2e2: 80 91 e1 03 lds r24, 0x03E1 2e6: e4 ef ldi r30, 0xF4 ; 244 2e8: f3 e0 ldi r31, 0x03 ; 3 2ea: e5 0f add r30, r21 2ec: f1 1d adc r31, r1 2ee: 80 83 st Z, r24 2f0: 85 2f mov r24, r21 2f2: 8f 5f subi r24, 0xFF ; 255 2f4: 80 93 e6 03 sts 0x03E6, r24 crc += SioTmp; 2f8: 20 91 e1 03 lds r18, 0x03E1 2fc: 80 91 e9 03 lds r24, 0x03E9 300: 90 91 ea 03 lds r25, 0x03EA 304: 82 0f add r24, r18 306: 91 1d adc r25, r1 308: 90 93 ea 03 sts 0x03EA, r25 30c: 80 93 e9 03 sts 0x03E9, r24 display_line1[2]='B'; 310: 82 e4 ldi r24, 0x42 ; 66 312: 80 93 5a 04 sts 0x045A, r24 316: 25 c0 rjmp .+74 ; 0x362 break; case 2: // Eingangsdaten sammeln RxdBuffer[buf_ptr] = SioTmp; 318: 80 91 e1 03 lds r24, 0x03E1 31c: e4 ef ldi r30, 0xF4 ; 244 31e: f3 e0 ldi r31, 0x03 ; 3 320: e5 0f add r30, r21 322: f1 1d adc r31, r1 324: 80 83 st Z, r24 if(buf_ptr < MAX_RX_BUF) buf_ptr++; 326: 54 36 cpi r21, 0x64 ; 100 328: 28 f4 brcc .+10 ; 0x334 32a: 85 2f mov r24, r21 32c: 8f 5f subi r24, 0xFF ; 255 32e: 80 93 e6 03 sts 0x03E6, r24 332: 02 c0 rjmp .+4 ; 0x338 else UartState = 0; 334: 10 92 e5 03 sts 0x03E5, r1 crc += SioTmp; 338: 80 91 e1 03 lds r24, 0x03E1 33c: 20 91 e9 03 lds r18, 0x03E9 340: 30 91 ea 03 lds r19, 0x03EA 344: 28 0f add r18, r24 346: 31 1d adc r19, r1 348: 30 93 ea 03 sts 0x03EA, r19 34c: 20 93 e9 03 sts 0x03E9, r18 display_line1[2]='C'; 350: 83 e4 ldi r24, 0x43 ; 67 352: 80 93 5a 04 sts 0x045A, r24 356: 05 c0 rjmp .+10 ; 0x362 break; default: UartState = 0; 358: 10 92 e5 03 sts 0x03E5, r1 display_line1[2]='D'; 35c: 84 e4 ldi r24, 0x44 ; 68 35e: 80 93 5a 04 sts 0x045A, r24 break; } if(rxtx[8]==0x00) 362: 80 91 0a 01 lds r24, 0x010A 366: 88 23 and r24, r24 368: 21 f4 brne .+8 ; 0x372 rxtx[8]=0x01; 36a: 81 e0 ldi r24, 0x01 ; 1 36c: 80 93 0a 01 sts 0x010A, r24 370: 08 95 ret else rxtx[8]=0x00; 372: 10 92 0a 01 sts 0x010A, r1 376: 08 95 ret 00000378 : } //----------------------------------------------------------------------------- // convert_uint16 //----------------------------------------------------------------------------- extern void convert_uint16(unsigned char * c,int len, unsigned int value) { 378: af 92 push r10 37a: bf 92 push r11 37c: cf 92 push r12 37e: df 92 push r13 380: ef 92 push r14 382: ff 92 push r15 384: 0f 93 push r16 386: 1f 93 push r17 388: cf 93 push r28 38a: df 93 push r29 38c: cd b7 in r28, 0x3d ; 61 38e: de b7 in r29, 0x3e ; 62 390: 27 97 sbiw r28, 0x07 ; 7 392: 0f b6 in r0, 0x3f ; 63 394: f8 94 cli 396: de bf out 0x3e, r29 ; 62 398: 0f be out 0x3f, r0 ; 63 39a: cd bf out 0x3d, r28 ; 61 39c: 6c 01 movw r12, r24 39e: 7b 01 movw r14, r22 int tempvalue, i; char c1[7]; if(len<1) return; 3a0: 16 16 cp r1, r22 3a2: 17 06 cpc r1, r23 3a4: 0c f0 brlt .+2 ; 0x3a8 3a6: 45 c0 rjmp .+138 ; 0x432 3a8: 80 e0 ldi r24, 0x00 ; 0 3aa: 90 e0 ldi r25, 0x00 ; 0 3ac: 9e 01 movw r18, r28 3ae: 2f 5f subi r18, 0xFF ; 255 3b0: 3f 4f sbci r19, 0xFF ; 255 3b2: 60 e3 ldi r22, 0x30 ; 48 for(i=0;i } i=len-1; while(value>0) { 3c4: 41 15 cp r20, r1 3c6: 51 05 cpc r21, r1 3c8: 19 f1 breq .+70 ; 0x410 3ca: 87 01 movw r16, r14 3cc: 01 50 subi r16, 0x01 ; 1 3ce: 10 40 sbci r17, 0x00 ; 0 3d0: 5e 01 movw r10, r28 3d2: 08 94 sec 3d4: a1 1c adc r10, r1 3d6: b1 1c adc r11, r1 tempvalue=value; 3d8: fa 01 movw r30, r20 value=value/10; 3da: ca 01 movw r24, r20 3dc: 6a e0 ldi r22, 0x0A ; 10 3de: 70 e0 ldi r23, 0x00 ; 0 3e0: c3 d6 rcall .+3462 ; 0x1168 <__udivmodhi4> 3e2: ab 01 movw r20, r22 c1[i]=(tempvalue-(value*10))+'0'; 3e4: d5 01 movw r26, r10 3e6: a0 0f add r26, r16 3e8: b1 1f adc r27, r17 3ea: cb 01 movw r24, r22 3ec: 88 0f add r24, r24 3ee: 99 1f adc r25, r25 3f0: 9b 01 movw r18, r22 3f2: 22 0f add r18, r18 3f4: 33 1f adc r19, r19 3f6: 22 0f add r18, r18 3f8: 33 1f adc r19, r19 3fa: 22 0f add r18, r18 3fc: 33 1f adc r19, r19 3fe: 82 0f add r24, r18 400: 93 1f adc r25, r19 402: e8 1b sub r30, r24 404: e0 5d subi r30, 0xD0 ; 208 406: ec 93 st X, r30 i--; 408: 01 50 subi r16, 0x01 ; 1 40a: 10 40 sbci r17, 0x00 ; 0 40c: 67 2b or r22, r23 40e: 21 f7 brne .-56 ; 0x3d8 410: 20 e0 ldi r18, 0x00 ; 0 412: 30 e0 ldi r19, 0x00 ; 0 414: ae 01 movw r20, r28 416: 4f 5f subi r20, 0xFF ; 255 418: 5f 4f sbci r21, 0xFF ; 255 } for(i=0;i 432: 27 96 adiw r28, 0x07 ; 7 434: 0f b6 in r0, 0x3f ; 63 436: f8 94 cli 438: de bf out 0x3e, r29 ; 62 43a: 0f be out 0x3f, r0 ; 63 43c: cd bf out 0x3d, r28 ; 61 43e: df 91 pop r29 440: cf 91 pop r28 442: 1f 91 pop r17 444: 0f 91 pop r16 446: ff 90 pop r15 448: ef 90 pop r14 44a: df 90 pop r13 44c: cf 90 pop r12 44e: bf 90 pop r11 450: af 90 pop r10 452: 08 95 ret 00000454
: c++; } } //----------------------------------------------------------------------------- //main //main execution loop //----------------------------------------------------------------------------- extern int main(void) { 454: af 92 push r10 456: bf 92 push r11 458: cf 92 push r12 45a: df 92 push r13 45c: ff 92 push r15 45e: 0f 93 push r16 460: 1f 93 push r17 462: cf 93 push r28 464: df 93 push r29 unsigned char c; unsigned int i; int i1; HIDEGRAPHIC; 466: 10 92 00 01 sts 0x0100, r1 HIDEGRAPHICBACK; 46a: 10 92 01 01 sts 0x0101, r1 CLKPR=0x80; 46e: e1 e6 ldi r30, 0x61 ; 97 470: f0 e0 ldi r31, 0x00 ; 0 472: 80 e8 ldi r24, 0x80 ; 128 474: 80 83 st Z, r24 CLKPR=0x00; 476: 10 82 st Z, r1 // PORT D - unused right now PORTD = 0x10; 478: 80 e1 ldi r24, 0x10 ; 16 47a: 8b b9 out 0x0b, r24 ; 11 DDRD = 0x00; 47c: 1a b8 out 0x0a, r1 ; 10 // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 57600 UCSR0A=0x00; 47e: 10 92 c0 00 sts 0x00C0, r1 UCSR0B=0x18; 482: 88 e1 ldi r24, 0x18 ; 24 484: 80 93 c1 00 sts 0x00C1, r24 UCSR0C=0x86; 488: 86 e8 ldi r24, 0x86 ; 134 48a: 80 93 c2 00 sts 0x00C2, r24 #ifdef CPUSPEED_20 //20.000MHz UBRR0H=0x00; 48e: 10 92 c5 00 sts 0x00C5, r1 UBRR0L=0x15; 492: 85 e1 ldi r24, 0x15 ; 21 494: 80 93 c4 00 sts 0x00C4, r24 #endif #ifdef CPUSPEED_16 //16.000MHz UBRR0H=0x00; UBRR0L=0x10; #endif #ifdef CPUSPEED_11059 //11.059MHz UBRR0H=0x00; UBRR0L=0x0B; #endif // Initialize the 8-bit Timer0 to clock at 20/8 MHz */ TCCR0A=0x00; 498: 14 bc out 0x24, r1 ; 36 TCCR0B=0x01; 49a: 91 e0 ldi r25, 0x01 ; 1 49c: 95 bd out 0x25, r25 ; 37 // Initialize the SPI Interface PORTB = 0x00; 49e: 15 b8 out 0x05, r1 ; 5 DDRB = 0x3E; //0x3E 4a0: 8e e3 ldi r24, 0x3E ; 62 4a2: 84 b9 out 0x04, r24 ; 4 //DDRB = 0x3A; SPCR = (1< GR_Copy(&grlevel[0],(GR_Lines/2)*7,21); 4e0: 45 e1 ldi r20, 0x15 ; 21 4e2: 50 e0 ldi r21, 0x00 ; 0 4e4: 6c e8 ldi r22, 0x8C ; 140 4e6: 70 e0 ldi r23, 0x00 ; 0 4e8: 8b eb ldi r24, 0xBB ; 187 4ea: 93 e0 ldi r25, 0x03 ; 3 4ec: bf dd rcall .-1154 ; 0x6c SHOWGRAPHIC; 4ee: 81 e0 ldi r24, 0x01 ; 1 4f0: 80 93 00 01 sts 0x0100, r24 4f4: ff 24 eor r15, r15 4f6: f3 94 inc r15 4f8: 0f 2e mov r0, r31 4fa: ff ee ldi r31, 0xEF ; 239 4fc: cf 2e mov r12, r31 4fe: f3 e0 ldi r31, 0x03 ; 3 500: df 2e mov r13, r31 502: f0 2d mov r31, r0 504: 08 e0 ldi r16, 0x08 ; 8 506: 14 e0 ldi r17, 0x04 ; 4 508: 0f 2e mov r0, r31 50a: fb eb ldi r31, 0xBB ; 187 50c: af 2e mov r10, r31 50e: f3 e0 ldi r31, 0x03 ; 3 510: bf 2e mov r11, r31 512: f0 2d mov r31, r0 while (1) { if (UCSR0A & (1< c=UDR0; 51c: e6 ec ldi r30, 0xC6 ; 198 51e: f0 e0 ldi r31, 0x00 ; 0 520: 80 81 ld r24, Z UDR0=c; 522: 80 83 st Z, r24 process_rxdata(c); 524: 48 de rcall .-880 ; 0x1b6 } if (framecounter<25) showmessage1=1; else showmessage1=0; 526: 80 91 da 03 lds r24, 0x03DA 52a: 89 31 cpi r24, 0x19 ; 25 52c: 18 f4 brcc .+6 ; 0x534 <__stack+0x35> 52e: f0 92 d9 03 sts 0x03D9, r15 532: 06 c0 rjmp .+12 ; 0x540 <__stack+0x41> 534: 10 92 d9 03 sts 0x03D9, r1 if (framecounter>50) framecounter = 0; 538: 83 33 cpi r24, 0x33 ; 51 53a: 10 f0 brcs .+4 ; 0x540 <__stack+0x41> 53c: 10 92 da 03 sts 0x03DA, r1 if(NeuerDatensatzEmpfangen) { 540: 80 91 e2 03 lds r24, 0x03E2 544: 88 23 and r24, r24 546: 31 f3 breq .-52 ; 0x514 <__stack+0x15> switch(RxdBuffer[2]) 548: 80 91 f6 03 lds r24, 0x03F6 54c: 84 34 cpi r24, 0x44 ; 68 54e: 09 f0 breq .+2 ; 0x552 <__stack+0x53> 550: 5f c1 rjmp .+702 ; 0x810 <__stack+0x311> { case 'D': //decode the Messagee Decode64((unsigned char *)&DebugOut,sizeof(DebugOut),3,AnzahlEmpfangsBytes); 552: 20 91 e4 03 lds r18, 0x03E4 556: 43 e0 ldi r20, 0x03 ; 3 558: 62 e4 ldi r22, 0x42 ; 66 55a: 82 e6 ldi r24, 0x62 ; 98 55c: 94 e0 ldi r25, 0x04 ; 4 55e: a0 dd rcall .-1216 ; 0xa0 // Heading information convert_uint16((unsigned char *)&heading[1],3,(unsigned int)DebugOut.Analog[8]); 560: 40 91 74 04 lds r20, 0x0474 564: 50 91 75 04 lds r21, 0x0475 568: 63 e0 ldi r22, 0x03 ; 3 56a: 70 e0 ldi r23, 0x00 ; 0 56c: 8c e0 ldi r24, 0x0C ; 12 56e: 91 e0 ldi r25, 0x01 ; 1 570: 03 df rcall .-506 ; 0x378 // Altitute Information if(DebugOut.Analog[5]>old_alt) { 572: 20 91 6e 04 lds r18, 0x046E 576: 30 91 6f 04 lds r19, 0x046F 57a: 80 91 eb 03 lds r24, 0x03EB 57e: 90 91 ec 03 lds r25, 0x03EC 582: 82 17 cp r24, r18 584: 93 07 cpc r25, r19 586: 64 f4 brge .+24 ; 0x5a0 <__stack+0xa1> alt_inc=1; 588: f0 92 de 03 sts 0x03DE, r15 alt_dec=0; 58c: 10 92 df 03 sts 0x03DF, r1 alt_delta=DebugOut.Analog[5]-old_alt; 590: a9 01 movw r20, r18 592: 48 1b sub r20, r24 594: 59 0b sbc r21, r25 596: 50 93 dd 03 sts 0x03DD, r21 59a: 40 93 dc 03 sts 0x03DC, r20 59e: 17 c0 rjmp .+46 ; 0x5ce <__stack+0xcf> } else { if(DebugOut.Analog[5] alt_inc=0; 5a6: 10 92 de 03 sts 0x03DE, r1 alt_dec=1; 5aa: f0 92 df 03 sts 0x03DF, r15 alt_delta=old_alt-DebugOut.Analog[5]; 5ae: 82 1b sub r24, r18 5b0: 93 0b sbc r25, r19 5b2: 90 93 dd 03 sts 0x03DD, r25 5b6: 80 93 dc 03 sts 0x03DC, r24 5ba: 09 c0 rjmp .+18 ; 0x5ce <__stack+0xcf> } else { alt_inc=0; 5bc: 10 92 de 03 sts 0x03DE, r1 alt_dec=0; 5c0: 10 92 df 03 sts 0x03DF, r1 alt_delta=0; 5c4: 10 92 dd 03 sts 0x03DD, r1 5c8: 10 92 dc 03 sts 0x03DC, r1 5cc: 0c c0 rjmp .+24 ; 0x5e6 <__stack+0xe7> } } if(alt_delta>60) alt_delta=60; 5ce: 80 91 dc 03 lds r24, 0x03DC 5d2: 90 91 dd 03 lds r25, 0x03DD 5d6: cd 97 sbiw r24, 0x3d ; 61 5d8: 30 f0 brcs .+12 ; 0x5e6 <__stack+0xe7> 5da: 8c e3 ldi r24, 0x3C ; 60 5dc: 90 e0 ldi r25, 0x00 ; 0 5de: 90 93 dd 03 sts 0x03DD, r25 5e2: 80 93 dc 03 sts 0x03DC, r24 if(alt_delta<0) alt_delta=0; old_alt=DebugOut.Analog[5]; 5e6: 30 93 ec 03 sts 0x03EC, r19 5ea: 20 93 eb 03 sts 0x03EB, r18 if(DebugOut.Analog[5]<0) { 5ee: 33 23 and r19, r19 5f0: 5c f4 brge .+22 ; 0x608 <__stack+0x109> altv[0]='-'; 5f2: 8d e2 ldi r24, 0x2D ; 45 5f4: 80 93 30 01 sts 0x0130, r24 DebugOut.Analog[5]=(0xffff-(unsigned int)DebugOut.Analog[5]); 5f8: c9 01 movw r24, r18 5fa: 80 95 com r24 5fc: 90 95 com r25 5fe: 90 93 6f 04 sts 0x046F, r25 602: 80 93 6e 04 sts 0x046E, r24 606: 03 c0 rjmp .+6 ; 0x60e <__stack+0x10f> } else { altv[0]='+'; 608: 8b e2 ldi r24, 0x2B ; 43 60a: 80 93 30 01 sts 0x0130, r24 } convert_uint16((unsigned char *)&altv[1],5,(unsigned int)DebugOut.Analog[5]); 60e: 40 91 6e 04 lds r20, 0x046E 612: 50 91 6f 04 lds r21, 0x046F 616: 65 e0 ldi r22, 0x05 ; 5 618: 70 e0 ldi r23, 0x00 ; 0 61a: 81 e3 ldi r24, 0x31 ; 49 61c: 91 e0 ldi r25, 0x01 ; 1 61e: ac de rcall .-680 ; 0x378 //Voltage value convert_uint16((unsigned char *)&templine[0],5,(unsigned int)DebugOut.Analog[9]); 620: 40 91 76 04 lds r20, 0x0476 624: 50 91 77 04 lds r21, 0x0477 628: 65 e0 ldi r22, 0x05 ; 5 62a: 70 e0 ldi r23, 0x00 ; 0 62c: c6 01 movw r24, r12 62e: a4 de rcall .-696 ; 0x378 ubat[3]=templine[2]; 630: 80 91 f1 03 lds r24, 0x03F1 634: 80 93 1b 01 sts 0x011B, r24 ubat[4]=templine[3]; 638: 80 91 f2 03 lds r24, 0x03F2 63c: 80 93 1c 01 sts 0x011C, r24 ubat[6]=templine[4]; 640: 80 91 f3 03 lds r24, 0x03F3 644: 80 93 1e 01 sts 0x011E, r24 if(DebugOut.Analog[9]>90) bat[0]=0x08; else bat[0]=0x04; 648: 80 91 76 04 lds r24, 0x0476 64c: 90 91 77 04 lds r25, 0x0477 650: 8b 35 cpi r24, 0x5B ; 91 652: 91 05 cpc r25, r1 654: 34 f0 brlt .+12 ; 0x662 <__stack+0x163> 656: 00 93 10 01 sts 0x0110, r16 if(DebugOut.Analog[9]>95) bat[1]=0x08; else bat[1]=0x04; 65a: 80 36 cpi r24, 0x60 ; 96 65c: 91 05 cpc r25, r1 65e: 24 f4 brge .+8 ; 0x668 <__stack+0x169> 660: 09 c0 rjmp .+18 ; 0x674 <__stack+0x175> 662: 10 93 10 01 sts 0x0110, r17 666: 06 c0 rjmp .+12 ; 0x674 <__stack+0x175> 668: 00 93 11 01 sts 0x0111, r16 if(DebugOut.Analog[9]>100) bat[2]=0x08; else bat[2]=0x04; 66c: 85 36 cpi r24, 0x65 ; 101 66e: 91 05 cpc r25, r1 670: 24 f4 brge .+8 ; 0x67a <__stack+0x17b> 672: 09 c0 rjmp .+18 ; 0x686 <__stack+0x187> 674: 10 93 11 01 sts 0x0111, r17 678: 06 c0 rjmp .+12 ; 0x686 <__stack+0x187> 67a: 00 93 12 01 sts 0x0112, r16 if(DebugOut.Analog[9]>105) bat[3]=0x08; else bat[3]=0x04; 67e: 8a 36 cpi r24, 0x6A ; 106 680: 91 05 cpc r25, r1 682: 24 f4 brge .+8 ; 0x68c <__stack+0x18d> 684: 09 c0 rjmp .+18 ; 0x698 <__stack+0x199> 686: 10 93 12 01 sts 0x0112, r17 68a: 06 c0 rjmp .+12 ; 0x698 <__stack+0x199> 68c: 00 93 13 01 sts 0x0113, r16 if(DebugOut.Analog[9]>110) bat[4]=0x08; else bat[4]=0x04; 690: 8f 36 cpi r24, 0x6F ; 111 692: 91 05 cpc r25, r1 694: 24 f4 brge .+8 ; 0x69e <__stack+0x19f> 696: 09 c0 rjmp .+18 ; 0x6aa <__stack+0x1ab> 698: 10 93 13 01 sts 0x0113, r17 69c: 06 c0 rjmp .+12 ; 0x6aa <__stack+0x1ab> 69e: 00 93 14 01 sts 0x0114, r16 if(DebugOut.Analog[9]>115) bat[5]=0x08; else bat[5]=0x04; 6a2: 84 37 cpi r24, 0x74 ; 116 6a4: 91 05 cpc r25, r1 6a6: 24 f4 brge .+8 ; 0x6b0 <__stack+0x1b1> 6a8: 09 c0 rjmp .+18 ; 0x6bc <__stack+0x1bd> 6aa: 10 93 14 01 sts 0x0114, r17 6ae: 06 c0 rjmp .+12 ; 0x6bc <__stack+0x1bd> 6b0: 00 93 15 01 sts 0x0115, r16 if(DebugOut.Analog[9]>120) bat[6]=0x08; else bat[6]=0x04; 6b4: 89 37 cpi r24, 0x79 ; 121 6b6: 91 05 cpc r25, r1 6b8: 24 f4 brge .+8 ; 0x6c2 <__stack+0x1c3> 6ba: 09 c0 rjmp .+18 ; 0x6ce <__stack+0x1cf> 6bc: 10 93 15 01 sts 0x0115, r17 6c0: 06 c0 rjmp .+12 ; 0x6ce <__stack+0x1cf> 6c2: 00 93 16 01 sts 0x0116, r16 if(DebugOut.Analog[9]>125) bat[7]=0x08; else bat[7]=0x04; 6c6: 8e 37 cpi r24, 0x7E ; 126 6c8: 91 05 cpc r25, r1 6ca: 4c f4 brge .+18 ; 0x6de <__stack+0x1df> 6cc: b4 c0 rjmp .+360 ; 0x836 <__stack+0x337> 6ce: 10 93 16 01 sts 0x0116, r17 6d2: 10 93 17 01 sts 0x0117, r17 if(DebugOut.Analog[9]<94) lowbat=1; else lowbat = 0; 6d6: 8e 35 cpi r24, 0x5E ; 94 6d8: 91 05 cpc r25, r1 6da: 24 f0 brlt .+8 ; 0x6e4 <__stack+0x1e5> 6dc: 06 c0 rjmp .+12 ; 0x6ea <__stack+0x1eb> 6de: 00 93 17 01 sts 0x0117, r16 6e2: 03 c0 rjmp .+6 ; 0x6ea <__stack+0x1eb> 6e4: f0 92 d8 03 sts 0x03D8, r15 6e8: 02 c0 rjmp .+4 ; 0x6ee <__stack+0x1ef> 6ea: 10 92 d8 03 sts 0x03D8, r1 //RX level i=((unsigned int)DebugOut.Analog[10]*100)/255; 6ee: 20 91 78 04 lds r18, 0x0478 6f2: 30 91 79 04 lds r19, 0x0479 6f6: 84 e6 ldi r24, 0x64 ; 100 6f8: 90 e0 ldi r25, 0x00 ; 0 6fa: ac 01 movw r20, r24 6fc: 24 9f mul r18, r20 6fe: c0 01 movw r24, r0 700: 25 9f mul r18, r21 702: 90 0d add r25, r0 704: 34 9f mul r19, r20 706: 90 0d add r25, r0 708: 11 24 eor r1, r1 70a: 6f ef ldi r22, 0xFF ; 255 70c: 70 e0 ldi r23, 0x00 ; 0 70e: 2c d5 rcall .+2648 ; 0x1168 <__udivmodhi4> 710: eb 01 movw r28, r22 convert_uint16((unsigned char *)&templine[0],5,(unsigned int)i); 712: ab 01 movw r20, r22 714: 65 e0 ldi r22, 0x05 ; 5 716: 70 e0 ldi r23, 0x00 ; 0 718: c6 01 movw r24, r12 71a: 2e de rcall .-932 ; 0x378 urx[4]=templine[2]; 71c: 80 91 f1 03 lds r24, 0x03F1 720: 80 93 2c 01 sts 0x012C, r24 urx[5]=templine[3]; 724: 80 91 f2 03 lds r24, 0x03F2 728: 80 93 2d 01 sts 0x012D, r24 urx[6]=templine[4]; 72c: 80 91 f3 03 lds r24, 0x03F3 730: 80 93 2e 01 sts 0x012E, r24 if(i>10) rx[0]=0x08; else rx[0]=0x04; 734: cb 30 cpi r28, 0x0B ; 11 736: d1 05 cpc r29, r1 738: 30 f0 brcs .+12 ; 0x746 <__stack+0x247> 73a: 00 93 20 01 sts 0x0120, r16 if(i>20) rx[1]=0x08; else rx[1]=0x04; 73e: c5 31 cpi r28, 0x15 ; 21 740: d1 05 cpc r29, r1 742: 20 f4 brcc .+8 ; 0x74c <__stack+0x24d> 744: 09 c0 rjmp .+18 ; 0x758 <__stack+0x259> 746: 10 93 20 01 sts 0x0120, r17 74a: 06 c0 rjmp .+12 ; 0x758 <__stack+0x259> 74c: 00 93 21 01 sts 0x0121, r16 if(i>30) rx[2]=0x08; else rx[2]=0x04; 750: cf 31 cpi r28, 0x1F ; 31 752: d1 05 cpc r29, r1 754: 20 f4 brcc .+8 ; 0x75e <__stack+0x25f> 756: 09 c0 rjmp .+18 ; 0x76a <__stack+0x26b> 758: 10 93 21 01 sts 0x0121, r17 75c: 06 c0 rjmp .+12 ; 0x76a <__stack+0x26b> 75e: 00 93 22 01 sts 0x0122, r16 if(i>40) rx[3]=0x08; else rx[3]=0x04; 762: c9 32 cpi r28, 0x29 ; 41 764: d1 05 cpc r29, r1 766: 20 f4 brcc .+8 ; 0x770 <__stack+0x271> 768: 09 c0 rjmp .+18 ; 0x77c <__stack+0x27d> 76a: 10 93 22 01 sts 0x0122, r17 76e: 06 c0 rjmp .+12 ; 0x77c <__stack+0x27d> 770: 00 93 23 01 sts 0x0123, r16 if(i>50) rx[4]=0x08; else rx[4]=0x04; 774: c3 33 cpi r28, 0x33 ; 51 776: d1 05 cpc r29, r1 778: 20 f4 brcc .+8 ; 0x782 <__stack+0x283> 77a: 09 c0 rjmp .+18 ; 0x78e <__stack+0x28f> 77c: 10 93 23 01 sts 0x0123, r17 780: 06 c0 rjmp .+12 ; 0x78e <__stack+0x28f> 782: 00 93 24 01 sts 0x0124, r16 if(i>60) rx[5]=0x08; else rx[5]=0x04; 786: cd 33 cpi r28, 0x3D ; 61 788: d1 05 cpc r29, r1 78a: 20 f4 brcc .+8 ; 0x794 <__stack+0x295> 78c: 09 c0 rjmp .+18 ; 0x7a0 <__stack+0x2a1> 78e: 10 93 24 01 sts 0x0124, r17 792: 06 c0 rjmp .+12 ; 0x7a0 <__stack+0x2a1> 794: 00 93 25 01 sts 0x0125, r16 if(i>70) rx[6]=0x08; else rx[6]=0x04; 798: c7 34 cpi r28, 0x47 ; 71 79a: d1 05 cpc r29, r1 79c: 20 f4 brcc .+8 ; 0x7a6 <__stack+0x2a7> 79e: 09 c0 rjmp .+18 ; 0x7b2 <__stack+0x2b3> 7a0: 10 93 25 01 sts 0x0125, r17 7a4: 06 c0 rjmp .+12 ; 0x7b2 <__stack+0x2b3> 7a6: 00 93 26 01 sts 0x0126, r16 if(i>80) rx[7]=0x08; else rx[7]=0x04; 7aa: c1 35 cpi r28, 0x51 ; 81 7ac: d1 05 cpc r29, r1 7ae: 20 f4 brcc .+8 ; 0x7b8 <__stack+0x2b9> 7b0: 06 c0 rjmp .+12 ; 0x7be <__stack+0x2bf> 7b2: 10 93 26 01 sts 0x0126, r17 7b6: 03 c0 rjmp .+6 ; 0x7be <__stack+0x2bf> 7b8: 00 93 27 01 sts 0x0127, r16 7bc: 02 c0 rjmp .+4 ; 0x7c2 <__stack+0x2c3> 7be: 10 93 27 01 sts 0x0127, r17 // nick i1=DebugOut.Analog[0]/50; 7c2: 80 91 64 04 lds r24, 0x0464 7c6: 90 91 65 04 lds r25, 0x0465 7ca: 62 e3 ldi r22, 0x32 ; 50 7cc: 70 e0 ldi r23, 0x00 ; 0 7ce: e0 d4 rcall .+2496 ; 0x1190 <__divmodhi4> i1=((GR_Lines/2)-i1); 7d0: 84 e1 ldi r24, 0x14 ; 20 7d2: 90 e0 ldi r25, 0x00 ; 0 7d4: ec 01 movw r28, r24 7d6: c6 1b sub r28, r22 7d8: d7 0b sbc r29, r23 if(i1<0) i1=0; 7da: ea f0 brmi .+58 ; 0x816 <__stack+0x317> if(i1>37) i1=37; 7dc: c6 32 cpi r28, 0x26 ; 38 7de: d1 05 cpc r29, r1 7e0: 14 f5 brge .+68 ; 0x826 <__stack+0x327> GR_Clear(); 7e2: 55 dc rcall .-1878 ; 0x8e GR_Copy(&grlevel[0],i1*7,21); 7e4: be 01 movw r22, r28 7e6: 66 0f add r22, r22 7e8: 77 1f adc r23, r23 7ea: 66 0f add r22, r22 7ec: 77 1f adc r23, r23 7ee: 66 0f add r22, r22 7f0: 77 1f adc r23, r23 7f2: 6c 1b sub r22, r28 7f4: 7d 0b sbc r23, r29 7f6: 45 e1 ldi r20, 0x15 ; 21 7f8: 50 e0 ldi r21, 0x00 ; 0 7fa: c5 01 movw r24, r10 7fc: 37 dc rcall .-1938 ; 0x6c if(i1!=20) GR_Copy(&grlevel0[0],20*7,7); 7fe: 64 97 sbiw r28, 0x14 ; 20 800: 39 f0 breq .+14 ; 0x810 <__stack+0x311> 802: 47 e0 ldi r20, 0x07 ; 7 804: 50 e0 ldi r21, 0x00 ; 0 806: 6c e8 ldi r22, 0x8C ; 140 808: 70 e0 ldi r23, 0x00 ; 0 80a: 80 ed ldi r24, 0xD0 ; 208 80c: 93 e0 ldi r25, 0x03 ; 3 80e: 2e dc rcall .-1956 ; 0x6c break; default: break; } NeuerDatensatzEmpfangen=0; 810: 10 92 e2 03 sts 0x03E2, r1 814: 7f ce rjmp .-770 ; 0x514 <__stack+0x15> 816: 3b dc rcall .-1930 ; 0x8e 818: 45 e1 ldi r20, 0x15 ; 21 81a: 50 e0 ldi r21, 0x00 ; 0 81c: 60 e0 ldi r22, 0x00 ; 0 81e: 70 e0 ldi r23, 0x00 ; 0 820: c5 01 movw r24, r10 822: 24 dc rcall .-1976 ; 0x6c 824: ee cf rjmp .-36 ; 0x802 <__stack+0x303> 826: 33 dc rcall .-1946 ; 0x8e 828: 45 e1 ldi r20, 0x15 ; 21 82a: 50 e0 ldi r21, 0x00 ; 0 82c: 63 e0 ldi r22, 0x03 ; 3 82e: 71 e0 ldi r23, 0x01 ; 1 830: c5 01 movw r24, r10 832: 1c dc rcall .-1992 ; 0x6c 834: e6 cf rjmp .-52 ; 0x802 <__stack+0x303> 836: 10 93 17 01 sts 0x0117, r17 83a: 57 cf rjmp .-338 ; 0x6ea <__stack+0x1eb> 0000083c : } } return(1); } /* main */ //----------------------------------------------------------------------------- // draw line() // will be executed in interrupt context and will display the overlay content //-----------------------------------------------------------------------------*/ extern void draw_line() { 83c: 40 91 ed 03 lds r20, 0x03ED 840: 50 91 ee 03 lds r21, 0x03EE 844: ca 01 movw r24, r20 846: 84 97 sbiw r24, 0x24 ; 36 848: 07 97 sbiw r24, 0x07 ; 7 84a: 08 f0 brcs .+2 ; 0x84e 84c: 03 c1 rjmp .+518 ; 0xa54 unsigned char *ltr_p; unsigned char *num_p; unsigned char *info_p; short ltemp; short ntemp; short itemp; unsigned int i1; unsigned char i=0; unsigned char c1; unsigned char c2; unsigned char c3; unsigned char c4; unsigned char c5; unsigned char c6; unsigned char c7; // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Bat and Heading output if ((line > 35) && (line < 43)) { ltemp = (line - 36) * 27 - 64; ntemp = (line - 36) * 16 - 43; itemp = (line - 36) * 9; ltr_p = ltrs+ltemp; num_p = nums+ntemp; 84e: ca 01 movw r24, r20 850: 82 95 swap r24 852: 92 95 swap r25 854: 90 7f andi r25, 0xF0 ; 240 856: 98 27 eor r25, r24 858: 80 7f andi r24, 0xF0 ; 240 85a: 98 27 eor r25, r24 85c: bc 01 movw r22, r24 85e: 6f 55 subi r22, 0x5F ; 95 860: 7f 4f sbci r23, 0xFF ; 255 info_p = infos+itemp; 862: ca 01 movw r24, r20 864: 88 0f add r24, r24 866: 99 1f adc r25, r25 868: 88 0f add r24, r24 86a: 99 1f adc r25, r25 86c: 88 0f add r24, r24 86e: 99 1f adc r25, r25 870: 84 0f add r24, r20 872: 95 1f adc r25, r21 874: 9c 01 movw r18, r24 876: 28 5c subi r18, 0xC8 ; 200 878: 3d 4f sbci r19, 0xFD ; 253 // +++ Bat while(TCNT0 TCNT0=0; 880: 16 bc out 0x26, r1 ; 38 SPSR=1; 882: 81 e0 ldi r24, 0x01 ; 1 884: 8d bd out 0x2d, r24 ; 45 DDRB|=1; //sink thru PB0 886: 20 9a sbi 0x04, 0 ; 4 SPDR = info_p[bat[0]]; Wait(); 888: 80 91 10 01 lds r24, 0x0110 88c: f9 01 movw r30, r18 88e: e8 0f add r30, r24 890: f1 1d adc r31, r1 892: 80 81 ld r24, Z 894: 8e bd out 0x2e, r24 ; 46 896: 0d b4 in r0, 0x2d ; 45 898: 07 fe sbrs r0, 7 89a: fd cf rjmp .-6 ; 0x896 SPDR = info_p[bat[1]]; Wait(); 89c: 80 91 11 01 lds r24, 0x0111 8a0: f9 01 movw r30, r18 8a2: e8 0f add r30, r24 8a4: f1 1d adc r31, r1 8a6: 80 81 ld r24, Z 8a8: 8e bd out 0x2e, r24 ; 46 8aa: 0d b4 in r0, 0x2d ; 45 8ac: 07 fe sbrs r0, 7 8ae: fd cf rjmp .-6 ; 0x8aa SPDR = info_p[bat[2]]; Wait(); 8b0: 80 91 12 01 lds r24, 0x0112 8b4: f9 01 movw r30, r18 8b6: e8 0f add r30, r24 8b8: f1 1d adc r31, r1 8ba: 80 81 ld r24, Z 8bc: 8e bd out 0x2e, r24 ; 46 8be: 0d b4 in r0, 0x2d ; 45 8c0: 07 fe sbrs r0, 7 8c2: fd cf rjmp .-6 ; 0x8be SPDR = info_p[bat[3]]; Wait(); 8c4: 80 91 13 01 lds r24, 0x0113 8c8: f9 01 movw r30, r18 8ca: e8 0f add r30, r24 8cc: f1 1d adc r31, r1 8ce: 80 81 ld r24, Z 8d0: 8e bd out 0x2e, r24 ; 46 8d2: 0d b4 in r0, 0x2d ; 45 8d4: 07 fe sbrs r0, 7 8d6: fd cf rjmp .-6 ; 0x8d2 SPDR = info_p[bat[4]]; Wait(); 8d8: 80 91 14 01 lds r24, 0x0114 8dc: f9 01 movw r30, r18 8de: e8 0f add r30, r24 8e0: f1 1d adc r31, r1 8e2: 80 81 ld r24, Z 8e4: 8e bd out 0x2e, r24 ; 46 8e6: 0d b4 in r0, 0x2d ; 45 8e8: 07 fe sbrs r0, 7 8ea: fd cf rjmp .-6 ; 0x8e6 SPDR = info_p[bat[5]]; Wait(); 8ec: 80 91 15 01 lds r24, 0x0115 8f0: f9 01 movw r30, r18 8f2: e8 0f add r30, r24 8f4: f1 1d adc r31, r1 8f6: 80 81 ld r24, Z 8f8: 8e bd out 0x2e, r24 ; 46 8fa: 0d b4 in r0, 0x2d ; 45 8fc: 07 fe sbrs r0, 7 8fe: fd cf rjmp .-6 ; 0x8fa SPDR = info_p[bat[6]]; Wait(); 900: 80 91 16 01 lds r24, 0x0116 904: f9 01 movw r30, r18 906: e8 0f add r30, r24 908: f1 1d adc r31, r1 90a: 80 81 ld r24, Z 90c: 8e bd out 0x2e, r24 ; 46 90e: 0d b4 in r0, 0x2d ; 45 910: 07 fe sbrs r0, 7 912: fd cf rjmp .-6 ; 0x90e SPDR = info_p[bat[7]]; Wait(); 914: 80 91 17 01 lds r24, 0x0117 918: f9 01 movw r30, r18 91a: e8 0f add r30, r24 91c: f1 1d adc r31, r1 91e: 80 81 ld r24, Z 920: 8e bd out 0x2e, r24 ; 46 922: 0d b4 in r0, 0x2d ; 45 924: 07 fe sbrs r0, 7 926: fd cf rjmp .-6 ; 0x922 DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right 928: 20 98 cbi 0x04, 0 ; 4 // +++ Heading TCNT0=0; 92a: 16 bc out 0x26, r1 ; 38 while(TCNT0<80); 92c: 86 b5 in r24, 0x26 ; 38 92e: 80 35 cpi r24, 0x50 ; 80 930: e8 f3 brcs .-6 ; 0x92c TCNT0=0; 932: 16 bc out 0x26, r1 ; 38 SPSR=0; 934: 1d bc out 0x2d, r1 ; 45 DDRB|=1; 936: 20 9a sbi 0x04, 0 ; 4 SPDR = info_p[heading[0]]; Wait(); 938: 80 91 0b 01 lds r24, 0x010B 93c: f9 01 movw r30, r18 93e: e8 0f add r30, r24 940: f1 1d adc r31, r1 942: 80 81 ld r24, Z 944: 8e bd out 0x2e, r24 ; 46 946: 0d b4 in r0, 0x2d ; 45 948: 07 fe sbrs r0, 7 94a: fd cf rjmp .-6 ; 0x946 SPDR = num_p[heading[1]]; Wait(); 94c: 80 91 0c 01 lds r24, 0x010C 950: fb 01 movw r30, r22 952: e8 0f add r30, r24 954: f1 1d adc r31, r1 956: 80 81 ld r24, Z 958: 8e bd out 0x2e, r24 ; 46 95a: 0d b4 in r0, 0x2d ; 45 95c: 07 fe sbrs r0, 7 95e: fd cf rjmp .-6 ; 0x95a SPDR = num_p[heading[2]]; Wait(); 960: 80 91 0d 01 lds r24, 0x010D 964: fb 01 movw r30, r22 966: e8 0f add r30, r24 968: f1 1d adc r31, r1 96a: 80 81 ld r24, Z 96c: 8e bd out 0x2e, r24 ; 46 96e: 0d b4 in r0, 0x2d ; 45 970: 07 fe sbrs r0, 7 972: fd cf rjmp .-6 ; 0x96e SPDR = num_p[heading[3]]; Wait(); 974: 80 91 0e 01 lds r24, 0x010E 978: fb 01 movw r30, r22 97a: e8 0f add r30, r24 97c: f1 1d adc r31, r1 97e: 80 81 ld r24, Z 980: 8e bd out 0x2e, r24 ; 46 982: 0d b4 in r0, 0x2d ; 45 984: 07 fe sbrs r0, 7 986: fd cf rjmp .-6 ; 0x982 SPDR = info_p[heading[4]]; Wait(); 988: 80 91 0f 01 lds r24, 0x010F 98c: f9 01 movw r30, r18 98e: e8 0f add r30, r24 990: f1 1d adc r31, r1 992: 80 81 ld r24, Z 994: 8e bd out 0x2e, r24 ; 46 996: 0d b4 in r0, 0x2d ; 45 998: 07 fe sbrs r0, 7 99a: fd cf rjmp .-6 ; 0x996 DDRB&=0xFE; //PB0 Hi-Z again, and load a blank so spacing is right 99c: 20 98 cbi 0x04, 0 ; 4 // +++ RX Level while(TCNT0<250); 99e: 86 b5 in r24, 0x26 ; 38 9a0: 8a 3f cpi r24, 0xFA ; 250 9a2: e8 f3 brcs .-6 ; 0x99e TCNT0=0; 9a4: 16 bc out 0x26, r1 ; 38 while(TCNT0<70); 9a6: 86 b5 in r24, 0x26 ; 38 9a8: 86 34 cpi r24, 0x46 ; 70 9aa: e8 f3 brcs .-6 ; 0x9a6 SPSR=1; 9ac: 81 e0 ldi r24, 0x01 ; 1 9ae: 8d bd out 0x2d, r24 ; 45 DDRB|=1; 9b0: 20 9a sbi 0x04, 0 ; 4 SPDR = info_p[rx[0]]; Wait(); 9b2: 80 91 20 01 lds r24, 0x0120 9b6: f9 01 movw r30, r18 9b8: e8 0f add r30, r24 9ba: f1 1d adc r31, r1 9bc: 80 81 ld r24, Z 9be: 8e bd out 0x2e, r24 ; 46 9c0: 0d b4 in r0, 0x2d ; 45 9c2: 07 fe sbrs r0, 7 9c4: fd cf rjmp .-6 ; 0x9c0 SPDR = info_p[rx[1]]; Wait(); 9c6: 80 91 21 01 lds r24, 0x0121 9ca: f9 01 movw r30, r18 9cc: e8 0f add r30, r24 9ce: f1 1d adc r31, r1 9d0: 80 81 ld r24, Z 9d2: 8e bd out 0x2e, r24 ; 46 9d4: 0d b4 in r0, 0x2d ; 45 9d6: 07 fe sbrs r0, 7 9d8: fd cf rjmp .-6 ; 0x9d4 SPDR = info_p[rx[2]]; Wait(); 9da: 80 91 22 01 lds r24, 0x0122 9de: f9 01 movw r30, r18 9e0: e8 0f add r30, r24 9e2: f1 1d adc r31, r1 9e4: 80 81 ld r24, Z 9e6: 8e bd out 0x2e, r24 ; 46 9e8: 0d b4 in r0, 0x2d ; 45 9ea: 07 fe sbrs r0, 7 9ec: fd cf rjmp .-6 ; 0x9e8 SPDR = info_p[rx[3]]; Wait(); 9ee: 80 91 23 01 lds r24, 0x0123 9f2: f9 01 movw r30, r18 9f4: e8 0f add r30, r24 9f6: f1 1d adc r31, r1 9f8: 80 81 ld r24, Z 9fa: 8e bd out 0x2e, r24 ; 46 9fc: 0d b4 in r0, 0x2d ; 45 9fe: 07 fe sbrs r0, 7 a00: fd cf rjmp .-6 ; 0x9fc SPDR = info_p[rx[4]]; Wait(); a02: 80 91 24 01 lds r24, 0x0124 a06: f9 01 movw r30, r18 a08: e8 0f add r30, r24 a0a: f1 1d adc r31, r1 a0c: 80 81 ld r24, Z a0e: 8e bd out 0x2e, r24 ; 46 a10: 0d b4 in r0, 0x2d ; 45 a12: 07 fe sbrs r0, 7 a14: fd cf rjmp .-6 ; 0xa10 SPDR = info_p[rx[5]]; Wait(); a16: 80 91 25 01 lds r24, 0x0125 a1a: f9 01 movw r30, r18 a1c: e8 0f add r30, r24 a1e: f1 1d adc r31, r1 a20: 80 81 ld r24, Z a22: 8e bd out 0x2e, r24 ; 46 a24: 0d b4 in r0, 0x2d ; 45 a26: 07 fe sbrs r0, 7 a28: fd cf rjmp .-6 ; 0xa24 SPDR = info_p[rx[6]]; Wait(); a2a: 80 91 26 01 lds r24, 0x0126 a2e: f9 01 movw r30, r18 a30: e8 0f add r30, r24 a32: f1 1d adc r31, r1 a34: 80 81 ld r24, Z a36: 8e bd out 0x2e, r24 ; 46 a38: 0d b4 in r0, 0x2d ; 45 a3a: 07 fe sbrs r0, 7 a3c: fd cf rjmp .-6 ; 0xa38 SPDR = info_p[rx[7]]; Wait(); a3e: 80 91 27 01 lds r24, 0x0127 a42: f9 01 movw r30, r18 a44: e8 0f add r30, r24 a46: f1 1d adc r31, r1 a48: 80 81 ld r24, Z a4a: 8e bd out 0x2e, r24 ; 46 a4c: 0d b4 in r0, 0x2d ; 45 a4e: 07 fe sbrs r0, 7 a50: fd cf rjmp .-6 ; 0xa4c DDRB&=0xFE; a52: 20 98 cbi 0x04, 0 ; 4 } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // UBat if ((line > 44) && (line < 52)) a54: ca 01 movw r24, r20 a56: 8d 97 sbiw r24, 0x2d ; 45 a58: 07 97 sbiw r24, 0x07 ; 7 a5a: 08 f0 brcs .+2 ; 0xa5e a5c: d4 c0 rjmp .+424 ; 0xc06 { ltemp = (line - 45) * 27 - 64; ntemp = (line - 45) * 16 - 43; itemp = (line - 45) * 9; ltr_p = ltrs+ltemp; a5e: ca 01 movw r24, r20 a60: 88 0f add r24, r24 a62: 99 1f adc r25, r25 a64: 84 0f add r24, r20 a66: 95 1f adc r25, r21 a68: 9c 01 movw r18, r24 a6a: 22 0f add r18, r18 a6c: 33 1f adc r19, r19 a6e: 22 0f add r18, r18 a70: 33 1f adc r19, r19 a72: 22 0f add r18, r18 a74: 33 1f adc r19, r19 a76: 82 0f add r24, r18 a78: 93 1f adc r25, r19 a7a: bc 01 movw r22, r24 a7c: 60 5b subi r22, 0xB0 ; 176 a7e: 72 40 sbci r23, 0x02 ; 2 num_p = nums+ntemp; a80: ca 01 movw r24, r20 a82: 82 95 swap r24 a84: 92 95 swap r25 a86: 90 7f andi r25, 0xF0 ; 240 a88: 98 27 eor r25, r24 a8a: 80 7f andi r24, 0xF0 ; 240 a8c: 98 27 eor r25, r24 a8e: 9c 01 movw r18, r24 a90: 2f 5e subi r18, 0xEF ; 239 a92: 3f 4f sbci r19, 0xFF ; 255 info_p = infos+itemp; // +++ UBat while(TCNT0 TCNT0=0; a9a: 16 bc out 0x26, r1 ; 38 SPSR=1; a9c: 81 e0 ldi r24, 0x01 ; 1 a9e: 8d bd out 0x2d, r24 ; 45 DDRB|=1; aa0: 20 9a sbi 0x04, 0 ; 4 SPDR = ltr_p[ubat[0]]; Wait(); aa2: 80 91 18 01 lds r24, 0x0118 aa6: fb 01 movw r30, r22 aa8: e8 0f add r30, r24 aaa: f1 1d adc r31, r1 aac: 80 81 ld r24, Z aae: 8e bd out 0x2e, r24 ; 46 ab0: 0d b4 in r0, 0x2d ; 45 ab2: 07 fe sbrs r0, 7 ab4: fd cf rjmp .-6 ; 0xab0 SPDR = num_p[ubat[1]]; Wait(); ab6: 80 91 19 01 lds r24, 0x0119 aba: f9 01 movw r30, r18 abc: e8 0f add r30, r24 abe: f1 1d adc r31, r1 ac0: 80 81 ld r24, Z ac2: 8e bd out 0x2e, r24 ; 46 ac4: 0d b4 in r0, 0x2d ; 45 ac6: 07 fe sbrs r0, 7 ac8: fd cf rjmp .-6 ; 0xac4 SPDR = ltr_p[ubat[2]]; Wait(); aca: 80 91 1a 01 lds r24, 0x011A ace: fb 01 movw r30, r22 ad0: e8 0f add r30, r24 ad2: f1 1d adc r31, r1 ad4: 80 81 ld r24, Z ad6: 8e bd out 0x2e, r24 ; 46 ad8: 0d b4 in r0, 0x2d ; 45 ada: 07 fe sbrs r0, 7 adc: fd cf rjmp .-6 ; 0xad8 SPDR = num_p[ubat[3]]; Wait(); ade: 80 91 1b 01 lds r24, 0x011B ae2: f9 01 movw r30, r18 ae4: e8 0f add r30, r24 ae6: f1 1d adc r31, r1 ae8: 80 81 ld r24, Z aea: 8e bd out 0x2e, r24 ; 46 aec: 0d b4 in r0, 0x2d ; 45 aee: 07 fe sbrs r0, 7 af0: fd cf rjmp .-6 ; 0xaec SPDR = num_p[ubat[4]]; Wait(); af2: 80 91 1c 01 lds r24, 0x011C af6: f9 01 movw r30, r18 af8: e8 0f add r30, r24 afa: f1 1d adc r31, r1 afc: 80 81 ld r24, Z afe: 8e bd out 0x2e, r24 ; 46 b00: 0d b4 in r0, 0x2d ; 45 b02: 07 fe sbrs r0, 7 b04: fd cf rjmp .-6 ; 0xb00 SPDR = num_p[ubat[5]]; Wait(); b06: 80 91 1d 01 lds r24, 0x011D b0a: f9 01 movw r30, r18 b0c: e8 0f add r30, r24 b0e: f1 1d adc r31, r1 b10: 80 81 ld r24, Z b12: 8e bd out 0x2e, r24 ; 46 b14: 0d b4 in r0, 0x2d ; 45 b16: 07 fe sbrs r0, 7 b18: fd cf rjmp .-6 ; 0xb14 SPDR = num_p[ubat[6]]; Wait(); b1a: 80 91 1e 01 lds r24, 0x011E b1e: f9 01 movw r30, r18 b20: e8 0f add r30, r24 b22: f1 1d adc r31, r1 b24: 80 81 ld r24, Z b26: 8e bd out 0x2e, r24 ; 46 b28: 0d b4 in r0, 0x2d ; 45 b2a: 07 fe sbrs r0, 7 b2c: fd cf rjmp .-6 ; 0xb28 SPDR = ltr_p[ubat[7]]; Wait(); b2e: 80 91 1f 01 lds r24, 0x011F b32: fb 01 movw r30, r22 b34: e8 0f add r30, r24 b36: f1 1d adc r31, r1 b38: 80 81 ld r24, Z b3a: 8e bd out 0x2e, r24 ; 46 b3c: 0d b4 in r0, 0x2d ; 45 b3e: 07 fe sbrs r0, 7 b40: fd cf rjmp .-6 ; 0xb3c DDRB&=0xFE; b42: 20 98 cbi 0x04, 0 ; 4 TCNT0=0; b44: 16 bc out 0x26, r1 ; 38 while(TCNT0<80); b46: 86 b5 in r24, 0x26 ; 38 b48: 80 35 cpi r24, 0x50 ; 80 b4a: e8 f3 brcs .-6 ; 0xb46 TCNT0=0; b4c: 16 bc out 0x26, r1 ; 38 while(TCNT0<250); b4e: 86 b5 in r24, 0x26 ; 38 b50: 8a 3f cpi r24, 0xFA ; 250 b52: e8 f3 brcs .-6 ; 0xb4e TCNT0=0; b54: 16 bc out 0x26, r1 ; 38 while(TCNT0<70); b56: 86 b5 in r24, 0x26 ; 38 b58: 86 34 cpi r24, 0x46 ; 70 b5a: e8 f3 brcs .-6 ; 0xb56 TCNT0=0; b5c: 16 bc out 0x26, r1 ; 38 SPSR=1; b5e: 81 e0 ldi r24, 0x01 ; 1 b60: 8d bd out 0x2d, r24 ; 45 DDRB|=1; b62: 20 9a sbi 0x04, 0 ; 4 SPDR = ltr_p[urx[0]]; Wait(); b64: 80 91 28 01 lds r24, 0x0128 b68: fb 01 movw r30, r22 b6a: e8 0f add r30, r24 b6c: f1 1d adc r31, r1 b6e: 80 81 ld r24, Z b70: 8e bd out 0x2e, r24 ; 46 b72: 0d b4 in r0, 0x2d ; 45 b74: 07 fe sbrs r0, 7 b76: fd cf rjmp .-6 ; 0xb72 SPDR = ltr_p[urx[1]]; Wait(); b78: 80 91 29 01 lds r24, 0x0129 b7c: fb 01 movw r30, r22 b7e: e8 0f add r30, r24 b80: f1 1d adc r31, r1 b82: 80 81 ld r24, Z b84: 8e bd out 0x2e, r24 ; 46 b86: 0d b4 in r0, 0x2d ; 45 b88: 07 fe sbrs r0, 7 b8a: fd cf rjmp .-6 ; 0xb86 SPDR = num_p[urx[2]]; Wait(); b8c: 80 91 2a 01 lds r24, 0x012A b90: f9 01 movw r30, r18 b92: e8 0f add r30, r24 b94: f1 1d adc r31, r1 b96: 80 81 ld r24, Z b98: 8e bd out 0x2e, r24 ; 46 b9a: 0d b4 in r0, 0x2d ; 45 b9c: 07 fe sbrs r0, 7 b9e: fd cf rjmp .-6 ; 0xb9a SPDR = ltr_p[urx[3]]; Wait(); ba0: 80 91 2b 01 lds r24, 0x012B ba4: fb 01 movw r30, r22 ba6: e8 0f add r30, r24 ba8: f1 1d adc r31, r1 baa: 80 81 ld r24, Z bac: 8e bd out 0x2e, r24 ; 46 bae: 0d b4 in r0, 0x2d ; 45 bb0: 07 fe sbrs r0, 7 bb2: fd cf rjmp .-6 ; 0xbae SPDR = num_p[urx[4]]; Wait(); bb4: 80 91 2c 01 lds r24, 0x012C bb8: f9 01 movw r30, r18 bba: e8 0f add r30, r24 bbc: f1 1d adc r31, r1 bbe: 80 81 ld r24, Z bc0: 8e bd out 0x2e, r24 ; 46 bc2: 0d b4 in r0, 0x2d ; 45 bc4: 07 fe sbrs r0, 7 bc6: fd cf rjmp .-6 ; 0xbc2 SPDR = num_p[urx[5]]; Wait(); bc8: 80 91 2d 01 lds r24, 0x012D bcc: f9 01 movw r30, r18 bce: e8 0f add r30, r24 bd0: f1 1d adc r31, r1 bd2: 80 81 ld r24, Z bd4: 8e bd out 0x2e, r24 ; 46 bd6: 0d b4 in r0, 0x2d ; 45 bd8: 07 fe sbrs r0, 7 bda: fd cf rjmp .-6 ; 0xbd6 SPDR = num_p[urx[6]]; Wait(); bdc: 80 91 2e 01 lds r24, 0x012E be0: f9 01 movw r30, r18 be2: e8 0f add r30, r24 be4: f1 1d adc r31, r1 be6: 80 81 ld r24, Z be8: 8e bd out 0x2e, r24 ; 46 bea: 0d b4 in r0, 0x2d ; 45 bec: 07 fe sbrs r0, 7 bee: fd cf rjmp .-6 ; 0xbea SPDR = num_p[urx[7]]; Wait(); bf0: 80 91 2f 01 lds r24, 0x012F bf4: f9 01 movw r30, r18 bf6: e8 0f add r30, r24 bf8: f1 1d adc r31, r1 bfa: 80 81 ld r24, Z bfc: 8e bd out 0x2e, r24 ; 46 bfe: 0d b4 in r0, 0x2d ; 45 c00: 07 fe sbrs r0, 7 c02: fd cf rjmp .-6 ; 0xbfe DDRB&=0xFE; c04: 20 98 cbi 0x04, 0 ; 4 } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Message if ((line > 60) && (line < 68) && (showmessage1) && (lowbat)) c06: ca 01 movw r24, r20 c08: cd 97 sbiw r24, 0x3d ; 61 c0a: 07 97 sbiw r24, 0x07 ; 7 c0c: 08 f0 brcs .+2 ; 0xc10 c0e: 9c c0 rjmp .+312 ; 0xd48 c10: 80 91 d9 03 lds r24, 0x03D9 c14: 88 23 and r24, r24 c16: 09 f4 brne .+2 ; 0xc1a c18: 97 c0 rjmp .+302 ; 0xd48 c1a: 80 91 d8 03 lds r24, 0x03D8 c1e: 88 23 and r24, r24 c20: 09 f4 brne .+2 ; 0xc24 c22: 92 c0 rjmp .+292 ; 0xd48 { ltemp = (line - 61) * 27 - 64; ntemp = (line - 61) * 16 - 43; itemp = (line - 61) * 9; ltr_p = ltrs+ltemp; c24: ca 01 movw r24, r20 c26: 88 0f add r24, r24 c28: 99 1f adc r25, r25 c2a: 84 0f add r24, r20 c2c: 95 1f adc r25, r21 c2e: 9c 01 movw r18, r24 c30: 22 0f add r18, r18 c32: 33 1f adc r19, r19 c34: 22 0f add r18, r18 c36: 33 1f adc r19, r19 c38: 22 0f add r18, r18 c3a: 33 1f adc r19, r19 c3c: 82 0f add r24, r18 c3e: 93 1f adc r25, r19 c40: 9c 01 movw r18, r24 c42: 20 56 subi r18, 0x60 ; 96 c44: 34 40 sbci r19, 0x04 ; 4 num_p = nums+ntemp; info_p = infos+itemp; // +++ UBat while(TCNT0 TCNT0=0; c4c: 16 bc out 0x26, r1 ; 38 while(TCNT0<250); c4e: 86 b5 in r24, 0x26 ; 38 c50: 8a 3f cpi r24, 0xFA ; 250 c52: e8 f3 brcs .-6 ; 0xc4e SPSR=1; c54: 81 e0 ldi r24, 0x01 ; 1 c56: 8d bd out 0x2d, r24 ; 45 SPDR = ltr_p[Message_LowBat[0]]; Wait(); c58: f9 01 movw r30, r18 c5a: e0 5c subi r30, 0xC0 ; 192 c5c: ff 4f sbci r31, 0xFF ; 255 c5e: 80 81 ld r24, Z c60: 8e bd out 0x2e, r24 ; 46 c62: 0d b4 in r0, 0x2d ; 45 c64: 07 fe sbrs r0, 7 c66: fd cf rjmp .-6 ; 0xc62 SPDR = ltr_p[Message_LowBat[1]]; Wait(); c68: f9 01 movw r30, r18 c6a: e0 5c subi r30, 0xC0 ; 192 c6c: ff 4f sbci r31, 0xFF ; 255 c6e: 80 81 ld r24, Z c70: 8e bd out 0x2e, r24 ; 46 c72: 0d b4 in r0, 0x2d ; 45 c74: 07 fe sbrs r0, 7 c76: fd cf rjmp .-6 ; 0xc72 SPDR = ltr_p[Message_LowBat[2]]; Wait(); c78: f9 01 movw r30, r18 c7a: e4 5b subi r30, 0xB4 ; 180 c7c: ff 4f sbci r31, 0xFF ; 255 c7e: 80 81 ld r24, Z c80: 8e bd out 0x2e, r24 ; 46 c82: 0d b4 in r0, 0x2d ; 45 c84: 07 fe sbrs r0, 7 c86: fd cf rjmp .-6 ; 0xc82 SPDR = ltr_p[Message_LowBat[3]]; Wait(); c88: f9 01 movw r30, r18 c8a: e1 5b subi r30, 0xB1 ; 177 c8c: ff 4f sbci r31, 0xFF ; 255 c8e: 80 81 ld r24, Z c90: 8e bd out 0x2e, r24 ; 46 c92: 0d b4 in r0, 0x2d ; 45 c94: 07 fe sbrs r0, 7 c96: fd cf rjmp .-6 ; 0xc92 SPDR = ltr_p[Message_LowBat[4]]; Wait(); c98: f9 01 movw r30, r18 c9a: e9 5a subi r30, 0xA9 ; 169 c9c: ff 4f sbci r31, 0xFF ; 255 c9e: 80 81 ld r24, Z ca0: 8e bd out 0x2e, r24 ; 46 ca2: 0d b4 in r0, 0x2d ; 45 ca4: 07 fe sbrs r0, 7 ca6: fd cf rjmp .-6 ; 0xca2 SPDR = ltr_p[Message_LowBat[5]]; Wait(); ca8: f9 01 movw r30, r18 caa: e0 5c subi r30, 0xC0 ; 192 cac: ff 4f sbci r31, 0xFF ; 255 cae: 80 81 ld r24, Z cb0: 8e bd out 0x2e, r24 ; 46 cb2: 0d b4 in r0, 0x2d ; 45 cb4: 07 fe sbrs r0, 7 cb6: fd cf rjmp .-6 ; 0xcb2 SPDR = ltr_p[Message_LowBat[6]]; Wait(); cb8: f9 01 movw r30, r18 cba: ee 5b subi r30, 0xBE ; 190 cbc: ff 4f sbci r31, 0xFF ; 255 cbe: 80 81 ld r24, Z cc0: 8e bd out 0x2e, r24 ; 46 cc2: 0d b4 in r0, 0x2d ; 45 cc4: 07 fe sbrs r0, 7 cc6: fd cf rjmp .-6 ; 0xcc2 SPDR = ltr_p[Message_LowBat[7]]; Wait(); cc8: f9 01 movw r30, r18 cca: ef 5b subi r30, 0xBF ; 191 ccc: ff 4f sbci r31, 0xFF ; 255 cce: 80 81 ld r24, Z cd0: 8e bd out 0x2e, r24 ; 46 cd2: 0d b4 in r0, 0x2d ; 45 cd4: 07 fe sbrs r0, 7 cd6: fd cf rjmp .-6 ; 0xcd2 SPDR = ltr_p[Message_LowBat[8]]; Wait(); cd8: f9 01 movw r30, r18 cda: ec 5a subi r30, 0xAC ; 172 cdc: ff 4f sbci r31, 0xFF ; 255 cde: 80 81 ld r24, Z ce0: 8e bd out 0x2e, r24 ; 46 ce2: 0d b4 in r0, 0x2d ; 45 ce4: 07 fe sbrs r0, 7 ce6: fd cf rjmp .-6 ; 0xce2 SPDR = ltr_p[Message_LowBat[9]]; Wait(); ce8: f9 01 movw r30, r18 cea: ec 5a subi r30, 0xAC ; 172 cec: ff 4f sbci r31, 0xFF ; 255 cee: 80 81 ld r24, Z cf0: 8e bd out 0x2e, r24 ; 46 cf2: 0d b4 in r0, 0x2d ; 45 cf4: 07 fe sbrs r0, 7 cf6: fd cf rjmp .-6 ; 0xcf2 SPDR = ltr_p[Message_LowBat[10]]; Wait(); cf8: f9 01 movw r30, r18 cfa: eb 5b subi r30, 0xBB ; 187 cfc: ff 4f sbci r31, 0xFF ; 255 cfe: 80 81 ld r24, Z d00: 8e bd out 0x2e, r24 ; 46 d02: 0d b4 in r0, 0x2d ; 45 d04: 07 fe sbrs r0, 7 d06: fd cf rjmp .-6 ; 0xd02 SPDR = ltr_p[Message_LowBat[11]]; Wait(); d08: f9 01 movw r30, r18 d0a: ee 5a subi r30, 0xAE ; 174 d0c: ff 4f sbci r31, 0xFF ; 255 d0e: 80 81 ld r24, Z d10: 8e bd out 0x2e, r24 ; 46 d12: 0d b4 in r0, 0x2d ; 45 d14: 07 fe sbrs r0, 7 d16: fd cf rjmp .-6 ; 0xd12 SPDR = ltr_p[Message_LowBat[12]]; Wait(); d18: f9 01 movw r30, r18 d1a: e7 5a subi r30, 0xA7 ; 167 d1c: ff 4f sbci r31, 0xFF ; 255 d1e: 80 81 ld r24, Z d20: 8e bd out 0x2e, r24 ; 46 d22: 0d b4 in r0, 0x2d ; 45 d24: 07 fe sbrs r0, 7 d26: fd cf rjmp .-6 ; 0xd22 SPDR = ltr_p[Message_LowBat[13]]; Wait(); d28: f9 01 movw r30, r18 d2a: e0 5c subi r30, 0xC0 ; 192 d2c: ff 4f sbci r31, 0xFF ; 255 d2e: 80 81 ld r24, Z d30: 8e bd out 0x2e, r24 ; 46 d32: 0d b4 in r0, 0x2d ; 45 d34: 07 fe sbrs r0, 7 d36: fd cf rjmp .-6 ; 0xd32 SPDR = ltr_p[Message_LowBat[14]]; Wait(); d38: f9 01 movw r30, r18 d3a: e0 5c subi r30, 0xC0 ; 192 d3c: ff 4f sbci r31, 0xFF ; 255 d3e: 80 81 ld r24, Z d40: 8e bd out 0x2e, r24 ; 46 d42: 0d b4 in r0, 0x2d ; 45 d44: 07 fe sbrs r0, 7 d46: fd cf rjmp .-6 ; 0xd42 } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // alt value if((line > 80) && (line <250)) d48: ca 01 movw r24, r20 d4a: 81 55 subi r24, 0x51 ; 81 d4c: 90 40 sbci r25, 0x00 ; 0 d4e: 89 3a cpi r24, 0xA9 ; 169 d50: 91 05 cpc r25, r1 d52: 20 f4 brcc .+8 ; 0xd5c { while(TCNT0 TCNT0=0; d5a: 16 bc out 0x26, r1 ; 38 } if ((line > 170) && (line < 178)) d5c: ca 01 movw r24, r20 d5e: 8b 5a subi r24, 0xAB ; 171 d60: 90 40 sbci r25, 0x00 ; 0 d62: 07 97 sbiw r24, 0x07 ; 7 d64: 08 f0 brcs .+2 ; 0xd68 d66: 4d c0 rjmp .+154 ; 0xe02 { ltemp = (line - 171) * 27 - 64; ntemp = (line - 171) * 16 - 43; itemp = (line - 171) * 9; ltr_p = ltrs+ltemp; num_p = nums+ntemp; d68: ca 01 movw r24, r20 d6a: 82 95 swap r24 d6c: 92 95 swap r25 d6e: 90 7f andi r25, 0xF0 ; 240 d70: 98 27 eor r25, r24 d72: 80 7f andi r24, 0xF0 ; 240 d74: 98 27 eor r25, r24 d76: 9c 01 movw r18, r24 d78: 2f 5c subi r18, 0xCF ; 207 d7a: 37 40 sbci r19, 0x07 ; 7 info_p = infos+itemp; while(TCNT0<10); d7c: 86 b5 in r24, 0x26 ; 38 d7e: 8a 30 cpi r24, 0x0A ; 10 d80: e8 f3 brcs .-6 ; 0xd7c SPSR=1; d82: 81 e0 ldi r24, 0x01 ; 1 d84: 8d bd out 0x2d, r24 ; 45 DDRB|=1; d86: 20 9a sbi 0x04, 0 ; 4 SPDR = num_p[altv[0]]; Wait(); d88: 80 91 30 01 lds r24, 0x0130 d8c: f9 01 movw r30, r18 d8e: e8 0f add r30, r24 d90: f1 1d adc r31, r1 d92: 80 81 ld r24, Z d94: 8e bd out 0x2e, r24 ; 46 d96: 0d b4 in r0, 0x2d ; 45 d98: 07 fe sbrs r0, 7 d9a: fd cf rjmp .-6 ; 0xd96 SPDR = num_p[altv[1]]; Wait(); d9c: 80 91 31 01 lds r24, 0x0131 da0: f9 01 movw r30, r18 da2: e8 0f add r30, r24 da4: f1 1d adc r31, r1 da6: 80 81 ld r24, Z da8: 8e bd out 0x2e, r24 ; 46 daa: 0d b4 in r0, 0x2d ; 45 dac: 07 fe sbrs r0, 7 dae: fd cf rjmp .-6 ; 0xdaa SPDR = num_p[altv[2]]; Wait(); db0: 80 91 32 01 lds r24, 0x0132 db4: f9 01 movw r30, r18 db6: e8 0f add r30, r24 db8: f1 1d adc r31, r1 dba: 80 81 ld r24, Z dbc: 8e bd out 0x2e, r24 ; 46 dbe: 0d b4 in r0, 0x2d ; 45 dc0: 07 fe sbrs r0, 7 dc2: fd cf rjmp .-6 ; 0xdbe SPDR = num_p[altv[3]]; Wait(); dc4: 80 91 33 01 lds r24, 0x0133 dc8: f9 01 movw r30, r18 dca: e8 0f add r30, r24 dcc: f1 1d adc r31, r1 dce: 80 81 ld r24, Z dd0: 8e bd out 0x2e, r24 ; 46 dd2: 0d b4 in r0, 0x2d ; 45 dd4: 07 fe sbrs r0, 7 dd6: fd cf rjmp .-6 ; 0xdd2 SPDR = num_p[altv[4]]; Wait(); dd8: 80 91 34 01 lds r24, 0x0134 ddc: f9 01 movw r30, r18 dde: e8 0f add r30, r24 de0: f1 1d adc r31, r1 de2: 80 81 ld r24, Z de4: 8e bd out 0x2e, r24 ; 46 de6: 0d b4 in r0, 0x2d ; 45 de8: 07 fe sbrs r0, 7 dea: fd cf rjmp .-6 ; 0xde6 SPDR = num_p[altv[5]]; Wait(); dec: 80 91 35 01 lds r24, 0x0135 df0: f9 01 movw r30, r18 df2: e8 0f add r30, r24 df4: f1 1d adc r31, r1 df6: 80 81 ld r24, Z df8: 8e bd out 0x2e, r24 ; 46 dfa: 0d b4 in r0, 0x2d ; 45 dfc: 07 fe sbrs r0, 7 dfe: fd cf rjmp .-6 ; 0xdfa DDRB&=0xFE; e00: 20 98 cbi 0x04, 0 ; 4 } if ((line > 179) && (line < (179 + alt_delta)) && alt_dec) e02: 44 3b cpi r20, 0xB4 ; 180 e04: 51 05 cpc r21, r1 e06: b0 f0 brcs .+44 ; 0xe34 e08: 80 91 dc 03 lds r24, 0x03DC e0c: 90 91 dd 03 lds r25, 0x03DD e10: 8d 54 subi r24, 0x4D ; 77 e12: 9f 4f sbci r25, 0xFF ; 255 e14: 48 17 cp r20, r24 e16: 59 07 cpc r21, r25 e18: 68 f4 brcc .+26 ; 0xe34 e1a: 80 91 df 03 lds r24, 0x03DF e1e: 88 23 and r24, r24 e20: 49 f0 breq .+18 ; 0xe34 { while(TCNT0<50); e22: 86 b5 in r24, 0x26 ; 38 e24: 82 33 cpi r24, 0x32 ; 50 e26: e8 f3 brcs .-6 ; 0xe22 SPDR = bar1; Wait(); e28: 80 91 36 01 lds r24, 0x0136 e2c: 8e bd out 0x2e, r24 ; 46 e2e: 0d b4 in r0, 0x2d ; 45 e30: 07 fe sbrs r0, 7 e32: fd cf rjmp .-6 ; 0xe2e } if ((line > (169 - alt_delta)) && (line < 169) && alt_inc) e34: 40 91 ed 03 lds r20, 0x03ED e38: 50 91 ee 03 lds r21, 0x03EE e3c: 20 91 dc 03 lds r18, 0x03DC e40: 30 91 dd 03 lds r19, 0x03DD e44: 89 ea ldi r24, 0xA9 ; 169 e46: 90 e0 ldi r25, 0x00 ; 0 e48: 82 1b sub r24, r18 e4a: 93 0b sbc r25, r19 e4c: 84 17 cp r24, r20 e4e: 95 07 cpc r25, r21 e50: 80 f4 brcc .+32 ; 0xe72 e52: 49 3a cpi r20, 0xA9 ; 169 e54: 51 05 cpc r21, r1 e56: 68 f4 brcc .+26 ; 0xe72 e58: 80 91 de 03 lds r24, 0x03DE e5c: 88 23 and r24, r24 e5e: 49 f0 breq .+18 ; 0xe72 { while(TCNT0<50); e60: 86 b5 in r24, 0x26 ; 38 e62: 82 33 cpi r24, 0x32 ; 50 e64: e8 f3 brcs .-6 ; 0xe60 SPDR = bar1; Wait(); e66: 80 91 36 01 lds r24, 0x0136 e6a: 8e bd out 0x2e, r24 ; 46 e6c: 0d b4 in r0, 0x2d ; 45 e6e: 07 fe sbrs r0, 7 e70: fd cf rjmp .-6 ; 0xe6c } asm("nop"); e72: 00 00 nop // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // grafic array if ((line > 90) && (line < 250) && (showgraphic==1)) e74: ca 01 movw r24, r20 e76: 8b 55 subi r24, 0x5B ; 91 e78: 90 40 sbci r25, 0x00 ; 0 e7a: 8f 39 cpi r24, 0x9F ; 159 e7c: 91 05 cpc r25, r1 e7e: 08 f0 brcs .+2 ; 0xe82 e80: 84 c0 rjmp .+264 ; 0xf8a e82: 80 91 00 01 lds r24, 0x0100 e86: 81 30 cpi r24, 0x01 ; 1 e88: 09 f0 breq .+2 ; 0xe8c e8a: 7f c0 rjmp .+254 ; 0xf8a { while(TCNT0<250); e8c: 86 b5 in r24, 0x26 ; 38 e8e: 8a 3f cpi r24, 0xFA ; 250 e90: e8 f3 brcs .-6 ; 0xe8c TCNT0=0; e92: 16 bc out 0x26, r1 ; 38 i1=7*((line-90)>>2); e94: ca 01 movw r24, r20 e96: 8a 55 subi r24, 0x5A ; 90 e98: 90 40 sbci r25, 0x00 ; 0 e9a: 96 95 lsr r25 e9c: 87 95 ror r24 e9e: 96 95 lsr r25 ea0: 87 95 ror r24 ea2: fc 01 movw r30, r24 ea4: ee 0f add r30, r30 ea6: ff 1f adc r31, r31 ea8: ee 0f add r30, r30 eaa: ff 1f adc r31, r31 eac: ee 0f add r30, r30 eae: ff 1f adc r31, r31 eb0: e8 1b sub r30, r24 eb2: f9 0b sbc r31, r25 i=0; c1=dmem[i1++]; eb4: 87 e3 ldi r24, 0x37 ; 55 eb6: 91 e0 ldi r25, 0x01 ; 1 eb8: df 01 movw r26, r30 eba: a8 0f add r26, r24 ebc: b9 1f adc r27, r25 ebe: 4c 91 ld r20, X ec0: 31 96 adiw r30, 0x01 ; 1 c2=dmem[i1++]; ec2: df 01 movw r26, r30 ec4: a8 0f add r26, r24 ec6: b9 1f adc r27, r25 ec8: 3c 91 ld r19, X eca: 31 96 adiw r30, 0x01 ; 1 c3=dmem[i1++]; ecc: df 01 movw r26, r30 ece: a8 0f add r26, r24 ed0: b9 1f adc r27, r25 ed2: 5c 91 ld r21, X ed4: 31 96 adiw r30, 0x01 ; 1 c4=dmem[i1++]; ed6: df 01 movw r26, r30 ed8: a8 0f add r26, r24 eda: b9 1f adc r27, r25 edc: 6c 91 ld r22, X ede: 31 96 adiw r30, 0x01 ; 1 c5=dmem[i1++]; ee0: df 01 movw r26, r30 ee2: a8 0f add r26, r24 ee4: b9 1f adc r27, r25 ee6: ac 91 ld r26, X ee8: 31 96 adiw r30, 0x01 ; 1 c6=dmem[i1++]; eea: e8 0f add r30, r24 eec: f9 1f adc r31, r25 eee: 70 81 ld r23, Z c7=dmem[i1++]; ef0: 91 81 ldd r25, Z+1 ; 0x01 while(TCNT0<20); ef2: 86 b5 in r24, 0x26 ; 38 ef4: 84 31 cpi r24, 0x14 ; 20 ef6: e8 f3 brcs .-6 ; 0xef2 if (showgraphicb) DDRB|=1; ef8: 80 91 01 01 lds r24, 0x0101 efc: 88 23 and r24, r24 efe: 11 f4 brne .+4 ; 0xf04 f00: 20 e0 ldi r18, 0x00 ; 0 f02: 02 c0 rjmp .+4 ; 0xf08 f04: 20 9a sbi 0x04, 0 ; 4 f06: 20 e0 ldi r18, 0x00 ; 0 do { PORTB=((c1<<2)&0x04); f08: 84 2f mov r24, r20 f0a: 88 0f add r24, r24 f0c: 88 0f add r24, r24 f0e: 84 70 andi r24, 0x04 ; 4 f10: 85 b9 out 0x05, r24 ; 5 c1=c1>>1; f12: 46 95 lsr r20 i++; f14: 2f 5f subi r18, 0xFF ; 255 } while(i<8); f16: 28 30 cpi r18, 0x08 ; 8 f18: b9 f7 brne .-18 ; 0xf08 do { PORTB=((c2<<2)&0x04); f1a: 83 2f mov r24, r19 f1c: 88 0f add r24, r24 f1e: 88 0f add r24, r24 f20: 84 70 andi r24, 0x04 ; 4 f22: 85 b9 out 0x05, r24 ; 5 c2=c2>>1; f24: 36 95 lsr r19 i++; f26: 2f 5f subi r18, 0xFF ; 255 } while(i<16); f28: 20 31 cpi r18, 0x10 ; 16 f2a: b9 f7 brne .-18 ; 0xf1a do { PORTB=((c3<<2)&0x04); f2c: 85 2f mov r24, r21 f2e: 88 0f add r24, r24 f30: 88 0f add r24, r24 f32: 84 70 andi r24, 0x04 ; 4 f34: 85 b9 out 0x05, r24 ; 5 c3=c3>>1; f36: 56 95 lsr r21 i++; f38: 2f 5f subi r18, 0xFF ; 255 } while(i<24); f3a: 28 31 cpi r18, 0x18 ; 24 f3c: b9 f7 brne .-18 ; 0xf2c do { PORTB=((c4<<2)&0x04); f3e: 86 2f mov r24, r22 f40: 88 0f add r24, r24 f42: 88 0f add r24, r24 f44: 84 70 andi r24, 0x04 ; 4 f46: 85 b9 out 0x05, r24 ; 5 c4=c4>>1; f48: 66 95 lsr r22 i++; f4a: 2f 5f subi r18, 0xFF ; 255 } while(i<32); f4c: 20 32 cpi r18, 0x20 ; 32 f4e: b9 f7 brne .-18 ; 0xf3e do { PORTB=((c5<<2)&0x04); f50: 8a 2f mov r24, r26 f52: 88 0f add r24, r24 f54: 88 0f add r24, r24 f56: 84 70 andi r24, 0x04 ; 4 f58: 85 b9 out 0x05, r24 ; 5 c5=c5>>1; f5a: a6 95 lsr r26 i++; f5c: 2f 5f subi r18, 0xFF ; 255 } while(i<40); f5e: 28 32 cpi r18, 0x28 ; 40 f60: b9 f7 brne .-18 ; 0xf50 do { PORTB=((c6<<2)&0x04); f62: 87 2f mov r24, r23 f64: 88 0f add r24, r24 f66: 88 0f add r24, r24 f68: 84 70 andi r24, 0x04 ; 4 f6a: 85 b9 out 0x05, r24 ; 5 c6=c6>>1; f6c: 76 95 lsr r23 i++; f6e: 2f 5f subi r18, 0xFF ; 255 } while(i<48); f70: 20 33 cpi r18, 0x30 ; 48 f72: b9 f7 brne .-18 ; 0xf62 do { PORTB=((c7<<2)&0x04); f74: 89 2f mov r24, r25 f76: 88 0f add r24, r24 f78: 88 0f add r24, r24 f7a: 84 70 andi r24, 0x04 ; 4 f7c: 85 b9 out 0x05, r24 ; 5 c7=c7>>1; f7e: 96 95 lsr r25 i++; f80: 2f 5f subi r18, 0xFF ; 255 } while(i<56); f82: 28 33 cpi r18, 0x38 ; 56 f84: b9 f7 brne .-18 ; 0xf74 PORTB=0x00; f86: 15 b8 out 0x05, r1 ; 5 DDRB&=0xFE; f88: 20 98 cbi 0x04, 0 ; 4 } // Debug - remove for release // if ((line > 270) && (line < 278)) // { // SPSR=1; // ltemp = (line - 271) * 27 - 64; // ntemp = (line - 271) * 16 - 43; // itemp = (line - 271) * 8; // ltr_p = ltrs+ltemp; // num_p = nums+ntemp; // info_p = infos+itemp; // while(TCNT0 280) && (line < 288)) // { // SPSR=1; // ltemp = (line - 281) * 27 - 64; // ntemp = (line - 281) * 16 - 43; // ltr_p = ltrs+ltemp; //by calculating this pointer you only have to // num_p = nums+ntemp; //add ltemp/ntemp once per line, instead of for //every char. This tightens up printing a bit //saves about 3 assembly instructions per char // SPDR = ltr_p['@']; Wait(); //goofy hack to make SPSR=0 work, write an empty char at SPSR=1 first // SPSR=1; // while(TCNT0 300) && (line < 308)) f8a: 20 91 ed 03 lds r18, 0x03ED f8e: 30 91 ee 03 lds r19, 0x03EE f92: c9 01 movw r24, r18 f94: 8d 52 subi r24, 0x2D ; 45 f96: 91 40 sbci r25, 0x01 ; 1 f98: 07 97 sbiw r24, 0x07 ; 7 f9a: 08 f0 brcs .+2 ; 0xf9e f9c: a2 c0 rjmp .+324 ; 0x10e2 { SPSR=1; f9e: 81 e0 ldi r24, 0x01 ; 1 fa0: 8d bd out 0x2d, r24 ; 45 ltemp = (line - 301) * 27 - 64; ntemp = (line - 301) * 16 - 43; ltr_p = ltrs+ltemp; fa2: c9 01 movw r24, r18 fa4: 88 0f add r24, r24 fa6: 99 1f adc r25, r25 fa8: 82 0f add r24, r18 faa: 93 1f adc r25, r19 fac: 9c 01 movw r18, r24 fae: 22 0f add r18, r18 fb0: 33 1f adc r19, r19 fb2: 22 0f add r18, r18 fb4: 33 1f adc r19, r19 fb6: 22 0f add r18, r18 fb8: 33 1f adc r19, r19 fba: 82 0f add r24, r18 fbc: 93 1f adc r25, r19 fbe: 9c 01 movw r18, r24 fc0: 20 5b subi r18, 0xB0 ; 176 fc2: 3d 41 sbci r19, 0x1D ; 29 num_p = nums+ntemp; while(TCNT0 SPDR = ltr_p[head[0]]; Wait(); fca: f9 01 movw r30, r18 fcc: ed 5b subi r30, 0xBD ; 189 fce: ff 4f sbci r31, 0xFF ; 255 fd0: 80 81 ld r24, Z fd2: 8e bd out 0x2e, r24 ; 46 fd4: 0d b4 in r0, 0x2d ; 45 fd6: 07 fe sbrs r0, 7 fd8: fd cf rjmp .-6 ; 0xfd4 SPDR = ltr_p[head[1]]; Wait(); fda: f9 01 movw r30, r18 fdc: e0 5c subi r30, 0xC0 ; 192 fde: ff 4f sbci r31, 0xFF ; 255 fe0: 80 81 ld r24, Z fe2: 8e bd out 0x2e, r24 ; 46 fe4: 0d b4 in r0, 0x2d ; 45 fe6: 07 fe sbrs r0, 7 fe8: fd cf rjmp .-6 ; 0xfe4 SPDR = ltr_p[head[2]]; Wait(); fea: f9 01 movw r30, r18 fec: e9 5b subi r30, 0xB9 ; 185 fee: ff 4f sbci r31, 0xFF ; 255 ff0: 80 81 ld r24, Z ff2: 8e bd out 0x2e, r24 ; 46 ff4: 0d b4 in r0, 0x2d ; 45 ff6: 07 fe sbrs r0, 7 ff8: fd cf rjmp .-6 ; 0xff4 SPDR = ltr_p[head[3]]; Wait(); ffa: f9 01 movw r30, r18 ffc: eb 5a subi r30, 0xAB ; 171 ffe: ff 4f sbci r31, 0xFF ; 255 1000: 80 81 ld r24, Z 1002: 8e bd out 0x2e, r24 ; 46 1004: 0d b4 in r0, 0x2d ; 45 1006: 07 fe sbrs r0, 7 1008: fd cf rjmp .-6 ; 0x1004 SPDR = ltr_p[head[4]]; Wait(); 100a: f9 01 movw r30, r18 100c: e2 5b subi r30, 0xB2 ; 178 100e: ff 4f sbci r31, 0xFF ; 255 1010: 80 81 ld r24, Z 1012: 8e bd out 0x2e, r24 ; 46 1014: 0d b4 in r0, 0x2d ; 45 1016: 07 fe sbrs r0, 7 1018: fd cf rjmp .-6 ; 0x1014 SPDR = ltr_p[head[5]]; Wait(); 101a: f9 01 movw r30, r18 101c: ec 5a subi r30, 0xAC ; 172 101e: ff 4f sbci r31, 0xFF ; 255 1020: 80 81 ld r24, Z 1022: 8e bd out 0x2e, r24 ; 46 1024: 0d b4 in r0, 0x2d ; 45 1026: 07 fe sbrs r0, 7 1028: fd cf rjmp .-6 ; 0x1024 SPDR = ltr_p[head[6]]; Wait(); 102a: f9 01 movw r30, r18 102c: eb 5b subi r30, 0xBB ; 187 102e: ff 4f sbci r31, 0xFF ; 255 1030: 80 81 ld r24, Z 1032: 8e bd out 0x2e, r24 ; 46 1034: 0d b4 in r0, 0x2d ; 45 1036: 07 fe sbrs r0, 7 1038: fd cf rjmp .-6 ; 0x1034 SPDR = ltr_p[head[7]]; Wait(); 103a: f9 01 movw r30, r18 103c: ee 5a subi r30, 0xAE ; 174 103e: ff 4f sbci r31, 0xFF ; 255 1040: 80 81 ld r24, Z 1042: 8e bd out 0x2e, r24 ; 46 1044: 0d b4 in r0, 0x2d ; 45 1046: 07 fe sbrs r0, 7 1048: fd cf rjmp .-6 ; 0x1044 SPDR = ltr_p[head[8]]; Wait(); 104a: f9 01 movw r30, r18 104c: e0 5c subi r30, 0xC0 ; 192 104e: ff 4f sbci r31, 0xFF ; 255 1050: 80 81 ld r24, Z 1052: 8e bd out 0x2e, r24 ; 46 1054: 0d b4 in r0, 0x2d ; 45 1056: 07 fe sbrs r0, 7 1058: fd cf rjmp .-6 ; 0x1054 SPDR = ltr_p[head[9]]; Wait(); 105a: f9 01 movw r30, r18 105c: e4 5b subi r30, 0xB4 ; 180 105e: ff 4f sbci r31, 0xFF ; 255 1060: 80 81 ld r24, Z 1062: 8e bd out 0x2e, r24 ; 46 1064: 0d b4 in r0, 0x2d ; 45 1066: 07 fe sbrs r0, 7 1068: fd cf rjmp .-6 ; 0x1064 SPDR = ltr_p[head[10]]; Wait(); 106a: f9 01 movw r30, r18 106c: e1 5b subi r30, 0xB1 ; 177 106e: ff 4f sbci r31, 0xFF ; 255 1070: 80 81 ld r24, Z 1072: 8e bd out 0x2e, r24 ; 46 1074: 0d b4 in r0, 0x2d ; 45 1076: 07 fe sbrs r0, 7 1078: fd cf rjmp .-6 ; 0x1074 SPDR = ltr_p[head[11]]; Wait(); 107a: f9 01 movw r30, r18 107c: e9 5b subi r30, 0xB9 ; 185 107e: ff 4f sbci r31, 0xFF ; 255 1080: 80 81 ld r24, Z 1082: 8e bd out 0x2e, r24 ; 46 1084: 0d b4 in r0, 0x2d ; 45 1086: 07 fe sbrs r0, 7 1088: fd cf rjmp .-6 ; 0x1084 SPDR = ltr_p[head[12]]; Wait(); 108a: f9 01 movw r30, r18 108c: eb 5b subi r30, 0xBB ; 187 108e: ff 4f sbci r31, 0xFF ; 255 1090: 80 81 ld r24, Z 1092: 8e bd out 0x2e, r24 ; 46 1094: 0d b4 in r0, 0x2d ; 45 1096: 07 fe sbrs r0, 7 1098: fd cf rjmp .-6 ; 0x1094 SPDR = ltr_p[head[13]]; Wait(); 109a: f9 01 movw r30, r18 109c: e3 5b subi r30, 0xB3 ; 179 109e: ff 4f sbci r31, 0xFF ; 255 10a0: 80 81 ld r24, Z 10a2: 8e bd out 0x2e, r24 ; 46 10a4: 0d b4 in r0, 0x2d ; 45 10a6: 07 fe sbrs r0, 7 10a8: fd cf rjmp .-6 ; 0x10a4 SPDR = ltr_p[head[14]]; Wait(); 10aa: f9 01 movw r30, r18 10ac: ef 5b subi r30, 0xBF ; 191 10ae: ff 4f sbci r31, 0xFF ; 255 10b0: 80 81 ld r24, Z 10b2: 8e bd out 0x2e, r24 ; 46 10b4: 0d b4 in r0, 0x2d ; 45 10b6: 07 fe sbrs r0, 7 10b8: fd cf rjmp .-6 ; 0x10b4 SPDR = ltr_p[head[15]]; Wait(); 10ba: f9 01 movw r30, r18 10bc: e2 5b subi r30, 0xB2 ; 178 10be: ff 4f sbci r31, 0xFF ; 255 10c0: 80 81 ld r24, Z 10c2: 8e bd out 0x2e, r24 ; 46 10c4: 0d b4 in r0, 0x2d ; 45 10c6: 07 fe sbrs r0, 7 10c8: fd cf rjmp .-6 ; 0x10c4 SPDR = ltr_p[head[16]]; Wait(); 10ca: f9 01 movw r30, r18 10cc: e2 5b subi r30, 0xB2 ; 178 10ce: ff 4f sbci r31, 0xFF ; 255 10d0: 80 81 ld r24, Z 10d2: 8e bd out 0x2e, r24 ; 46 10d4: 0d b4 in r0, 0x2d ; 45 10d6: 07 fe sbrs r0, 7 10d8: fd cf rjmp .-6 ; 0x10d4 TCNT0=0; 10da: 16 bc out 0x26, r1 ; 38 while(TCNT0<2); 10dc: 86 b5 in r24, 0x26 ; 38 10de: 82 30 cpi r24, 0x02 ; 2 10e0: e8 f3 brcs .-6 ; 0x10dc 10e2: 08 95 ret 000010e4 <__vector_1>: } } // end draw_line() //----------------------------------------------------------------------------- // H-Sync Interrupt //-----------------------------------------------------------------------------*/ SIGNAL(SIG_INTERRUPT0) { 10e4: 1f 92 push r1 10e6: 0f 92 push r0 10e8: 0f b6 in r0, 0x3f ; 63 10ea: 0f 92 push r0 10ec: 11 24 eor r1, r1 10ee: 2f 93 push r18 10f0: 3f 93 push r19 10f2: 4f 93 push r20 10f4: 5f 93 push r21 10f6: 6f 93 push r22 10f8: 7f 93 push r23 10fa: 8f 93 push r24 10fc: 9f 93 push r25 10fe: af 93 push r26 1100: bf 93 push r27 1102: ef 93 push r30 1104: ff 93 push r31 TCNT0=0; // reset timer 1106: 16 bc out 0x26, r1 ; 38 line++; // increment line counter 1108: 80 91 ed 03 lds r24, 0x03ED 110c: 90 91 ee 03 lds r25, 0x03EE 1110: 01 96 adiw r24, 0x01 ; 1 1112: 90 93 ee 03 sts 0x03EE, r25 1116: 80 93 ed 03 sts 0x03ED, r24 draw_line(); // output the line 111a: 90 db rcall .-2272 ; 0x83c 111c: ff 91 pop r31 111e: ef 91 pop r30 1120: bf 91 pop r27 1122: af 91 pop r26 1124: 9f 91 pop r25 1126: 8f 91 pop r24 1128: 7f 91 pop r23 112a: 6f 91 pop r22 112c: 5f 91 pop r21 112e: 4f 91 pop r20 1130: 3f 91 pop r19 1132: 2f 91 pop r18 1134: 0f 90 pop r0 1136: 0f be out 0x3f, r0 ; 63 1138: 0f 90 pop r0 113a: 1f 90 pop r1 113c: 18 95 reti 0000113e <__vector_2>: } //----------------------------------------------------------------------------- // V-Sync Interrupt //-----------------------------------------------------------------------------*/ SIGNAL(SIG_INTERRUPT1) { 113e: 1f 92 push r1 1140: 0f 92 push r0 1142: 0f b6 in r0, 0x3f ; 63 1144: 0f 92 push r0 1146: 11 24 eor r1, r1 1148: 8f 93 push r24 line = 0; 114a: 10 92 ee 03 sts 0x03EE, r1 114e: 10 92 ed 03 sts 0x03ED, r1 framecounter++; 1152: 80 91 da 03 lds r24, 0x03DA 1156: 8f 5f subi r24, 0xFF ; 255 1158: 80 93 da 03 sts 0x03DA, r24 115c: 8f 91 pop r24 115e: 0f 90 pop r0 1160: 0f be out 0x3f, r0 ; 63 1162: 0f 90 pop r0 1164: 1f 90 pop r1 1166: 18 95 reti 00001168 <__udivmodhi4>: 1168: aa 1b sub r26, r26 116a: bb 1b sub r27, r27 116c: 51 e1 ldi r21, 0x11 ; 17 116e: 07 c0 rjmp .+14 ; 0x117e <__udivmodhi4_ep> 00001170 <__udivmodhi4_loop>: 1170: aa 1f adc r26, r26 1172: bb 1f adc r27, r27 1174: a6 17 cp r26, r22 1176: b7 07 cpc r27, r23 1178: 10 f0 brcs .+4 ; 0x117e <__udivmodhi4_ep> 117a: a6 1b sub r26, r22 117c: b7 0b sbc r27, r23 0000117e <__udivmodhi4_ep>: 117e: 88 1f adc r24, r24 1180: 99 1f adc r25, r25 1182: 5a 95 dec r21 1184: a9 f7 brne .-22 ; 0x1170 <__udivmodhi4_loop> 1186: 80 95 com r24 1188: 90 95 com r25 118a: bc 01 movw r22, r24 118c: cd 01 movw r24, r26 118e: 08 95 ret 00001190 <__divmodhi4>: 1190: 97 fb bst r25, 7 1192: 09 2e mov r0, r25 1194: 07 26 eor r0, r23 1196: 0a d0 rcall .+20 ; 0x11ac <__divmodhi4_neg1> 1198: 77 fd sbrc r23, 7 119a: 04 d0 rcall .+8 ; 0x11a4 <__divmodhi4_neg2> 119c: e5 df rcall .-54 ; 0x1168 <__udivmodhi4> 119e: 06 d0 rcall .+12 ; 0x11ac <__divmodhi4_neg1> 11a0: 00 20 and r0, r0 11a2: 1a f4 brpl .+6 ; 0x11aa <__divmodhi4_exit> 000011a4 <__divmodhi4_neg2>: 11a4: 70 95 com r23 11a6: 61 95 neg r22 11a8: 7f 4f sbci r23, 0xFF ; 255 000011aa <__divmodhi4_exit>: 11aa: 08 95 ret 000011ac <__divmodhi4_neg1>: 11ac: f6 f7 brtc .-4 ; 0x11aa <__divmodhi4_exit> 11ae: 90 95 com r25 11b0: 81 95 neg r24 11b2: 9f 4f sbci r25, 0xFF ; 255 11b4: 08 95 ret 000011b6 <_exit>: 11b6: ff cf rjmp .-2 ; 0x11b6 <_exit>