Files
There are no circuits or boards in this repository.
Last update 6 years 3 months
by
Petro Zhuk
clock.lssclock.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 00001adc 00000000 00000000 000000b4 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000042 00800060 00001adc 00001b90 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 0000011c 008000a2 008000a2 00001bd2 2**0 ALLOC 3 .eeprom 0000000b 00810000 00810000 00001bd2 2**0 CONTENTS, ALLOC, LOAD, DATA 4 .comment 00000030 00000000 00000000 00001bdd 2**0 CONTENTS, READONLY 5 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00001c10 2**2 CONTENTS, READONLY 6 .debug_aranges 000002d0 00000000 00000000 00001c50 2**3 CONTENTS, READONLY, DEBUGGING 7 .debug_info 0000353e 00000000 00000000 00001f20 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_abbrev 00000bee 00000000 00000000 0000545e 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_line 00001e33 00000000 00000000 0000604c 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_frame 00000818 00000000 00000000 00007e80 2**2 CONTENTS, READONLY, DEBUGGING 11 .debug_str 00000a28 00000000 00000000 00008698 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_loc 0000260f 00000000 00000000 000090c0 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_ranges 00000260 00000000 00000000 0000b6cf 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> 2: 2c c0 rjmp .+88 ; 0x5c <__bad_interrupt> 4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt> 6: b1 c0 rjmp .+354 ; 0x16a <__vector_3> 8: 00 c1 rjmp .+512 ; 0x20a <__vector_4> a: 28 c0 rjmp .+80 ; 0x5c <__bad_interrupt> c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt> e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt> 10: c2 c7 rjmp .+3972 ; 0xf96 <__vector_8> 12: 24 c0 rjmp .+72 ; 0x5c <__bad_interrupt> 14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt> 16: 22 c0 rjmp .+68 ; 0x5c <__bad_interrupt> 18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt> 1a: 20 c0 rjmp .+64 ; 0x5c <__bad_interrupt> 1c: 48 c0 rjmp .+144 ; 0xae <__vector_14> 1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt> 20: 1d c0 rjmp .+58 ; 0x5c <__bad_interrupt> 22: 1c c0 rjmp .+56 ; 0x5c <__bad_interrupt> 24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt> 00000026 <__ctors_end>: 26: 11 24 eor r1, r1 28: 1f be out 0x3f, r1 ; 63 2a: cf e5 ldi r28, 0x5F ; 95 2c: d4 e0 ldi r29, 0x04 ; 4 2e: de bf out 0x3e, r29 ; 62 30: cd bf out 0x3d, r28 ; 61 00000032 <__do_copy_data>: 32: 10 e0 ldi r17, 0x00 ; 0 34: a0 e6 ldi r26, 0x60 ; 96 36: b0 e0 ldi r27, 0x00 ; 0 38: ec ed ldi r30, 0xDC ; 220 3a: fa e1 ldi r31, 0x1A ; 26 3c: 02 c0 rjmp .+4 ; 0x42 <__SREG__+0x3> 3e: 05 90 lpm r0, Z+ 40: 0d 92 st X+, r0 42: a2 3a cpi r26, 0xA2 ; 162 44: b1 07 cpc r27, r17 46: d9 f7 brne .-10 ; 0x3e <__SP_H__> 00000048 <__do_clear_bss>: 48: 21 e0 ldi r18, 0x01 ; 1 4a: a2 ea ldi r26, 0xA2 ; 162 4c: b0 e0 ldi r27, 0x00 ; 0 4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> 00000050 <.do_clear_bss_loop>: 50: 1d 92 st X+, r1 00000052 <.do_clear_bss_start>: 52: ae 3b cpi r26, 0xBE ; 190 54: b2 07 cpc r27, r18 56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> 58: 71 d9 rcall .-3358 ; 0xfffff33c <__eeprom_end+0xff7ef331> 5a: 3e cd rjmp .-1412 ; 0xfffffad8 <__eeprom_end+0xff7efacd> 0000005c <__bad_interrupt>: 5c: d1 cf rjmp .-94 ; 0x0 <__vectors> 0000005e <output_grb>: .equ OUTBIT, 0 .global output_grb output_grb: movw r26, r24 ;2r6:27 = X = p_buf 5e: dc 01 movw r26, r24 movw r24, r22 ;r24:25 = count 60: cb 01 movw r24, r22 in r22, SREG ;save SREG (global int state) 62: 6f b7 in r22, 0x3f ; 63 cli ;no interrupts from here on, we're cycle-counting 64: f8 94 cli in r20, PORTB 66: 48 b3 in r20, 0x18 ; 24 ori r20, (1<<OUTBIT) ;our '1' output 68: 41 60 ori r20, 0x01 ; 1 in r21, PORTB 6a: 58 b3 in r21, 0x18 ; 24 andi r21, ~(1<<OUTBIT) ;our '0' output 6c: 5e 7f andi r21, 0xFE ; 254 ldi r19, 7 ;7 bit counter (8th bit is different) 6e: 37 e0 ldi r19, 0x07 ; 7 ld r18,X+ ;get first data byte 70: 2d 91 ld r18, X+ 00000072 <loop1>: loop1: out PORTB, r20 ; 1 +0 start of a bit pulse 72: 48 bb out 0x18, r20 ; 24 lsl r18 ; 1 +1 next bit into C, MSB first 74: 22 0f add r18, r18 brcs L1 ; 1/2 +2 branch if 1 76: 30 f0 brcs .+12 ; 0x84 <L1> out PORTB, r21 ; 1 +3 end hi for '0' bit (3 clocks hi) 78: 58 bb out 0x18, r21 ; 24 nop ; 1 +4 7a: 00 00 nop bst r18, 7 ; 1 +5 save last bit of data for fast branching 7c: 27 fb bst r18, 7 subi r19, 1 ; 1 +6 how many more bits for this byte? 7e: 31 50 subi r19, 0x01 ; 1 breq bit8 ; 1/2 +7 last bit, do differently 80: 31 f0 breq .+12 ; 0x8e <bit8> rjmp loop1 ; 2 +8, 10 total for 0 bit 82: f7 cf rjmp .-18 ; 0x72 <loop1> 00000084 <L1>: L1: nop ; 1 +4 84: 00 00 nop bst r18, 7 ; 1 +5 save last bit of data for fast branching 86: 27 fb bst r18, 7 subi r19, 1 ; 1 +6 how many more bits for this byte 88: 31 50 subi r19, 0x01 ; 1 out PORTB, r21 ; 1 +7 end hi for '1' bit (7 clocks hi) 8a: 58 bb out 0x18, r21 ; 24 brne loop1 ; 2/1 +8 10 total for 1 bit (fall thru if last bit) 8c: 91 f7 brne .-28 ; 0x72 <loop1> 0000008e <bit8>: bit8: ldi r19, 7 ; 1 +9 bit count for next byte 8e: 37 e0 ldi r19, 0x07 ; 7 out PORTB, r20 ; 1 +0 start of a bit pulse 90: 48 bb out 0x18, r20 ; 24 brts L2 ; 1/2 +1 branch if last bit is a 1 92: 3e f0 brts .+14 ; 0xa2 <L2> nop ; 1 +2 94: 00 00 nop out PORTB, r21 ; 1 +3 end hi for '0' bit (3 clocks hi) 96: 58 bb out 0x18, r21 ; 24 ld r18, X+ ; 2 +4 fetch next byte 98: 2d 91 ld r18, X+ sbiw r24, 1 ; 2 +6 dec byte counter 9a: 01 97 sbiw r24, 0x01 ; 1 brne loop1 ; 2 +8 loop back or return 9c: 51 f7 brne .-44 ; 0x72 <loop1> out SREG, r22 ; restore global int flag 9e: 6f bf out 0x3f, r22 ; 63 ret a0: 08 95 ret 000000a2 <L2>: L2: ld r18, X+ ; 2 +3 fetch next byte a2: 2d 91 ld r18, X+ sbiw r24, 1 ; 2 +5 dec byte counter a4: 01 97 sbiw r24, 0x01 ; 1 out PORTB, r21 ; 1 +7 end hi for '1' bit (7 clocks hi) a6: 58 bb out 0x18, r21 ; 24 brne loop1 ; 2 +8 loop back or return a8: 21 f7 brne .-56 ; 0x72 <loop1> out SREG, r22 ; restore global int flag aa: 6f bf out 0x3f, r22 ; 63 ac: 08 95 ret 000000ae <__vector_14>: #define ADC_CHANEL 6 volatile uint8_t dataADC = 0; ISR(ADC_vect) { ae: 1f 92 push r1 b0: 0f 92 push r0 b2: 0f b6 in r0, 0x3f ; 63 b4: 0f 92 push r0 b6: 11 24 eor r1, r1 b8: 8f 93 push r24 dataADC = ADCH; ba: 85 b1 in r24, 0x05 ; 5 bc: 80 93 a2 00 sts 0x00A2, r24 ; 0x8000a2 <__data_end> } c0: 8f 91 pop r24 c2: 0f 90 pop r0 c4: 0f be out 0x3f, r0 ; 63 c6: 0f 90 pop r0 c8: 1f 90 pop r1 ca: 18 95 reti 000000cc <BrightnessInit>: void BrightnessInit() { ADMUX |= (1 << REFS0)|(1<<ADLAR)|(1<<MUX1)|(1<<MUX2); //6 chanel adc cc: 87 b1 in r24, 0x07 ; 7 ce: 86 66 ori r24, 0x66 ; 102 d0: 87 b9 out 0x07, r24 ; 7 ADCSRA |= (1 << ADEN)|(1 << ADSC)|(1 << ADIE)|(1<<ADFR)|(1<<ADPS2)|(1<<ADPS1)|(1 << ADPS0); d2: 86 b1 in r24, 0x06 ; 6 d4: 8f 6e ori r24, 0xEF ; 239 d6: 86 b9 out 0x06, r24 ; 6 d8: 08 95 ret 000000da <BrightnessGet>: } uint8_t BrightnessGet() { return dataADC; da: 80 91 a2 00 lds r24, 0x00A2 ; 0x8000a2 <__data_end> de: 08 95 ret 000000e0 <ControlInit>: uint8_t permissNextClick[3] = {1,1,1}; void ControlInit() { DDRD &=(~((1<<BTN0)|(1<BTN1)|(1<<BTN2))); // input e0: 81 b3 in r24, 0x11 ; 17 e2: 8c 7f andi r24, 0xFC ; 252 e4: 81 bb out 0x11, r24 ; 17 PORTD |= ((1<<BTN0)|(1<<BTN1)|(1<<BTN2)); // pull up e6: 82 b3 in r24, 0x12 ; 18 e8: 87 60 ori r24, 0x07 ; 7 ea: 82 bb out 0x12, r24 ; 18 ec: 08 95 ret 000000ee <ControlCheck>: } control_result ControlCheck() { result = NO_PRESS; ee: 10 92 a3 00 sts 0x00A3, r1 ; 0x8000a3 <result> //first if(bit_is_clear(PIND, BTN0)) f2: 80 99 sbic 0x10, 0 ; 16 f4: 0e c0 rjmp .+28 ; 0x112 <ControlCheck+0x24> { if(permissNextClick[0]) f6: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <__data_start> fa: 88 23 and r24, r24 fc: 31 f0 breq .+12 ; 0x10a <ControlCheck+0x1c> { result = PRESS_LEFT; fe: 81 e0 ldi r24, 0x01 ; 1 100: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> permissNextClick[0] = 0; 104: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <__data_start> 108: 07 c0 rjmp .+14 ; 0x118 <ControlCheck+0x2a> }else result = PRESSED_LEFT; 10a: 84 e0 ldi r24, 0x04 ; 4 10c: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> 110: 03 c0 rjmp .+6 ; 0x118 <ControlCheck+0x2a> }else { permissNextClick[0] = 1; 112: 81 e0 ldi r24, 0x01 ; 1 114: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <__data_start> } //second if(bit_is_clear(PIND, BTN1)) 118: 82 99 sbic 0x10, 2 ; 16 11a: 0e c0 rjmp .+28 ; 0x138 <ControlCheck+0x4a> { if(permissNextClick[1]) 11c: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <__data_start+0x1> 120: 88 23 and r24, r24 122: 31 f0 breq .+12 ; 0x130 <ControlCheck+0x42> { result = PRESS_CENTER; 124: 82 e0 ldi r24, 0x02 ; 2 126: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> permissNextClick[1] = 0; 12a: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <__data_start+0x1> 12e: 07 c0 rjmp .+14 ; 0x13e <ControlCheck+0x50> }else result = PRESSED_CENTER; 130: 85 e0 ldi r24, 0x05 ; 5 132: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> 136: 03 c0 rjmp .+6 ; 0x13e <ControlCheck+0x50> }else { permissNextClick[1] = 1; 138: 81 e0 ldi r24, 0x01 ; 1 13a: 80 93 61 00 sts 0x0061, r24 ; 0x800061 <__data_start+0x1> } //third if(bit_is_clear(PIND, BTN2)) 13e: 81 99 sbic 0x10, 1 ; 16 140: 0e c0 rjmp .+28 ; 0x15e <ControlCheck+0x70> { if(permissNextClick[2]) 142: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <__data_start+0x2> 146: 88 23 and r24, r24 148: 31 f0 breq .+12 ; 0x156 <ControlCheck+0x68> { result = PRESS_RIGHT; 14a: 83 e0 ldi r24, 0x03 ; 3 14c: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> permissNextClick[2] = 0; 150: 10 92 62 00 sts 0x0062, r1 ; 0x800062 <__data_start+0x2> 154: 07 c0 rjmp .+14 ; 0x164 <ControlCheck+0x76> }else result = PRESSED_RIGHT; 156: 86 e0 ldi r24, 0x06 ; 6 158: 80 93 a3 00 sts 0x00A3, r24 ; 0x8000a3 <result> 15c: 03 c0 rjmp .+6 ; 0x164 <ControlCheck+0x76> }else { permissNextClick[2] = 1; 15e: 81 e0 ldi r24, 0x01 ; 1 160: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <__data_start+0x2> } return result; } 164: 80 91 a3 00 lds r24, 0x00A3 ; 0x8000a3 <result> 168: 08 95 ret 0000016a <__vector_3>: { uint8_t numDigit; for (numDigit=0;numDigit<NUM_DIGIT;numDigit++) brightness[numDigit] = 255-brightLevel[0][NUM_DIGIT-numDigit-1]; } 16a: 1f 92 push r1 16c: 0f 92 push r0 16e: 0f b6 in r0, 0x3f ; 63 170: 0f 92 push r0 172: 11 24 eor r1, r1 174: 2f 93 push r18 176: 3f 93 push r19 178: 4f 93 push r20 17a: 5f 93 push r21 17c: 6f 93 push r22 17e: 7f 93 push r23 180: 8f 93 push r24 182: 9f 93 push r25 184: af 93 push r26 186: bf 93 push r27 188: ef 93 push r30 18a: ff 93 push r31 18c: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 190: 90 e0 ldi r25, 0x00 ; 0 192: fc 01 movw r30, r24 194: ee 0f add r30, r30 196: ff 1f adc r31, r31 198: ee 0f add r30, r30 19a: ff 1f adc r31, r31 19c: 8e 0f add r24, r30 19e: 9f 1f adc r25, r31 1a0: fc 01 movw r30, r24 1a2: e0 5a subi r30, 0xA0 ; 160 1a4: fe 4f sbci r31, 0xFE ; 254 1a6: e1 81 ldd r30, Z+1 ; 0x01 1a8: f0 e0 ldi r31, 0x00 ; 0 1aa: e9 56 subi r30, 0x69 ; 105 1ac: ff 4f sbci r31, 0xFF ; 255 1ae: 80 81 ld r24, Z 1b0: 88 bb out 0x18, r24 ; 24 1b2: 81 e0 ldi r24, 0x01 ; 1 1b4: 90 e0 ldi r25, 0x00 ; 0 1b6: 00 90 a4 00 lds r0, 0x00A4 ; 0x8000a4 <currentNum> 1ba: 02 c0 rjmp .+4 ; 0x1c0 <__vector_3+0x56> 1bc: 88 0f add r24, r24 1be: 99 1f adc r25, r25 1c0: 0a 94 dec r0 1c2: e2 f7 brpl .-8 ; 0x1bc <__vector_3+0x52> 1c4: 85 bb out 0x15, r24 ; 21 1c6: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 1ca: 8f 5f subi r24, 0xFF ; 255 1cc: 86 30 cpi r24, 0x06 ; 6 1ce: 19 f0 breq .+6 ; 0x1d6 <__vector_3+0x6c> 1d0: 80 93 a4 00 sts 0x00A4, r24 ; 0x8000a4 <currentNum> 1d4: 02 c0 rjmp .+4 ; 0x1da <__vector_3+0x70> 1d6: 10 92 a4 00 sts 0x00A4, r1 ; 0x8000a4 <currentNum> 1da: 80 91 ac 00 lds r24, 0x00AC ; 0x8000ac <ledAnimationRequest> 1de: 88 23 and r24, r24 1e0: 19 f0 breq .+6 ; 0x1e8 <__vector_3+0x7e> 1e2: e3 d4 rcall .+2502 ; 0xbaa <LedUpdate> 1e4: 10 92 ac 00 sts 0x00AC, r1 ; 0x8000ac <ledAnimationRequest> 1e8: ff 91 pop r31 1ea: ef 91 pop r30 1ec: bf 91 pop r27 1ee: af 91 pop r26 1f0: 9f 91 pop r25 1f2: 8f 91 pop r24 1f4: 7f 91 pop r23 1f6: 6f 91 pop r22 1f8: 5f 91 pop r21 1fa: 4f 91 pop r20 1fc: 3f 91 pop r19 1fe: 2f 91 pop r18 200: 0f 90 pop r0 202: 0f be out 0x3f, r0 ; 63 204: 0f 90 pop r0 206: 1f 90 pop r1 208: 18 95 reti 0000020a <__vector_4>: 20a: 1f 92 push r1 20c: 0f 92 push r0 20e: 0f b6 in r0, 0x3f ; 63 210: 0f 92 push r0 212: 11 24 eor r1, r1 214: 2f 93 push r18 216: 3f 93 push r19 218: 4f 93 push r20 21a: 5f 93 push r21 21c: 8f 93 push r24 21e: 9f 93 push r25 220: af 93 push r26 222: bf 93 push r27 224: ef 93 push r30 226: ff 93 push r31 228: 15 ba out 0x15, r1 ; 21 22a: 80 91 a5 00 lds r24, 0x00A5 ; 0x8000a5 <currentAnimation> 22e: 81 11 cpse r24, r1 230: 99 c0 rjmp .+306 ; 0x364 <__vector_4+0x15a> 232: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 236: 90 e0 ldi r25, 0x00 ; 0 238: fc 01 movw r30, r24 23a: ee 0f add r30, r30 23c: ff 1f adc r31, r31 23e: ee 0f add r30, r30 240: ff 1f adc r31, r31 242: 8e 0f add r24, r30 244: 9f 1f adc r25, r31 246: fc 01 movw r30, r24 248: e0 5a subi r30, 0xA0 ; 160 24a: fe 4f sbci r31, 0xFE ; 254 24c: 82 81 ldd r24, Z+2 ; 0x02 24e: 83 bd out 0x23, r24 ; 35 250: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 254: 90 e0 ldi r25, 0x00 ; 0 256: fc 01 movw r30, r24 258: ea 55 subi r30, 0x5A ; 90 25a: ff 4f sbci r31, 0xFF ; 255 25c: 20 81 ld r18, Z 25e: 21 11 cpse r18, r1 260: 0d c0 rjmp .+26 ; 0x27c <__vector_4+0x72> 262: fc 01 movw r30, r24 264: ee 0f add r30, r30 266: ff 1f adc r31, r31 268: ee 0f add r30, r30 26a: ff 1f adc r31, r31 26c: e8 0f add r30, r24 26e: f9 1f adc r31, r25 270: e0 5a subi r30, 0xA0 ; 160 272: fe 4f sbci r31, 0xFE ; 254 274: 23 81 ldd r18, Z+3 ; 0x03 276: 22 23 and r18, r18 278: 09 f4 brne .+2 ; 0x27c <__vector_4+0x72> 27a: 5a c0 rjmp .+180 ; 0x330 <__vector_4+0x126> 27c: fc 01 movw r30, r24 27e: ee 0f add r30, r30 280: ff 1f adc r31, r31 282: ee 0f add r30, r30 284: ff 1f adc r31, r31 286: e8 0f add r30, r24 288: f9 1f adc r31, r25 28a: e0 5a subi r30, 0xA0 ; 160 28c: fe 4f sbci r31, 0xFE ; 254 28e: 24 81 ldd r18, Z+4 ; 0x04 290: 2f 5f subi r18, 0xFF ; 255 292: 23 30 cpi r18, 0x03 ; 3 294: 61 f0 breq .+24 ; 0x2ae <__vector_4+0xa4> 296: fc 01 movw r30, r24 298: ee 0f add r30, r30 29a: ff 1f adc r31, r31 29c: ee 0f add r30, r30 29e: ff 1f adc r31, r31 2a0: 8e 0f add r24, r30 2a2: 9f 1f adc r25, r31 2a4: fc 01 movw r30, r24 2a6: e0 5a subi r30, 0xA0 ; 160 2a8: fe 4f sbci r31, 0xFE ; 254 2aa: 24 83 std Z+4, r18 ; 0x04 2ac: e2 c0 rjmp .+452 ; 0x472 <__stack+0x13> 2ae: fc 01 movw r30, r24 2b0: ee 0f add r30, r30 2b2: ff 1f adc r31, r31 2b4: ee 0f add r30, r30 2b6: ff 1f adc r31, r31 2b8: e8 0f add r30, r24 2ba: f9 1f adc r31, r25 2bc: e0 5a subi r30, 0xA0 ; 160 2be: fe 4f sbci r31, 0xFE ; 254 2c0: 14 82 std Z+4, r1 ; 0x04 2c2: 23 81 ldd r18, Z+3 ; 0x03 2c4: 2f 5f subi r18, 0xFF ; 255 2c6: 23 83 std Z+3, r18 ; 0x03 2c8: 29 31 cpi r18, 0x19 ; 25 2ca: 61 f4 brne .+24 ; 0x2e4 <__vector_4+0xda> 2cc: fc 01 movw r30, r24 2ce: ee 0f add r30, r30 2d0: ff 1f adc r31, r31 2d2: ee 0f add r30, r30 2d4: ff 1f adc r31, r31 2d6: e8 0f add r30, r24 2d8: f9 1f adc r31, r25 2da: e0 5a subi r30, 0xA0 ; 160 2dc: fe 4f sbci r31, 0xFE ; 254 2de: 13 82 std Z+3, r1 ; 0x03 2e0: 20 e0 ldi r18, 0x00 ; 0 2e2: 0d c0 rjmp .+26 ; 0x2fe <__vector_4+0xf4> 2e4: 2d 30 cpi r18, 0x0D ; 13 2e6: 58 f0 brcs .+22 ; 0x2fe <__vector_4+0xf4> 2e8: fc 01 movw r30, r24 2ea: ee 0f add r30, r30 2ec: ff 1f adc r31, r31 2ee: ee 0f add r30, r30 2f0: ff 1f adc r31, r31 2f2: e8 0f add r30, r24 2f4: f9 1f adc r31, r25 2f6: e0 5a subi r30, 0xA0 ; 160 2f8: fe 4f sbci r31, 0xFE ; 254 2fa: 30 81 ld r19, Z 2fc: 31 83 std Z+1, r19 ; 0x01 2fe: fc 01 movw r30, r24 300: ee 0f add r30, r30 302: ff 1f adc r31, r31 304: ee 0f add r30, r30 306: ff 1f adc r31, r31 308: e8 0f add r30, r24 30a: f9 1f adc r31, r25 30c: e0 5a subi r30, 0xA0 ; 160 30e: fe 4f sbci r31, 0xFE ; 254 310: 30 e0 ldi r19, 0x00 ; 0 312: a9 01 movw r20, r18 314: 44 0f add r20, r20 316: 55 1f adc r21, r21 318: 24 0f add r18, r20 31a: 35 1f adc r19, r21 31c: 22 0f add r18, r18 31e: 33 1f adc r19, r19 320: 26 53 subi r18, 0x36 ; 54 322: 3f 4f sbci r19, 0xFF ; 255 324: d9 01 movw r26, r18 326: a8 0f add r26, r24 328: b9 1f adc r27, r25 32a: 8c 91 ld r24, X 32c: 82 83 std Z+2, r24 ; 0x02 32e: a1 c0 rjmp .+322 ; 0x472 <__stack+0x13> 330: fc 01 movw r30, r24 332: ee 0f add r30, r30 334: ff 1f adc r31, r31 336: ee 0f add r30, r30 338: ff 1f adc r31, r31 33a: e8 0f add r30, r24 33c: f9 1f adc r31, r25 33e: e0 5a subi r30, 0xA0 ; 160 340: fe 4f sbci r31, 0xFE ; 254 342: 20 81 ld r18, Z 344: 31 81 ldd r19, Z+1 ; 0x01 346: 32 17 cp r19, r18 348: 09 f4 brne .+2 ; 0x34c <__vector_4+0x142> 34a: 93 c0 rjmp .+294 ; 0x472 <__stack+0x13> 34c: fc 01 movw r30, r24 34e: ee 0f add r30, r30 350: ff 1f adc r31, r31 352: ee 0f add r30, r30 354: ff 1f adc r31, r31 356: 8e 0f add r24, r30 358: 9f 1f adc r25, r31 35a: fc 01 movw r30, r24 35c: e0 5a subi r30, 0xA0 ; 160 35e: fe 4f sbci r31, 0xFE ; 254 360: 21 83 std Z+1, r18 ; 0x01 362: 87 c0 rjmp .+270 ; 0x472 <__stack+0x13> 364: 81 30 cpi r24, 0x01 ; 1 366: 09 f0 breq .+2 ; 0x36a <__vector_4+0x160> 368: 84 c0 rjmp .+264 ; 0x472 <__stack+0x13> 36a: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 36e: 90 e0 ldi r25, 0x00 ; 0 370: fc 01 movw r30, r24 372: ee 0f add r30, r30 374: ff 1f adc r31, r31 376: ee 0f add r30, r30 378: ff 1f adc r31, r31 37a: 8e 0f add r24, r30 37c: 9f 1f adc r25, r31 37e: fc 01 movw r30, r24 380: e0 5a subi r30, 0xA0 ; 160 382: fe 4f sbci r31, 0xFE ; 254 384: 82 81 ldd r24, Z+2 ; 0x02 386: 83 bd out 0x23, r24 ; 35 388: 80 91 a4 00 lds r24, 0x00A4 ; 0x8000a4 <currentNum> 38c: 90 e0 ldi r25, 0x00 ; 0 38e: fc 01 movw r30, r24 390: ee 0f add r30, r30 392: ff 1f adc r31, r31 394: ee 0f add r30, r30 396: ff 1f adc r31, r31 398: e8 0f add r30, r24 39a: f9 1f adc r31, r25 39c: e0 5a subi r30, 0xA0 ; 160 39e: fe 4f sbci r31, 0xFE ; 254 3a0: 30 81 ld r19, Z 3a2: 21 81 ldd r18, Z+1 ; 0x01 3a4: 23 13 cpse r18, r19 3a6: 0d c0 rjmp .+26 ; 0x3c2 <__vector_4+0x1b8> 3a8: fc 01 movw r30, r24 3aa: ee 0f add r30, r30 3ac: ff 1f adc r31, r31 3ae: ee 0f add r30, r30 3b0: ff 1f adc r31, r31 3b2: e8 0f add r30, r24 3b4: f9 1f adc r31, r25 3b6: e0 5a subi r30, 0xA0 ; 160 3b8: fe 4f sbci r31, 0xFE ; 254 3ba: 23 81 ldd r18, Z+3 ; 0x03 3bc: 22 23 and r18, r18 3be: 09 f4 brne .+2 ; 0x3c2 <__vector_4+0x1b8> 3c0: 58 c0 rjmp .+176 ; 0x472 <__stack+0x13> 3c2: fc 01 movw r30, r24 3c4: ee 0f add r30, r30 3c6: ff 1f adc r31, r31 3c8: ee 0f add r30, r30 3ca: ff 1f adc r31, r31 3cc: e8 0f add r30, r24 3ce: f9 1f adc r31, r25 3d0: e0 5a subi r30, 0xA0 ; 160 3d2: fe 4f sbci r31, 0xFE ; 254 3d4: 24 81 ldd r18, Z+4 ; 0x04 3d6: 2f 5f subi r18, 0xFF ; 255 3d8: 23 30 cpi r18, 0x03 ; 3 3da: 61 f0 breq .+24 ; 0x3f4 <__vector_4+0x1ea> 3dc: fc 01 movw r30, r24 3de: ee 0f add r30, r30 3e0: ff 1f adc r31, r31 3e2: ee 0f add r30, r30 3e4: ff 1f adc r31, r31 3e6: 8e 0f add r24, r30 3e8: 9f 1f adc r25, r31 3ea: fc 01 movw r30, r24 3ec: e0 5a subi r30, 0xA0 ; 160 3ee: fe 4f sbci r31, 0xFE ; 254 3f0: 24 83 std Z+4, r18 ; 0x04 3f2: 3f c0 rjmp .+126 ; 0x472 <__stack+0x13> 3f4: fc 01 movw r30, r24 3f6: ee 0f add r30, r30 3f8: ff 1f adc r31, r31 3fa: ee 0f add r30, r30 3fc: ff 1f adc r31, r31 3fe: e8 0f add r30, r24 400: f9 1f adc r31, r25 402: e0 5a subi r30, 0xA0 ; 160 404: fe 4f sbci r31, 0xFE ; 254 406: 14 82 std Z+4, r1 ; 0x04 408: 23 81 ldd r18, Z+3 ; 0x03 40a: 2f 5f subi r18, 0xFF ; 255 40c: 23 83 std Z+3, r18 ; 0x03 40e: 29 31 cpi r18, 0x19 ; 25 410: 61 f4 brne .+24 ; 0x42a <__FUSE_REGION_LENGTH__+0x2a> 412: fc 01 movw r30, r24 414: ee 0f add r30, r30 416: ff 1f adc r31, r31 418: ee 0f add r30, r30 41a: ff 1f adc r31, r31 41c: e8 0f add r30, r24 41e: f9 1f adc r31, r25 420: e0 5a subi r30, 0xA0 ; 160 422: fe 4f sbci r31, 0xFE ; 254 424: 13 82 std Z+3, r1 ; 0x03 426: 20 e0 ldi r18, 0x00 ; 0 428: 0c c0 rjmp .+24 ; 0x442 <__FUSE_REGION_LENGTH__+0x42> 42a: 2d 30 cpi r18, 0x0D ; 13 42c: 50 f0 brcs .+20 ; 0x442 <__FUSE_REGION_LENGTH__+0x42> 42e: fc 01 movw r30, r24 430: ee 0f add r30, r30 432: ff 1f adc r31, r31 434: ee 0f add r30, r30 436: ff 1f adc r31, r31 438: e8 0f add r30, r24 43a: f9 1f adc r31, r25 43c: e0 5a subi r30, 0xA0 ; 160 43e: fe 4f sbci r31, 0xFE ; 254 440: 31 83 std Z+1, r19 ; 0x01 442: fc 01 movw r30, r24 444: ee 0f add r30, r30 446: ff 1f adc r31, r31 448: ee 0f add r30, r30 44a: ff 1f adc r31, r31 44c: e8 0f add r30, r24 44e: f9 1f adc r31, r25 450: e0 5a subi r30, 0xA0 ; 160 452: fe 4f sbci r31, 0xFE ; 254 454: 30 e0 ldi r19, 0x00 ; 0 456: a9 01 movw r20, r18 458: 44 0f add r20, r20 45a: 55 1f adc r21, r21 45c: 24 0f add r18, r20 45e: 35 1f adc r19, r21 460: 22 0f add r18, r18 462: 33 1f adc r19, r19 464: 26 53 subi r18, 0x36 ; 54 466: 3f 4f sbci r19, 0xFF ; 255 468: d9 01 movw r26, r18 46a: a8 0f add r26, r24 46c: b9 1f adc r27, r25 46e: 8c 91 ld r24, X 470: 82 83 std Z+2, r24 ; 0x02 472: ff 91 pop r31 474: ef 91 pop r30 476: bf 91 pop r27 478: af 91 pop r26 47a: 9f 91 pop r25 47c: 8f 91 pop r24 47e: 5f 91 pop r21 480: 4f 91 pop r20 482: 3f 91 pop r19 484: 2f 91 pop r18 486: 0f 90 pop r0 488: 0f be out 0x3f, r0 ; 63 48a: 0f 90 pop r0 48c: 1f 90 pop r1 48e: 18 95 reti 00000490 <DisplaySetData6Num>: 490: dc 01 movw r26, r24 492: e0 e6 ldi r30, 0x60 ; 96 494: f1 e0 ldi r31, 0x01 ; 1 496: 2e e7 ldi r18, 0x7E ; 126 498: 31 e0 ldi r19, 0x01 ; 1 49a: 8a e0 ldi r24, 0x0A ; 10 49c: 9d 91 ld r25, X+ 49e: 94 36 cpi r25, 0x64 ; 100 4a0: 10 f0 brcs .+4 ; 0x4a6 <DisplaySetData6Num+0x16> 4a2: 80 83 st Z, r24 4a4: 01 c0 rjmp .+2 ; 0x4a8 <DisplaySetData6Num+0x18> 4a6: 90 83 st Z, r25 4a8: 35 96 adiw r30, 0x05 ; 5 4aa: e2 17 cp r30, r18 4ac: f3 07 cpc r31, r19 4ae: b1 f7 brne .-20 ; 0x49c <DisplaySetData6Num+0xc> 4b0: 08 95 ret 000004b2 <DisplaySetData3Num>: 4b2: dc 01 movw r26, r24 4b4: e0 e6 ldi r30, 0x60 ; 96 4b6: f1 e0 ldi r31, 0x01 ; 1 4b8: 4e e7 ldi r20, 0x7E ; 126 4ba: 51 e0 ldi r21, 0x01 ; 1 4bc: 6d ec ldi r22, 0xCD ; 205 4be: 3a e0 ldi r19, 0x0A ; 10 4c0: 9c 91 ld r25, X 4c2: 94 36 cpi r25, 0x64 ; 100 4c4: 18 f0 brcs .+6 ; 0x4cc <DisplaySetData3Num+0x1a> 4c6: 30 83 st Z, r19 4c8: 35 83 std Z+5, r19 ; 0x05 4ca: 15 c0 rjmp .+42 ; 0x4f6 <DisplaySetData3Num+0x44> 4cc: 96 9f mul r25, r22 4ce: 91 2d mov r25, r1 4d0: 11 24 eor r1, r1 4d2: 96 95 lsr r25 4d4: 96 95 lsr r25 4d6: 96 95 lsr r25 4d8: 90 83 st Z, r25 4da: 9c 91 ld r25, X 4dc: 96 9f mul r25, r22 4de: 81 2d mov r24, r1 4e0: 11 24 eor r1, r1 4e2: 86 95 lsr r24 4e4: 86 95 lsr r24 4e6: 86 95 lsr r24 4e8: 88 0f add r24, r24 4ea: 28 2f mov r18, r24 4ec: 22 0f add r18, r18 4ee: 22 0f add r18, r18 4f0: 82 0f add r24, r18 4f2: 98 1b sub r25, r24 4f4: 95 83 std Z+5, r25 ; 0x05 4f6: 11 96 adiw r26, 0x01 ; 1 4f8: 3a 96 adiw r30, 0x0a ; 10 4fa: e4 17 cp r30, r20 4fc: f5 07 cpc r31, r21 4fe: 01 f7 brne .-64 ; 0x4c0 <DisplaySetData3Num+0xe> 500: 08 95 ret 00000502 <DisplaySetAnimation>: 502: 80 93 a5 00 sts 0x00A5, r24 ; 0x8000a5 <currentAnimation> 506: 08 95 ret 00000508 <DisplaySetBrightness>: 508: 2f 92 push r2 50a: 3f 92 push r3 50c: 4f 92 push r4 50e: 5f 92 push r5 510: 6f 92 push r6 512: 7f 92 push r7 514: 8f 92 push r8 516: 9f 92 push r9 518: af 92 push r10 51a: bf 92 push r11 51c: cf 92 push r12 51e: df 92 push r13 520: ef 92 push r14 522: ff 92 push r15 524: 0f 93 push r16 526: 1f 93 push r17 528: cf 93 push r28 52a: df 93 push r29 52c: 8a 30 cpi r24, 0x0A ; 10 52e: 08 f4 brcc .+2 ; 0x532 <DisplaySetBrightness+0x2a> 530: 8a e0 ldi r24, 0x0A ; 10 532: 0f 2e mov r0, r31 534: f0 e6 ldi r31, 0x60 ; 96 536: af 2e mov r10, r31 538: f1 e0 ldi r31, 0x01 ; 1 53a: bf 2e mov r11, r31 53c: f0 2d mov r31, r0 53e: 0f 2e mov r0, r31 540: fa ec ldi r31, 0xCA ; 202 542: 8f 2e mov r8, r31 544: f0 e0 ldi r31, 0x00 ; 0 546: 9f 2e mov r9, r31 548: f0 2d mov r31, r0 54a: 0f 2e mov r0, r31 54c: f7 e9 ldi r31, 0x97 ; 151 54e: cf 2e mov r12, r31 550: f0 e0 ldi r31, 0x00 ; 0 552: df 2e mov r13, r31 554: f0 2d mov r31, r0 556: 38 2e mov r3, r24 558: 30 94 com r3 55a: e8 2e mov r14, r24 55c: f1 2c mov r15, r1 55e: 41 2c mov r4, r1 560: 51 2c mov r5, r1 562: 32 01 movw r6, r4 564: 4a 94 dec r4 566: 23 2c mov r2, r3 568: 22 c0 rjmp .+68 ; 0x5ae <DisplaySetBrightness+0xa6> 56a: f8 01 movw r30, r16 56c: 81 91 ld r24, Z+ 56e: 8f 01 movw r16, r30 570: 8e 9d mul r24, r14 572: b0 01 movw r22, r0 574: 8f 9d mul r24, r15 576: 70 0d add r23, r0 578: 11 24 eor r1, r1 57a: 07 2e mov r0, r23 57c: 00 0c add r0, r0 57e: 88 0b sbc r24, r24 580: 99 0b sbc r25, r25 582: a3 01 movw r20, r6 584: 92 01 movw r18, r4 586: 51 da rcall .-2910 ; 0xfffffa2a <__eeprom_end+0xff7efa1f> 588: 23 0d add r18, r3 58a: 28 83 st Y, r18 58c: 26 96 adiw r28, 0x06 ; 6 58e: 0c 15 cp r16, r12 590: 1d 05 cpc r17, r13 592: 59 f7 brne .-42 ; 0x56a <DisplaySetBrightness+0x62> 594: f5 01 movw r30, r10 596: 22 82 std Z+2, r2 ; 0x02 598: f5 e0 ldi r31, 0x05 ; 5 59a: af 0e add r10, r31 59c: b1 1c adc r11, r1 59e: 8f ef ldi r24, 0xFF ; 255 5a0: 88 1a sub r8, r24 5a2: 98 0a sbc r9, r24 5a4: ee e7 ldi r30, 0x7E ; 126 5a6: ae 16 cp r10, r30 5a8: e1 e0 ldi r30, 0x01 ; 1 5aa: be 06 cpc r11, r30 5ac: 21 f0 breq .+8 ; 0x5b6 <DisplaySetBrightness+0xae> 5ae: 0e e7 ldi r16, 0x7E ; 126 5b0: 10 e0 ldi r17, 0x00 ; 0 5b2: e4 01 movw r28, r8 5b4: da cf rjmp .-76 ; 0x56a <DisplaySetBrightness+0x62> 5b6: df 91 pop r29 5b8: cf 91 pop r28 5ba: 1f 91 pop r17 5bc: 0f 91 pop r16 5be: ff 90 pop r15 5c0: ef 90 pop r14 5c2: df 90 pop r13 5c4: cf 90 pop r12 5c6: bf 90 pop r11 5c8: af 90 pop r10 5ca: 9f 90 pop r9 5cc: 8f 90 pop r8 5ce: 7f 90 pop r7 5d0: 6f 90 pop r6 5d2: 5f 90 pop r5 5d4: 4f 90 pop r4 5d6: 3f 90 pop r3 5d8: 2f 90 pop r2 5da: 08 95 ret 000005dc <DisplaySetBrightness100>: 5dc: 84 36 cpi r24, 0x64 ; 100 5de: 08 f0 brcs .+2 ; 0x5e2 <DisplaySetBrightness100+0x6> 5e0: 83 e6 ldi r24, 0x63 ; 99 5e2: 68 2f mov r22, r24 5e4: 70 e0 ldi r23, 0x00 ; 0 5e6: 76 2f mov r23, r22 5e8: 66 27 eor r22, r22 5ea: 07 2e mov r0, r23 5ec: 00 0c add r0, r0 5ee: 88 0b sbc r24, r24 5f0: 99 0b sbc r25, r25 5f2: 24 e6 ldi r18, 0x64 ; 100 5f4: 30 e0 ldi r19, 0x00 ; 0 5f6: 40 e0 ldi r20, 0x00 ; 0 5f8: 50 e0 ldi r21, 0x00 ; 0 5fa: 17 da rcall .-3026 ; 0xfffffa2a <__eeprom_end+0xff7efa1f> 5fc: 82 2f mov r24, r18 5fe: 84 df rcall .-248 ; 0x508 <DisplaySetBrightness> 600: 08 95 ret 00000602 <DisplayInit>: 602: 84 e6 ldi r24, 0x64 ; 100 604: eb df rcall .-42 ; 0x5dc <DisplaySetBrightness100> 606: 87 b3 in r24, 0x17 ; 23 608: 8c 63 ori r24, 0x3C ; 60 60a: 87 bb out 0x17, r24 ; 23 60c: 84 b3 in r24, 0x14 ; 20 60e: 8f 63 ori r24, 0x3F ; 63 610: 84 bb out 0x14, r24 ; 20 612: 85 b5 in r24, 0x25 ; 37 614: 84 60 ori r24, 0x04 ; 4 616: 85 bd out 0x25, r24 ; 37 618: 89 b7 in r24, 0x39 ; 57 61a: 80 6c ori r24, 0xC0 ; 192 61c: 89 bf out 0x39, r24 ; 57 61e: 08 95 ret 00000620 <DisplaySetBrightnessEachNumber>: 620: 2f 92 push r2 622: 3f 92 push r3 624: 4f 92 push r4 626: 5f 92 push r5 628: 6f 92 push r6 62a: 7f 92 push r7 62c: 8f 92 push r8 62e: 9f 92 push r9 630: af 92 push r10 632: bf 92 push r11 634: cf 92 push r12 636: df 92 push r13 638: ef 92 push r14 63a: ff 92 push r15 63c: 0f 93 push r16 63e: 1f 93 push r17 640: cf 93 push r28 642: df 93 push r29 644: 00 d0 rcall .+0 ; 0x646 <DisplaySetBrightnessEachNumber+0x26> 646: 00 d0 rcall .+0 ; 0x648 <DisplaySetBrightnessEachNumber+0x28> 648: cd b7 in r28, 0x3d ; 61 64a: de b7 in r29, 0x3e ; 62 64c: 4c 01 movw r8, r24 64e: 80 e6 ldi r24, 0x60 ; 96 650: 91 e0 ldi r25, 0x01 ; 1 652: 9a 83 std Y+2, r25 ; 0x02 654: 89 83 std Y+1, r24 ; 0x01 656: 0f 2e mov r0, r31 658: fa ec ldi r31, 0xCA ; 202 65a: af 2e mov r10, r31 65c: f0 e0 ldi r31, 0x00 ; 0 65e: bf 2e mov r11, r31 660: f0 2d mov r31, r0 662: 0f 2e mov r0, r31 664: fa e0 ldi r31, 0x0A ; 10 666: 2f 2e mov r2, r31 668: f0 2d mov r31, r0 66a: 41 2c mov r4, r1 66c: 51 2c mov r5, r1 66e: 32 01 movw r6, r4 670: 4a 94 dec r4 672: 74 01 movw r14, r8 674: f4 01 movw r30, r8 676: 80 81 ld r24, Z 678: 8a 30 cpi r24, 0x0A ; 10 67a: 88 f5 brcc .+98 ; 0x6de <DisplaySetBrightnessEachNumber+0xbe> 67c: 20 82 st Z, r2 67e: 2f c0 rjmp .+94 ; 0x6de <DisplaySetBrightnessEachNumber+0xbe> 680: f8 01 movw r30, r16 682: 61 91 ld r22, Z+ 684: 8f 01 movw r16, r30 686: f7 01 movw r30, r14 688: 30 80 ld r3, Z 68a: 63 9d mul r22, r3 68c: b0 01 movw r22, r0 68e: 11 24 eor r1, r1 690: 07 2e mov r0, r23 692: 00 0c add r0, r0 694: 88 0b sbc r24, r24 696: 99 0b sbc r25, r25 698: a3 01 movw r20, r6 69a: 92 01 movw r18, r4 69c: c6 d9 rcall .-3188 ; 0xfffffa2a <__eeprom_end+0xff7efa1f> 69e: 30 94 com r3 6a0: 32 0e add r3, r18 6a2: eb 81 ldd r30, Y+3 ; 0x03 6a4: fc 81 ldd r31, Y+4 ; 0x04 6a6: 30 82 st Z, r3 6a8: 36 96 adiw r30, 0x06 ; 6 6aa: fc 83 std Y+4, r31 ; 0x04 6ac: eb 83 std Y+3, r30 ; 0x03 6ae: ec 15 cp r30, r12 6b0: fd 05 cpc r31, r13 6b2: 31 f7 brne .-52 ; 0x680 <DisplaySetBrightnessEachNumber+0x60> 6b4: ff ef ldi r31, 0xFF ; 255 6b6: 8f 1a sub r8, r31 6b8: 9f 0a sbc r9, r31 6ba: f7 01 movw r30, r14 6bc: 80 81 ld r24, Z 6be: 80 95 com r24 6c0: e9 81 ldd r30, Y+1 ; 0x01 6c2: fa 81 ldd r31, Y+2 ; 0x02 6c4: 82 83 std Z+2, r24 ; 0x02 6c6: 35 96 adiw r30, 0x05 ; 5 6c8: fa 83 std Y+2, r31 ; 0x02 6ca: e9 83 std Y+1, r30 ; 0x01 6cc: ff ef ldi r31, 0xFF ; 255 6ce: af 1a sub r10, r31 6d0: bf 0a sbc r11, r31 6d2: 80 ed ldi r24, 0xD0 ; 208 6d4: a8 16 cp r10, r24 6d6: 80 e0 ldi r24, 0x00 ; 0 6d8: b8 06 cpc r11, r24 6da: 59 f6 brne .-106 ; 0x672 <DisplaySetBrightnessEachNumber+0x52> 6dc: 09 c0 rjmp .+18 ; 0x6f0 <DisplaySetBrightnessEachNumber+0xd0> 6de: 0e e7 ldi r16, 0x7E ; 126 6e0: 10 e0 ldi r17, 0x00 ; 0 6e2: 65 01 movw r12, r10 6e4: 96 e9 ldi r25, 0x96 ; 150 6e6: c9 0e add r12, r25 6e8: d1 1c adc r13, r1 6ea: bc 82 std Y+4, r11 ; 0x04 6ec: ab 82 std Y+3, r10 ; 0x03 6ee: c8 cf rjmp .-112 ; 0x680 <DisplaySetBrightnessEachNumber+0x60> 6f0: 0f 90 pop r0 6f2: 0f 90 pop r0 6f4: 0f 90 pop r0 6f6: 0f 90 pop r0 6f8: df 91 pop r29 6fa: cf 91 pop r28 6fc: 1f 91 pop r17 6fe: 0f 91 pop r16 700: ff 90 pop r15 702: ef 90 pop r14 704: df 90 pop r13 706: cf 90 pop r12 708: bf 90 pop r11 70a: af 90 pop r10 70c: 9f 90 pop r9 70e: 8f 90 pop r8 710: 7f 90 pop r7 712: 6f 90 pop r6 714: 5f 90 pop r5 716: 4f 90 pop r4 718: 3f 90 pop r3 71a: 2f 90 pop r2 71c: 08 95 ret 0000071e <DisplaySetBrightnessEachNumber100>: 71e: 7f 92 push r7 720: 8f 92 push r8 722: 9f 92 push r9 724: af 92 push r10 726: bf 92 push r11 728: cf 92 push r12 72a: df 92 push r13 72c: ef 92 push r14 72e: ff 92 push r15 730: 0f 93 push r16 732: 1f 93 push r17 734: cf 93 push r28 736: df 93 push r29 738: 00 d0 rcall .+0 ; 0x73a <DisplaySetBrightnessEachNumber100+0x1c> 73a: 00 d0 rcall .+0 ; 0x73c <DisplaySetBrightnessEachNumber100+0x1e> 73c: 00 d0 rcall .+0 ; 0x73e <DisplaySetBrightnessEachNumber100+0x20> 73e: cd b7 in r28, 0x3d ; 61 740: de b7 in r29, 0x3e ; 62 742: 7c 01 movw r14, r24 744: 8e 01 movw r16, r28 746: 0f 5f subi r16, 0xFF ; 255 748: 1f 4f sbci r17, 0xFF ; 255 74a: 6e 01 movw r12, r28 74c: 87 e0 ldi r24, 0x07 ; 7 74e: c8 0e add r12, r24 750: d1 1c adc r13, r1 752: 0f 2e mov r0, r31 754: f3 e6 ldi r31, 0x63 ; 99 756: 7f 2e mov r7, r31 758: f0 2d mov r31, r0 75a: 0f 2e mov r0, r31 75c: f4 e6 ldi r31, 0x64 ; 100 75e: 8f 2e mov r8, r31 760: 91 2c mov r9, r1 762: a1 2c mov r10, r1 764: b1 2c mov r11, r1 766: f0 2d mov r31, r0 768: f7 01 movw r30, r14 76a: 81 91 ld r24, Z+ 76c: 7f 01 movw r14, r30 76e: 84 36 cpi r24, 0x64 ; 100 770: 18 f4 brcc .+6 ; 0x778 <DisplaySetBrightnessEachNumber100+0x5a> 772: f8 01 movw r30, r16 774: 80 83 st Z, r24 776: 02 c0 rjmp .+4 ; 0x77c <DisplaySetBrightnessEachNumber100+0x5e> 778: f8 01 movw r30, r16 77a: 70 82 st Z, r7 77c: f8 01 movw r30, r16 77e: 60 81 ld r22, Z 780: 70 e0 ldi r23, 0x00 ; 0 782: 76 2f mov r23, r22 784: 66 27 eor r22, r22 786: 07 2e mov r0, r23 788: 00 0c add r0, r0 78a: 88 0b sbc r24, r24 78c: 99 0b sbc r25, r25 78e: a5 01 movw r20, r10 790: 94 01 movw r18, r8 792: 4b d9 rcall .-3434 ; 0xfffffa2a <__eeprom_end+0xff7efa1f> 794: f8 01 movw r30, r16 796: 21 93 st Z+, r18 798: 8f 01 movw r16, r30 79a: ec 15 cp r30, r12 79c: fd 05 cpc r31, r13 79e: 21 f7 brne .-56 ; 0x768 <DisplaySetBrightnessEachNumber100+0x4a> 7a0: ce 01 movw r24, r28 7a2: 01 96 adiw r24, 0x01 ; 1 7a4: 3d df rcall .-390 ; 0x620 <DisplaySetBrightnessEachNumber> 7a6: 26 96 adiw r28, 0x06 ; 6 7a8: 0f b6 in r0, 0x3f ; 63 7aa: f8 94 cli 7ac: de bf out 0x3e, r29 ; 62 7ae: 0f be out 0x3f, r0 ; 63 7b0: cd bf out 0x3d, r28 ; 61 7b2: df 91 pop r29 7b4: cf 91 pop r28 7b6: 1f 91 pop r17 7b8: 0f 91 pop r16 7ba: ff 90 pop r15 7bc: ef 90 pop r14 7be: df 90 pop r13 7c0: cf 90 pop r12 7c2: bf 90 pop r11 7c4: af 90 pop r10 7c6: 9f 90 pop r9 7c8: 8f 90 pop r8 7ca: 7f 90 pop r7 7cc: 08 95 ret 000007ce <DisplaySetBlinkDigit>: /*1-blink, 0 - static light * only short_blink mode */ void DisplaySetBlinkDigit(uint8_t digitToBlink[]) { 7ce: dc 01 movw r26, r24 7d0: e6 ea ldi r30, 0xA6 ; 166 7d2: f0 e0 ldi r31, 0x00 ; 0 7d4: 2c ea ldi r18, 0xAC ; 172 7d6: 30 e0 ldi r19, 0x00 ; 0 uint8_t i; for(i=0;i<NUM_DIGIT;i++) blinkDigit[i] = digitToBlink[i]; 7d8: 8d 91 ld r24, X+ 7da: 81 93 st Z+, r24 * only short_blink mode */ void DisplaySetBlinkDigit(uint8_t digitToBlink[]) { uint8_t i; for(i=0;i<NUM_DIGIT;i++) 7dc: e2 17 cp r30, r18 7de: f3 07 cpc r31, r19 7e0: d9 f7 brne .-10 ; 0x7d8 <DisplaySetBlinkDigit+0xa> blinkDigit[i] = digitToBlink[i]; } 7e2: 08 95 ret 000007e4 <DisplayClear>: void DisplayClear(void) { uint8_t i; for(i=0; i<NUM_DIGIT;i++) data[i].newData = 10; 7e4: e0 e6 ldi r30, 0x60 ; 96 7e6: f1 e0 ldi r31, 0x01 ; 1 7e8: 8a e0 ldi r24, 0x0A ; 10 7ea: 80 83 st Z, r24 7ec: 85 83 std Z+5, r24 ; 0x05 7ee: 82 87 std Z+10, r24 ; 0x0a 7f0: 87 87 std Z+15, r24 ; 0x0f 7f2: 84 8b std Z+20, r24 ; 0x14 7f4: 81 8f std Z+25, r24 ; 0x19 7f6: 08 95 ret 000007f8 <DisplayRequestUpdateLed>: } void DisplayRequestUpdateLed(void) { ledAnimationRequest = 1; 7f8: 81 e0 ldi r24, 0x01 ; 1 7fa: 80 93 ac 00 sts 0x00AC, r24 ; 0x8000ac <ledAnimationRequest> 7fe: 08 95 ret 00000800 <bcd>: i2c_start(); i2c_send_byte(0xd0); i2c_send_byte(address); i2c_send_byte(bin(data)); i2c_stop(); } 800: 28 2f mov r18, r24 802: 20 77 andi r18, 0x70 ; 112 804: 30 e0 ldi r19, 0x00 ; 0 806: a9 01 movw r20, r18 808: 44 0f add r20, r20 80a: 55 1f adc r21, r21 80c: 22 0f add r18, r18 80e: 33 1f adc r19, r19 810: 22 0f add r18, r18 812: 33 1f adc r19, r19 814: 22 0f add r18, r18 816: 33 1f adc r19, r19 818: 24 0f add r18, r20 81a: 35 1f adc r19, r21 81c: 35 95 asr r19 81e: 27 95 ror r18 820: 35 95 asr r19 822: 27 95 ror r18 824: 35 95 asr r19 826: 27 95 ror r18 828: 35 95 asr r19 82a: 27 95 ror r18 82c: 8f 70 andi r24, 0x0F ; 15 82e: 82 0f add r24, r18 830: 08 95 ret 00000832 <bin>: 832: 40 e0 ldi r20, 0x00 ; 0 834: 50 e0 ldi r21, 0x00 ; 0 836: 60 e0 ldi r22, 0x00 ; 0 838: 7d ec ldi r23, 0xCD ; 205 83a: 87 9f mul r24, r23 83c: 31 2d mov r19, r1 83e: 11 24 eor r1, r1 840: 23 2f mov r18, r19 842: 26 95 lsr r18 844: 26 95 lsr r18 846: 26 95 lsr r18 848: 22 0f add r18, r18 84a: 92 2f mov r25, r18 84c: 99 0f add r25, r25 84e: 99 0f add r25, r25 850: 29 0f add r18, r25 852: 82 1b sub r24, r18 854: 28 2f mov r18, r24 856: 83 2f mov r24, r19 858: 86 95 lsr r24 85a: 86 95 lsr r24 85c: 86 95 lsr r24 85e: 30 e0 ldi r19, 0x00 ; 0 860: 04 2e mov r0, r20 862: 02 c0 rjmp .+4 ; 0x868 <bin+0x36> 864: 22 0f add r18, r18 866: 33 1f adc r19, r19 868: 0a 94 dec r0 86a: e2 f7 brpl .-8 ; 0x864 <bin+0x32> 86c: 62 2b or r22, r18 86e: 4c 5f subi r20, 0xFC ; 252 870: 5f 4f sbci r21, 0xFF ; 255 872: 40 31 cpi r20, 0x10 ; 16 874: 51 05 cpc r21, r1 876: 09 f7 brne .-62 ; 0x83a <bin+0x8> 878: 86 2f mov r24, r22 87a: 08 95 ret 0000087c <rtc_init>: 87c: cf 93 push r28 87e: c8 2f mov r28, r24 880: c2 71 andi r28, 0x12 ; 18 882: 61 11 cpse r22, r1 884: c0 64 ori r28, 0x40 ; 64 886: 41 11 cpse r20, r1 888: c0 68 ori r28, 0x80 ; 128 88a: cd d0 rcall .+410 ; 0xa26 <i2c_start> 88c: 80 ed ldi r24, 0xD0 ; 208 88e: f7 d0 rcall .+494 ; 0xa7e <i2c_send_byte> 890: 8e e0 ldi r24, 0x0E ; 14 892: f5 d0 rcall .+490 ; 0xa7e <i2c_send_byte> 894: 8c 2f mov r24, r28 896: f3 d0 rcall .+486 ; 0xa7e <i2c_send_byte> 898: 96 d0 rcall .+300 ; 0x9c6 <i2c_stop> 89a: cf 91 pop r28 89c: 08 95 ret 0000089e <rtc_get_time>: 89e: ef 92 push r14 8a0: ff 92 push r15 8a2: 0f 93 push r16 8a4: 1f 93 push r17 8a6: cf 93 push r28 8a8: df 93 push r29 8aa: ec 01 movw r28, r24 8ac: 8b 01 movw r16, r22 8ae: 7a 01 movw r14, r20 8b0: ba d0 rcall .+372 ; 0xa26 <i2c_start> 8b2: 80 ed ldi r24, 0xD0 ; 208 8b4: e4 d0 rcall .+456 ; 0xa7e <i2c_send_byte> 8b6: 80 e0 ldi r24, 0x00 ; 0 8b8: e2 d0 rcall .+452 ; 0xa7e <i2c_send_byte> 8ba: c2 d0 rcall .+388 ; 0xa40 <i2c_restart> 8bc: 81 ed ldi r24, 0xD1 ; 209 8be: df d0 rcall .+446 ; 0xa7e <i2c_send_byte> 8c0: 80 e0 ldi r24, 0x00 ; 0 8c2: 07 d1 rcall .+526 ; 0xad2 <i2c_read_byte> 8c4: 9d df rcall .-198 ; 0x800 <bcd> 8c6: f7 01 movw r30, r14 8c8: 80 83 st Z, r24 8ca: 80 e0 ldi r24, 0x00 ; 0 8cc: 02 d1 rcall .+516 ; 0xad2 <i2c_read_byte> 8ce: 98 df rcall .-208 ; 0x800 <bcd> 8d0: f8 01 movw r30, r16 8d2: 80 83 st Z, r24 8d4: 81 e0 ldi r24, 0x01 ; 1 8d6: fd d0 rcall .+506 ; 0xad2 <i2c_read_byte> 8d8: 93 df rcall .-218 ; 0x800 <bcd> 8da: 88 83 st Y, r24 8dc: 74 d0 rcall .+232 ; 0x9c6 <i2c_stop> 8de: df 91 pop r29 8e0: cf 91 pop r28 8e2: 1f 91 pop r17 8e4: 0f 91 pop r16 8e6: ff 90 pop r15 8e8: ef 90 pop r14 8ea: 08 95 ret 000008ec <rtc_set_time>: 8ec: 1f 93 push r17 8ee: cf 93 push r28 8f0: df 93 push r29 8f2: c8 2f mov r28, r24 8f4: d6 2f mov r29, r22 8f6: 14 2f mov r17, r20 8f8: 96 d0 rcall .+300 ; 0xa26 <i2c_start> 8fa: 80 ed ldi r24, 0xD0 ; 208 8fc: c0 d0 rcall .+384 ; 0xa7e <i2c_send_byte> 8fe: 80 e0 ldi r24, 0x00 ; 0 900: be d0 rcall .+380 ; 0xa7e <i2c_send_byte> 902: 81 2f mov r24, r17 904: 96 df rcall .-212 ; 0x832 <bin> 906: bb d0 rcall .+374 ; 0xa7e <i2c_send_byte> 908: 8d 2f mov r24, r29 90a: 93 df rcall .-218 ; 0x832 <bin> 90c: b8 d0 rcall .+368 ; 0xa7e <i2c_send_byte> 90e: 8c 2f mov r24, r28 910: 90 df rcall .-224 ; 0x832 <bin> 912: b5 d0 rcall .+362 ; 0xa7e <i2c_send_byte> 914: 58 d0 rcall .+176 ; 0x9c6 <i2c_stop> 916: df 91 pop r29 918: cf 91 pop r28 91a: 1f 91 pop r17 91c: 08 95 ret 0000091e <rtc_get_date>: 91e: ef 92 push r14 920: ff 92 push r15 922: 0f 93 push r16 924: 1f 93 push r17 926: cf 93 push r28 928: df 93 push r29 92a: 7c 01 movw r14, r24 92c: 8b 01 movw r16, r22 92e: ea 01 movw r28, r20 930: 7a d0 rcall .+244 ; 0xa26 <i2c_start> 932: 80 ed ldi r24, 0xD0 ; 208 934: a4 d0 rcall .+328 ; 0xa7e <i2c_send_byte> 936: 84 e0 ldi r24, 0x04 ; 4 938: a2 d0 rcall .+324 ; 0xa7e <i2c_send_byte> 93a: 82 d0 rcall .+260 ; 0xa40 <i2c_restart> 93c: 81 ed ldi r24, 0xD1 ; 209 93e: 9f d0 rcall .+318 ; 0xa7e <i2c_send_byte> 940: 80 e0 ldi r24, 0x00 ; 0 942: c7 d0 rcall .+398 ; 0xad2 <i2c_read_byte> 944: 5d df rcall .-326 ; 0x800 <bcd> 946: f7 01 movw r30, r14 948: 80 83 st Z, r24 94a: 80 e0 ldi r24, 0x00 ; 0 94c: c2 d0 rcall .+388 ; 0xad2 <i2c_read_byte> 94e: 58 df rcall .-336 ; 0x800 <bcd> 950: f8 01 movw r30, r16 952: 80 83 st Z, r24 954: 81 e0 ldi r24, 0x01 ; 1 956: bd d0 rcall .+378 ; 0xad2 <i2c_read_byte> 958: 53 df rcall .-346 ; 0x800 <bcd> 95a: 88 83 st Y, r24 95c: 34 d0 rcall .+104 ; 0x9c6 <i2c_stop> 95e: df 91 pop r29 960: cf 91 pop r28 962: 1f 91 pop r17 964: 0f 91 pop r16 966: ff 90 pop r15 968: ef 90 pop r14 96a: 08 95 ret 0000096c <rtc_set_date>: 96c: 1f 93 push r17 96e: cf 93 push r28 970: df 93 push r29 972: 18 2f mov r17, r24 974: d6 2f mov r29, r22 976: c4 2f mov r28, r20 978: 56 d0 rcall .+172 ; 0xa26 <i2c_start> 97a: 80 ed ldi r24, 0xD0 ; 208 97c: 80 d0 rcall .+256 ; 0xa7e <i2c_send_byte> 97e: 84 e0 ldi r24, 0x04 ; 4 980: 7e d0 rcall .+252 ; 0xa7e <i2c_send_byte> 982: 81 2f mov r24, r17 984: 56 df rcall .-340 ; 0x832 <bin> 986: 7b d0 rcall .+246 ; 0xa7e <i2c_send_byte> 988: 8d 2f mov r24, r29 98a: 53 df rcall .-346 ; 0x832 <bin> 98c: 78 d0 rcall .+240 ; 0xa7e <i2c_send_byte> 98e: 8c 2f mov r24, r28 990: 50 df rcall .-352 ; 0x832 <bin> 992: 75 d0 rcall .+234 ; 0xa7e <i2c_send_byte> 994: 18 d0 rcall .+48 ; 0x9c6 <i2c_stop> 996: df 91 pop r29 998: cf 91 pop r28 99a: 1f 91 pop r17 99c: 08 95 ret 0000099e <rtc_init_sqw>: void rtc_init_sqw(void) { SQW_DDR &= (~(1<<SQW_PIN)); //input 99e: 8b 98 cbi 0x11, 3 ; 17 SQW_PORT |= ((1<<SQW_PIN)); //pull up 9a0: 93 9a sbi 0x12, 3 ; 18 sqw_state = 0; 9a2: 10 92 7f 01 sts 0x017F, r1 ; 0x80017f <sqw_state> 9a6: 08 95 ret 000009a8 <rtc_check_sqw>: } uint8_t rtc_check_sqw(void) { static uint8_t last_sqw_state; last_sqw_state = sqw_state; 9a8: 80 91 7f 01 lds r24, 0x017F ; 0x80017f <sqw_state> sqw_state = (SQW_INPUT & (1<<SQW_PIN)); 9ac: 90 b3 in r25, 0x10 ; 16 9ae: 98 70 andi r25, 0x08 ; 8 9b0: 90 93 7f 01 sts 0x017F, r25 ; 0x80017f <sqw_state> if(last_sqw_state == 0 && sqw_state != 0) //rising edge 9b4: 81 11 cpse r24, r1 9b6: 05 c0 rjmp .+10 ; 0x9c2 <rtc_check_sqw+0x1a> return 1; 9b8: 81 e0 ldi r24, 0x01 ; 1 9ba: 91 11 cpse r25, r1 9bc: 03 c0 rjmp .+6 ; 0x9c4 <rtc_check_sqw+0x1c> 9be: 80 e0 ldi r24, 0x00 ; 0 9c0: 08 95 ret else return 0; 9c2: 80 e0 ldi r24, 0x00 ; 0 9c4: 08 95 ret 000009c6 <i2c_stop>: BYTE i2c_stop(void) { BYTE error = 0; NULL_SCL(); 9c6: 8f 9a sbi 0x11, 7 ; 17 9c8: 97 98 cbi 0x12, 7 ; 18 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 9ca: 83 e3 ldi r24, 0x33 ; 51 9cc: 97 e0 ldi r25, 0x07 ; 7 9ce: 01 97 sbiw r24, 0x01 ; 1 9d0: f1 f7 brne .-4 ; 0x9ce <i2c_stop+0x8> I2C_DELAY(); NULL_SDA(); 9d2: 8e 9a sbi 0x11, 6 ; 17 9d4: 96 98 cbi 0x12, 6 ; 18 9d6: e3 e3 ldi r30, 0x33 ; 51 9d8: f7 e0 ldi r31, 0x07 ; 7 9da: 31 97 sbiw r30, 0x01 ; 1 9dc: f1 f7 brne .-4 ; 0x9da <i2c_stop+0x14> I2C_DELAY(); ONE_SCL(); 9de: 8f 98 cbi 0x11, 7 ; 17 9e0: 97 9a sbi 0x12, 7 ; 18 9e2: 83 e3 ldi r24, 0x33 ; 51 9e4: 97 e0 ldi r25, 0x07 ; 7 9e6: 01 97 sbiw r24, 0x01 ; 1 9e8: f1 f7 brne .-4 ; 0x9e6 <i2c_stop+0x20> I2C_DELAY(); ONE_SDA(); 9ea: 8e 98 cbi 0x11, 6 ; 17 9ec: 96 9a sbi 0x12, 6 ; 18 9ee: e3 e3 ldi r30, 0x33 ; 51 9f0: f7 e0 ldi r31, 0x07 ; 7 9f2: 31 97 sbiw r30, 0x01 ; 1 9f4: f1 f7 brne .-4 ; 0x9f2 <i2c_stop+0x2c> I2C_DELAY(); if((I2C_PIN & (1 << I2C_SDA)) == 0) error = 2; 9f6: 86 99 sbic 0x10, 6 ; 16 9f8: 02 c0 rjmp .+4 ; 0x9fe <i2c_stop+0x38> 9fa: 82 e0 ldi r24, 0x02 ; 2 9fc: 01 c0 rjmp .+2 ; 0xa00 <i2c_stop+0x3a> // //======================================================================= BYTE i2c_stop(void) { BYTE error = 0; 9fe: 80 e0 ldi r24, 0x00 ; 0 I2C_DELAY(); ONE_SDA(); I2C_DELAY(); if((I2C_PIN & (1 << I2C_SDA)) == 0) error = 2; if((I2C_PIN & (1 << I2C_SCL)) == 0) error |= 1; a00: 87 9b sbis 0x10, 7 ; 16 a02: 81 60 ori r24, 0x01 ; 1 a04: e3 e3 ldi r30, 0x33 ; 51 a06: f7 e0 ldi r31, 0x07 ; 7 a08: 31 97 sbiw r30, 0x01 ; 1 a0a: f1 f7 brne .-4 ; 0xa08 <i2c_stop+0x42> a0c: e3 e3 ldi r30, 0x33 ; 51 a0e: f7 e0 ldi r31, 0x07 ; 7 a10: 31 97 sbiw r30, 0x01 ; 1 a12: f1 f7 brne .-4 ; 0xa10 <i2c_stop+0x4a> a14: e3 e3 ldi r30, 0x33 ; 51 a16: f7 e0 ldi r31, 0x07 ; 7 a18: 31 97 sbiw r30, 0x01 ; 1 a1a: f1 f7 brne .-4 ; 0xa18 <i2c_stop+0x52> a1c: e3 e3 ldi r30, 0x33 ; 51 a1e: f7 e0 ldi r31, 0x07 ; 7 a20: 31 97 sbiw r30, 0x01 ; 1 a22: f1 f7 brne .-4 ; 0xa20 <i2c_stop+0x5a> I2C_DELAY(); I2C_DELAY(); I2C_DELAY(); return error; } a24: 08 95 ret 00000a26 <i2c_start>: // //======================================================================= void i2c_start(void) { NULL_SDA(); a26: 8e 9a sbi 0x11, 6 ; 17 a28: 96 98 cbi 0x12, 6 ; 18 a2a: 83 e3 ldi r24, 0x33 ; 51 a2c: 97 e0 ldi r25, 0x07 ; 7 a2e: 01 97 sbiw r24, 0x01 ; 1 a30: f1 f7 brne .-4 ; 0xa2e <i2c_start+0x8> I2C_DELAY(); NULL_SCL(); a32: 8f 9a sbi 0x11, 7 ; 17 a34: 97 98 cbi 0x12, 7 ; 18 a36: 83 e3 ldi r24, 0x33 ; 51 a38: 97 e0 ldi r25, 0x07 ; 7 a3a: 01 97 sbiw r24, 0x01 ; 1 a3c: f1 f7 brne .-4 ; 0xa3a <i2c_start+0x14> a3e: 08 95 ret 00000a40 <i2c_restart>: // //======================================================================= void i2c_restart(void) { ONE_SDA(); a40: 8e 98 cbi 0x11, 6 ; 17 a42: 96 9a sbi 0x12, 6 ; 18 a44: 83 e3 ldi r24, 0x33 ; 51 a46: 97 e0 ldi r25, 0x07 ; 7 a48: 01 97 sbiw r24, 0x01 ; 1 a4a: f1 f7 brne .-4 ; 0xa48 <i2c_restart+0x8> I2C_DELAY(); ONE_SCL(); a4c: 8f 98 cbi 0x11, 7 ; 17 a4e: 97 9a sbi 0x12, 7 ; 18 a50: 83 e3 ldi r24, 0x33 ; 51 a52: 97 e0 ldi r25, 0x07 ; 7 a54: 01 97 sbiw r24, 0x01 ; 1 a56: f1 f7 brne .-4 ; 0xa54 <i2c_restart+0x14> I2C_DELAY(); NULL_SDA(); a58: 8e 9a sbi 0x11, 6 ; 17 a5a: 96 98 cbi 0x12, 6 ; 18 a5c: 83 e3 ldi r24, 0x33 ; 51 a5e: 97 e0 ldi r25, 0x07 ; 7 a60: 01 97 sbiw r24, 0x01 ; 1 a62: f1 f7 brne .-4 ; 0xa60 <i2c_restart+0x20> I2C_DELAY(); NULL_SCL(); a64: 8f 9a sbi 0x11, 7 ; 17 a66: 97 98 cbi 0x12, 7 ; 18 a68: 83 e3 ldi r24, 0x33 ; 51 a6a: 97 e0 ldi r25, 0x07 ; 7 a6c: 01 97 sbiw r24, 0x01 ; 1 a6e: f1 f7 brne .-4 ; 0xa6c <i2c_restart+0x2c> a70: 08 95 ret 00000a72 <i2c_init>: // //======================================================================= void i2c_init(void) { ONE_SDA(); a72: 8e 98 cbi 0x11, 6 ; 17 a74: 96 9a sbi 0x12, 6 ; 18 ONE_SCL(); a76: 8f 98 cbi 0x11, 7 ; 17 a78: 97 9a sbi 0x12, 7 ; 18 i2c_stop(); a7a: a5 df rcall .-182 ; 0x9c6 <i2c_stop> a7c: 08 95 ret 00000a7e <i2c_send_byte>: //======================================================================= // //======================================================================= BYTE i2c_send_byte(BYTE data) { a7e: 98 e0 ldi r25, 0x08 ; 8 BYTE i; BYTE ask = ACK; for(i = 0; i < 8; i++) { if((data & 0x80) == 0) a80: 88 23 and r24, r24 a82: 1c f0 brlt .+6 ; 0xa8a <i2c_send_byte+0xc> { NULL_SDA(); a84: 8e 9a sbi 0x11, 6 ; 17 a86: 96 98 cbi 0x12, 6 ; 18 a88: 02 c0 rjmp .+4 ; 0xa8e <i2c_send_byte+0x10> } else { ONE_SDA(); a8a: 8e 98 cbi 0x11, 6 ; 17 a8c: 96 9a sbi 0x12, 6 ; 18 a8e: e3 e3 ldi r30, 0x33 ; 51 a90: f7 e0 ldi r31, 0x07 ; 7 a92: 31 97 sbiw r30, 0x01 ; 1 a94: f1 f7 brne .-4 ; 0xa92 <i2c_send_byte+0x14> } I2C_DELAY(); ONE_SCL(); a96: 8f 98 cbi 0x11, 7 ; 17 a98: 97 9a sbi 0x12, 7 ; 18 a9a: e3 e3 ldi r30, 0x33 ; 51 a9c: f7 e0 ldi r31, 0x07 ; 7 a9e: 31 97 sbiw r30, 0x01 ; 1 aa0: f1 f7 brne .-4 ; 0xa9e <i2c_send_byte+0x20> I2C_DELAY(); NULL_SCL(); aa2: 8f 9a sbi 0x11, 7 ; 17 aa4: 97 98 cbi 0x12, 7 ; 18 data = (data << 1); aa6: 88 0f add r24, r24 aa8: 91 50 subi r25, 0x01 ; 1 BYTE i2c_send_byte(BYTE data) { BYTE i; BYTE ask = ACK; for(i = 0; i < 8; i++) aaa: 51 f7 brne .-44 ; 0xa80 <i2c_send_byte+0x2> NULL_SCL(); data = (data << 1); } ONE_SDA(); aac: 8e 98 cbi 0x11, 6 ; 17 aae: 96 9a sbi 0x12, 6 ; 18 ab0: 83 e3 ldi r24, 0x33 ; 51 ab2: 97 e0 ldi r25, 0x07 ; 7 ab4: 01 97 sbiw r24, 0x01 ; 1 ab6: f1 f7 brne .-4 ; 0xab4 <i2c_send_byte+0x36> I2C_DELAY(); ONE_SCL(); ab8: 8f 98 cbi 0x11, 7 ; 17 aba: 97 9a sbi 0x12, 7 ; 18 abc: e3 e3 ldi r30, 0x33 ; 51 abe: f7 e0 ldi r31, 0x07 ; 7 ac0: 31 97 sbiw r30, 0x01 ; 1 ac2: f1 f7 brne .-4 ; 0xac0 <i2c_send_byte+0x42> I2C_DELAY(); if((I2C_PIN & (1 << I2C_SDA)) == (1 << I2C_SDA)) ac4: 80 b3 in r24, 0x10 ; 16 else { ask = ACK; } NULL_SCL(); ac6: 8f 9a sbi 0x11, 7 ; 17 ac8: 97 98 cbi 0x12, 7 ; 18 return ask; } aca: 86 fb bst r24, 6 acc: 88 27 eor r24, r24 ace: 80 f9 bld r24, 0 ad0: 08 95 ret 00000ad2 <i2c_read_byte>: //======================================================================= // c s //======================================================================= BYTE i2c_read_byte(BYTE ask) { ad2: 28 2f mov r18, r24 BYTE byte = 0; BYTE i; ONE_SDA(); ad4: 8e 98 cbi 0x11, 6 ; 17 ad6: 96 9a sbi 0x12, 6 ; 18 ad8: 98 e0 ldi r25, 0x08 ; 8 // c s //======================================================================= BYTE i2c_read_byte(BYTE ask) { BYTE byte = 0; ada: 80 e0 ldi r24, 0x00 ; 0 ONE_SDA(); for(i = 0; i < 8; i++) { byte = (byte << 1); adc: 88 0f add r24, r24 ONE_SCL(); ade: 8f 98 cbi 0x11, 7 ; 17 ae0: 97 9a sbi 0x12, 7 ; 18 ae2: e3 e3 ldi r30, 0x33 ; 51 ae4: f7 e0 ldi r31, 0x07 ; 7 ae6: 31 97 sbiw r30, 0x01 ; 1 ae8: f1 f7 brne .-4 ; 0xae6 <i2c_read_byte+0x14> I2C_DELAY(); if((I2C_PIN & (1 << I2C_SDA)) == (1 << I2C_SDA)) byte |= 0x01; aea: 86 99 sbic 0x10, 6 ; 16 aec: 81 60 ori r24, 0x01 ; 1 NULL_SCL(); aee: 8f 9a sbi 0x11, 7 ; 17 af0: 97 98 cbi 0x12, 7 ; 18 af2: e3 e3 ldi r30, 0x33 ; 51 af4: f7 e0 ldi r31, 0x07 ; 7 af6: 31 97 sbiw r30, 0x01 ; 1 af8: f1 f7 brne .-4 ; 0xaf6 <i2c_read_byte+0x24> afa: 91 50 subi r25, 0x01 ; 1 BYTE byte = 0; BYTE i; ONE_SDA(); for(i = 0; i < 8; i++) afc: 79 f7 brne .-34 ; 0xadc <i2c_read_byte+0xa> if((I2C_PIN & (1 << I2C_SDA)) == (1 << I2C_SDA)) byte |= 0x01; NULL_SCL(); I2C_DELAY(); } if(ask == ACK) afe: 21 11 cpse r18, r1 b00: 03 c0 rjmp .+6 ; 0xb08 <i2c_read_byte+0x36> { NULL_SDA(); b02: 8e 9a sbi 0x11, 6 ; 17 b04: 96 98 cbi 0x12, 6 ; 18 b06: 02 c0 rjmp .+4 ; 0xb0c <i2c_read_byte+0x3a> } else { ONE_SDA(); b08: 8e 98 cbi 0x11, 6 ; 17 b0a: 96 9a sbi 0x12, 6 ; 18 b0c: e3 e3 ldi r30, 0x33 ; 51 b0e: f7 e0 ldi r31, 0x07 ; 7 b10: 31 97 sbiw r30, 0x01 ; 1 b12: f1 f7 brne .-4 ; 0xb10 <i2c_read_byte+0x3e> } I2C_DELAY(); ONE_SCL(); b14: 8f 98 cbi 0x11, 7 ; 17 b16: 97 9a sbi 0x12, 7 ; 18 b18: e3 e3 ldi r30, 0x33 ; 51 b1a: f7 e0 ldi r31, 0x07 ; 7 b1c: 31 97 sbiw r30, 0x01 ; 1 b1e: f1 f7 brne .-4 ; 0xb1c <i2c_read_byte+0x4a> I2C_DELAY(); NULL_SCL(); b20: 8f 9a sbi 0x11, 7 ; 17 b22: 97 98 cbi 0x12, 7 ; 18 b24: e3 e3 ldi r30, 0x33 ; 51 b26: f7 e0 ldi r31, 0x07 ; 7 b28: 31 97 sbiw r30, 0x01 ; 1 b2a: f1 f7 brne .-4 ; 0xb28 <i2c_read_byte+0x56> I2C_DELAY(); ONE_SDA(); b2c: 8e 98 cbi 0x11, 6 ; 17 b2e: 96 9a sbi 0x12, 6 ; 18 return byte; b30: 08 95 ret 00000b32 <allColorSetRGB>: } uint8_t LedReadBrigtness() { return brigtness; } b32: fc 01 movw r30, r24 b34: 90 81 ld r25, Z b36: 24 2f mov r18, r20 b38: 30 e0 ldi r19, 0x00 ; 0 b3a: d9 01 movw r26, r18 b3c: a9 0f add r26, r25 b3e: b1 1d adc r27, r1 b40: af 3f cpi r26, 0xFF ; 255 b42: b1 05 cpc r27, r1 b44: 09 f0 breq .+2 ; 0xb48 <allColorSetRGB+0x16> b46: 2c f4 brge .+10 ; 0xb52 <allColorSetRGB+0x20> b48: 94 0f add r25, r20 b4a: 90 83 st Z, r25 b4c: 9f 3f cpi r25, 0xFF ; 255 b4e: 79 f4 brne .+30 ; 0xb6e <allColorSetRGB+0x3c> b50: 02 c0 rjmp .+4 ; 0xb56 <allColorSetRGB+0x24> b52: 8f ef ldi r24, 0xFF ; 255 b54: 80 83 st Z, r24 b56: fb 01 movw r30, r22 b58: 50 81 ld r21, Z b5a: 85 2f mov r24, r21 b5c: 90 e0 ldi r25, 0x00 ; 0 b5e: 82 1b sub r24, r18 b60: 93 0b sbc r25, r19 b62: 1a f0 brmi .+6 ; 0xb6a <allColorSetRGB+0x38> b64: 54 1b sub r21, r20 b66: 50 83 st Z, r21 b68: 08 95 ret b6a: fb 01 movw r30, r22 b6c: 10 82 st Z, r1 b6e: 08 95 ret 00000b70 <Wheel>: b70: 80 95 com r24 b72: 85 35 cpi r24, 0x55 ; 85 b74: 64 f4 brge .+24 ; 0xb8e <Wheel+0x1e> b76: 98 2f mov r25, r24 b78: 99 0f add r25, r25 b7a: 89 0f add r24, r25 b7c: 98 2f mov r25, r24 b7e: 90 95 com r25 b80: fb 01 movw r30, r22 b82: 90 83 st Z, r25 b84: f9 01 movw r30, r18 b86: 10 82 st Z, r1 b88: fa 01 movw r30, r20 b8a: 80 83 st Z, r24 b8c: 08 95 ret b8e: fb 01 movw r30, r22 b90: 10 82 st Z, r1 b92: 85 55 subi r24, 0x55 ; 85 b94: 98 2f mov r25, r24 b96: 99 0f add r25, r25 b98: 89 0f add r24, r25 b9a: f9 01 movw r30, r18 b9c: 80 83 st Z, r24 b9e: fa 01 movw r30, r20 ba0: 80 83 st Z, r24 ba2: 08 95 ret 00000ba4 <LedInit>: ba4: b8 9a sbi 0x17, 0 ; 23 ba6: c0 98 cbi 0x18, 0 ; 24 ba8: 08 95 ret 00000baa <LedUpdate>: baa: 62 e1 ldi r22, 0x12 ; 18 bac: 70 e0 ldi r23, 0x00 ; 0 bae: 82 e9 ldi r24, 0x92 ; 146 bb0: 91 e0 ldi r25, 0x01 ; 1 bb2: 55 da rcall .-2902 ; 0x5e <output_grb> bb4: 08 95 ret 00000bb6 <LedSetColorRGB>: bb6: cf 92 push r12 bb8: df 92 push r13 bba: ef 92 push r14 bbc: ff 92 push r15 bbe: 0f 93 push r16 bc0: 1f 93 push r17 bc2: cf 93 push r28 bc4: df 93 push r29 bc6: 36 2f mov r19, r22 bc8: 90 e0 ldi r25, 0x00 ; 0 bca: fc 01 movw r30, r24 bcc: ee 0f add r30, r30 bce: ff 1f adc r31, r31 bd0: e8 0f add r30, r24 bd2: f9 1f adc r31, r25 bd4: c0 91 64 00 lds r28, 0x0064 ; 0x800064 <brigtness> bd8: d0 e0 ldi r29, 0x00 ; 0 bda: 8f 01 movw r16, r30 bdc: 0e 56 subi r16, 0x6E ; 110 bde: 1e 4f sbci r17, 0xFE ; 254 be0: 4c 9f mul r20, r28 be2: c0 01 movw r24, r0 be4: 4d 9f mul r20, r29 be6: 90 0d add r25, r0 be8: 11 24 eor r1, r1 bea: 0f 2e mov r0, r31 bec: f3 e6 ldi r31, 0x63 ; 99 bee: ef 2e mov r14, r31 bf0: f1 2c mov r15, r1 bf2: f0 2d mov r31, r0 bf4: b7 01 movw r22, r14 bf6: 06 d7 rcall .+3596 ; 0x1a04 <__divmodhi4> bf8: d8 01 movw r26, r16 bfa: 6c 93 st X, r22 bfc: 8f 01 movw r16, r30 bfe: 0f 5f subi r16, 0xFF ; 255 c00: 1f 4f sbci r17, 0xFF ; 255 c02: df 01 movw r26, r30 c04: a0 58 subi r26, 0x80 ; 128 c06: be 4f sbci r27, 0xFE ; 254 c08: 4c 93 st X, r20 c0a: c8 01 movw r24, r16 c0c: 8e 56 subi r24, 0x6E ; 110 c0e: 9e 4f sbci r25, 0xFE ; 254 c10: 6c 01 movw r12, r24 c12: 3c 9f mul r19, r28 c14: c0 01 movw r24, r0 c16: 3d 9f mul r19, r29 c18: 90 0d add r25, r0 c1a: 11 24 eor r1, r1 c1c: b7 01 movw r22, r14 c1e: f2 d6 rcall .+3556 ; 0x1a04 <__divmodhi4> c20: d6 01 movw r26, r12 c22: 6c 93 st X, r22 c24: 32 96 adiw r30, 0x02 ; 2 c26: d8 01 movw r26, r16 c28: a0 58 subi r26, 0x80 ; 128 c2a: be 4f sbci r27, 0xFE ; 254 c2c: 3c 93 st X, r19 c2e: 8f 01 movw r16, r30 c30: 0e 56 subi r16, 0x6E ; 110 c32: 1e 4f sbci r17, 0xFE ; 254 c34: 2c 9f mul r18, r28 c36: c0 01 movw r24, r0 c38: 2d 9f mul r18, r29 c3a: 90 0d add r25, r0 c3c: 11 24 eor r1, r1 c3e: b7 01 movw r22, r14 c40: e1 d6 rcall .+3522 ; 0x1a04 <__divmodhi4> c42: d8 01 movw r26, r16 c44: 6c 93 st X, r22 c46: e0 58 subi r30, 0x80 ; 128 c48: fe 4f sbci r31, 0xFE ; 254 c4a: 20 83 st Z, r18 c4c: df 91 pop r29 c4e: cf 91 pop r28 c50: 1f 91 pop r17 c52: 0f 91 pop r16 c54: ff 90 pop r15 c56: ef 90 pop r14 c58: df 90 pop r13 c5a: cf 90 pop r12 c5c: 08 95 ret 00000c5e <LedSetColor>: c5e: fb 01 movw r30, r22 c60: 22 81 ldd r18, Z+2 ; 0x02 c62: 41 81 ldd r20, Z+1 ; 0x01 c64: 60 81 ld r22, Z c66: a7 df rcall .-178 ; 0xbb6 <LedSetColorRGB> c68: 08 95 ret 00000c6a <LedSetColorRGBAllLed>: c6a: 0f 93 push r16 c6c: 1f 93 push r17 c6e: cf 93 push r28 c70: df 93 push r29 c72: 08 2f mov r16, r24 c74: 16 2f mov r17, r22 c76: d4 2f mov r29, r20 c78: c0 e0 ldi r28, 0x00 ; 0 c7a: 2d 2f mov r18, r29 c7c: 41 2f mov r20, r17 c7e: 60 2f mov r22, r16 c80: 8c 2f mov r24, r28 c82: 99 df rcall .-206 ; 0xbb6 <LedSetColorRGB> c84: cf 5f subi r28, 0xFF ; 255 c86: c6 30 cpi r28, 0x06 ; 6 c88: c1 f7 brne .-16 ; 0xc7a <LedSetColorRGBAllLed+0x10> c8a: df 91 pop r29 c8c: cf 91 pop r28 c8e: 1f 91 pop r17 c90: 0f 91 pop r16 c92: 08 95 ret 00000c94 <LedOffAll>: c94: cf 93 push r28 c96: c0 e0 ldi r28, 0x00 ; 0 c98: 20 e0 ldi r18, 0x00 ; 0 c9a: 40 e0 ldi r20, 0x00 ; 0 c9c: 60 e0 ldi r22, 0x00 ; 0 c9e: 8c 2f mov r24, r28 ca0: 8a df rcall .-236 ; 0xbb6 <LedSetColorRGB> ca2: cf 5f subi r28, 0xFF ; 255 ca4: c6 30 cpi r28, 0x06 ; 6 ca6: c1 f7 brne .-16 ; 0xc98 <LedOffAll+0x4> ca8: a7 dd rcall .-1202 ; 0x7f8 <DisplayRequestUpdateLed> caa: cf 91 pop r28 cac: 08 95 ret 00000cae <LedTheaterChaseRainbow>: cae: cf 92 push r12 cb0: df 92 push r13 cb2: ff 92 push r15 cb4: 0f 93 push r16 cb6: 1f 93 push r17 cb8: cf 93 push r28 cba: df 93 push r29 cbc: 00 d0 rcall .+0 ; 0xcbe <LedTheaterChaseRainbow+0x10> cbe: 1f 92 push r1 cc0: cd b7 in r28, 0x3d ; 61 cc2: de b7 in r29, 0x3e ; 62 cc4: 00 91 b4 00 lds r16, 0x00B4 ; 0x8000b4 <j.1719> cc8: 10 91 b5 00 lds r17, 0x00B5 ; 0x8000b5 <j.1719+0x1> ccc: 0f 3f cpi r16, 0xFF ; 255 cce: 11 05 cpc r17, r1 cd0: 09 f0 breq .+2 ; 0xcd4 <LedTheaterChaseRainbow+0x26> cd2: c0 f5 brcc .+112 ; 0xd44 <LedTheaterChaseRainbow+0x96> cd4: f0 90 b3 00 lds r15, 0x00B3 ; 0x8000b3 <q.1720> cd8: 82 e0 ldi r24, 0x02 ; 2 cda: 8f 15 cp r24, r15 cdc: 38 f1 brcs .+78 ; 0xd2c <LedTheaterChaseRainbow+0x7e> cde: cf 2c mov r12, r15 ce0: d1 2c mov r13, r1 ce2: 86 e0 ldi r24, 0x06 ; 6 ce4: c8 16 cp r12, r24 ce6: d1 04 cpc r13, r1 ce8: 9c f1 brlt .+102 ; 0xd50 <LedTheaterChaseRainbow+0xa2> cea: 1c c0 rjmp .+56 ; 0xd24 <LedTheaterChaseRainbow+0x76> cec: 0d 5f subi r16, 0xFD ; 253 cee: 1f 4f sbci r17, 0xFF ; 255 cf0: 98 01 movw r18, r16 cf2: a1 e8 ldi r26, 0x81 ; 129 cf4: b0 e8 ldi r27, 0x80 ; 128 cf6: bb d6 rcall .+3446 ; 0x1a6e <__umulhisi3> cf8: 88 0f add r24, r24 cfa: 89 2f mov r24, r25 cfc: 88 1f adc r24, r24 cfe: 99 0b sbc r25, r25 d00: 91 95 neg r25 d02: 9e 01 movw r18, r28 d04: 2d 5f subi r18, 0xFD ; 253 d06: 3f 4f sbci r19, 0xFF ; 255 d08: ae 01 movw r20, r28 d0a: 4e 5f subi r20, 0xFE ; 254 d0c: 5f 4f sbci r21, 0xFF ; 255 d0e: be 01 movw r22, r28 d10: 6f 5f subi r22, 0xFF ; 255 d12: 7f 4f sbci r23, 0xFF ; 255 d14: 80 0f add r24, r16 d16: 2c df rcall .-424 ; 0xb70 <Wheel> d18: 2b 81 ldd r18, Y+3 ; 0x03 d1a: 4a 81 ldd r20, Y+2 ; 0x02 d1c: 69 81 ldd r22, Y+1 ; 0x01 d1e: 83 e0 ldi r24, 0x03 ; 3 d20: 8f 0d add r24, r15 d22: 49 df rcall .-366 ; 0xbb6 <LedSetColorRGB> d24: f3 94 inc r15 d26: f0 92 b3 00 sts 0x00B3, r15 ; 0x8000b3 <q.1720> d2a: 02 c0 rjmp .+4 ; 0xd30 <LedTheaterChaseRainbow+0x82> d2c: 10 92 b3 00 sts 0x00B3, r1 ; 0x8000b3 <q.1720> d30: 80 91 b4 00 lds r24, 0x00B4 ; 0x8000b4 <j.1719> d34: 90 91 b5 00 lds r25, 0x00B5 ; 0x8000b5 <j.1719+0x1> d38: 01 96 adiw r24, 0x01 ; 1 d3a: 90 93 b5 00 sts 0x00B5, r25 ; 0x8000b5 <j.1719+0x1> d3e: 80 93 b4 00 sts 0x00B4, r24 ; 0x8000b4 <j.1719> d42: 04 c0 rjmp .+8 ; 0xd4c <LedTheaterChaseRainbow+0x9e> d44: 10 92 b5 00 sts 0x00B5, r1 ; 0x8000b5 <j.1719+0x1> d48: 10 92 b4 00 sts 0x00B4, r1 ; 0x8000b4 <j.1719> d4c: 55 dd rcall .-1366 ; 0x7f8 <DisplayRequestUpdateLed> d4e: 22 c0 rjmp .+68 ; 0xd94 <LedTheaterChaseRainbow+0xe6> d50: 98 01 movw r18, r16 d52: a1 e8 ldi r26, 0x81 ; 129 d54: b0 e8 ldi r27, 0x80 ; 128 d56: 8b d6 rcall .+3350 ; 0x1a6e <__umulhisi3> d58: 88 0f add r24, r24 d5a: 89 2f mov r24, r25 d5c: 88 1f adc r24, r24 d5e: 99 0b sbc r25, r25 d60: 91 95 neg r25 d62: 9e 01 movw r18, r28 d64: 2d 5f subi r18, 0xFD ; 253 d66: 3f 4f sbci r19, 0xFF ; 255 d68: ae 01 movw r20, r28 d6a: 4e 5f subi r20, 0xFE ; 254 d6c: 5f 4f sbci r21, 0xFF ; 255 d6e: be 01 movw r22, r28 d70: 6f 5f subi r22, 0xFF ; 255 d72: 7f 4f sbci r23, 0xFF ; 255 d74: 80 0f add r24, r16 d76: fc de rcall .-520 ; 0xb70 <Wheel> d78: 2b 81 ldd r18, Y+3 ; 0x03 d7a: 4a 81 ldd r20, Y+2 ; 0x02 d7c: 69 81 ldd r22, Y+1 ; 0x01 d7e: 8f 2d mov r24, r15 d80: 1a df rcall .-460 ; 0xbb6 <LedSetColorRGB> d82: 83 e0 ldi r24, 0x03 ; 3 d84: c8 0e add r12, r24 d86: d1 1c adc r13, r1 d88: 86 e0 ldi r24, 0x06 ; 6 d8a: c8 16 cp r12, r24 d8c: d1 04 cpc r13, r1 d8e: 0c f4 brge .+2 ; 0xd92 <LedTheaterChaseRainbow+0xe4> d90: ad cf rjmp .-166 ; 0xcec <LedTheaterChaseRainbow+0x3e> d92: c8 cf rjmp .-112 ; 0xd24 <LedTheaterChaseRainbow+0x76> d94: 0f 90 pop r0 d96: 0f 90 pop r0 d98: 0f 90 pop r0 d9a: df 91 pop r29 d9c: cf 91 pop r28 d9e: 1f 91 pop r17 da0: 0f 91 pop r16 da2: ff 90 pop r15 da4: df 90 pop r13 da6: cf 90 pop r12 da8: 08 95 ret 00000daa <LedRainbowCycle>: daa: cf 92 push r12 dac: df 92 push r13 dae: ef 92 push r14 db0: ff 92 push r15 db2: 1f 93 push r17 db4: cf 93 push r28 db6: df 93 push r29 db8: 00 d0 rcall .+0 ; 0xdba <LedRainbowCycle+0x10> dba: 1f 92 push r1 dbc: cd b7 in r28, 0x3d ; 61 dbe: de b7 in r29, 0x3e ; 62 dc0: c0 90 b1 00 lds r12, 0x00B1 ; 0x8000b1 <j.1731> dc4: d0 90 b2 00 lds r13, 0x00B2 ; 0x8000b2 <j.1731+0x1> dc8: c1 14 cp r12, r1 dca: 85 e0 ldi r24, 0x05 ; 5 dcc: d8 06 cpc r13, r24 dce: 38 f5 brcc .+78 ; 0xe1e <LedRainbowCycle+0x74> dd0: 10 e0 ldi r17, 0x00 ; 0 dd2: e1 2c mov r14, r1 dd4: f1 2c mov r15, r1 dd6: 97 01 movw r18, r14 dd8: ab ea ldi r26, 0xAB ; 171 dda: ba ea ldi r27, 0xAA ; 170 ddc: 48 d6 rcall .+3216 ; 0x1a6e <__umulhisi3> dde: 96 95 lsr r25 de0: 87 95 ror r24 de2: 96 95 lsr r25 de4: 87 95 ror r24 de6: 9e 01 movw r18, r28 de8: 2d 5f subi r18, 0xFD ; 253 dea: 3f 4f sbci r19, 0xFF ; 255 dec: ae 01 movw r20, r28 dee: 4e 5f subi r20, 0xFE ; 254 df0: 5f 4f sbci r21, 0xFF ; 255 df2: be 01 movw r22, r28 df4: 6f 5f subi r22, 0xFF ; 255 df6: 7f 4f sbci r23, 0xFF ; 255 df8: 8c 0d add r24, r12 dfa: ba de rcall .-652 ; 0xb70 <Wheel> dfc: 2b 81 ldd r18, Y+3 ; 0x03 dfe: 4a 81 ldd r20, Y+2 ; 0x02 e00: 69 81 ldd r22, Y+1 ; 0x01 e02: 81 2f mov r24, r17 e04: d8 de rcall .-592 ; 0xbb6 <LedSetColorRGB> e06: f3 94 inc r15 e08: 1f 5f subi r17, 0xFF ; 255 e0a: 16 30 cpi r17, 0x06 ; 6 e0c: 21 f7 brne .-56 ; 0xdd6 <LedRainbowCycle+0x2c> e0e: 8f ef ldi r24, 0xFF ; 255 e10: c8 1a sub r12, r24 e12: d8 0a sbc r13, r24 e14: d0 92 b2 00 sts 0x00B2, r13 ; 0x8000b2 <j.1731+0x1> e18: c0 92 b1 00 sts 0x00B1, r12 ; 0x8000b1 <j.1731> e1c: 04 c0 rjmp .+8 ; 0xe26 <LedRainbowCycle+0x7c> e1e: 10 92 b2 00 sts 0x00B2, r1 ; 0x8000b2 <j.1731+0x1> e22: 10 92 b1 00 sts 0x00B1, r1 ; 0x8000b1 <j.1731> e26: e8 dc rcall .-1584 ; 0x7f8 <DisplayRequestUpdateLed> e28: 0f 90 pop r0 e2a: 0f 90 pop r0 e2c: 0f 90 pop r0 e2e: df 91 pop r29 e30: cf 91 pop r28 e32: 1f 91 pop r17 e34: ff 90 pop r15 e36: ef 90 pop r14 e38: df 90 pop r13 e3a: cf 90 pop r12 e3c: 08 95 ret 00000e3e <LedRainbow>: e3e: ef 92 push r14 e40: ff 92 push r15 e42: 1f 93 push r17 e44: cf 93 push r28 e46: df 93 push r29 e48: 00 d0 rcall .+0 ; 0xe4a <LedRainbow+0xc> e4a: 1f 92 push r1 e4c: cd b7 in r28, 0x3d ; 61 e4e: de b7 in r29, 0x3e ; 62 e50: e0 90 af 00 lds r14, 0x00AF ; 0x8000af <j.1742> e54: f0 90 b0 00 lds r15, 0x00B0 ; 0x8000b0 <j.1742+0x1> e58: 8f ef ldi r24, 0xFF ; 255 e5a: e8 16 cp r14, r24 e5c: f1 04 cpc r15, r1 e5e: 09 f0 breq .+2 ; 0xe62 <LedRainbow+0x24> e60: e8 f4 brcc .+58 ; 0xe9c <LedRainbow+0x5e> e62: 10 e0 ldi r17, 0x00 ; 0 e64: 9e 01 movw r18, r28 e66: 2d 5f subi r18, 0xFD ; 253 e68: 3f 4f sbci r19, 0xFF ; 255 e6a: ae 01 movw r20, r28 e6c: 4e 5f subi r20, 0xFE ; 254 e6e: 5f 4f sbci r21, 0xFF ; 255 e70: be 01 movw r22, r28 e72: 6f 5f subi r22, 0xFF ; 255 e74: 7f 4f sbci r23, 0xFF ; 255 e76: 81 2f mov r24, r17 e78: 8e 0d add r24, r14 e7a: 7a de rcall .-780 ; 0xb70 <Wheel> e7c: 2b 81 ldd r18, Y+3 ; 0x03 e7e: 4a 81 ldd r20, Y+2 ; 0x02 e80: 69 81 ldd r22, Y+1 ; 0x01 e82: 81 2f mov r24, r17 e84: 98 de rcall .-720 ; 0xbb6 <LedSetColorRGB> e86: 1f 5f subi r17, 0xFF ; 255 e88: 16 30 cpi r17, 0x06 ; 6 e8a: 61 f7 brne .-40 ; 0xe64 <LedRainbow+0x26> e8c: 8f ef ldi r24, 0xFF ; 255 e8e: e8 1a sub r14, r24 e90: f8 0a sbc r15, r24 e92: f0 92 b0 00 sts 0x00B0, r15 ; 0x8000b0 <j.1742+0x1> e96: e0 92 af 00 sts 0x00AF, r14 ; 0x8000af <j.1742> e9a: 04 c0 rjmp .+8 ; 0xea4 <LedRainbow+0x66> e9c: 10 92 b0 00 sts 0x00B0, r1 ; 0x8000b0 <j.1742+0x1> ea0: 10 92 af 00 sts 0x00AF, r1 ; 0x8000af <j.1742> ea4: a9 dc rcall .-1710 ; 0x7f8 <DisplayRequestUpdateLed> ea6: 0f 90 pop r0 ea8: 0f 90 pop r0 eaa: 0f 90 pop r0 eac: df 91 pop r29 eae: cf 91 pop r28 eb0: 1f 91 pop r17 eb2: ff 90 pop r15 eb4: ef 90 pop r14 eb6: 08 95 ret 00000eb8 <LedAllColorAnim>: eb8: cf 93 push r28 eba: c8 2f mov r28, r24 ebc: 61 11 cpse r22, r1 ebe: 1f c0 rjmp .+62 ; 0xefe <LedAllColorAnim+0x46> ec0: 80 91 ae 00 lds r24, 0x00AE ; 0x8000ae <b.1756> ec4: 81 11 cpse r24, r1 ec6: 06 c0 rjmp .+12 ; 0xed4 <LedAllColorAnim+0x1c> ec8: 4c 2f mov r20, r28 eca: 63 e6 ldi r22, 0x63 ; 99 ecc: 70 e0 ldi r23, 0x00 ; 0 ece: 8d ea ldi r24, 0xAD ; 173 ed0: 90 e0 ldi r25, 0x00 ; 0 ed2: 2f de rcall .-930 ; 0xb32 <allColorSetRGB> ed4: 80 91 63 00 lds r24, 0x0063 ; 0x800063 <r.1754> ed8: 81 11 cpse r24, r1 eda: 06 c0 rjmp .+12 ; 0xee8 <LedAllColorAnim+0x30> edc: 4c 2f mov r20, r28 ede: 6d ea ldi r22, 0xAD ; 173 ee0: 70 e0 ldi r23, 0x00 ; 0 ee2: 8e ea ldi r24, 0xAE ; 174 ee4: 90 e0 ldi r25, 0x00 ; 0 ee6: 25 de rcall .-950 ; 0xb32 <allColorSetRGB> ee8: 80 91 ad 00 lds r24, 0x00AD ; 0x8000ad <g.1755> eec: 81 11 cpse r24, r1 eee: 33 c0 rjmp .+102 ; 0xf56 <LedAllColorAnim+0x9e> ef0: 4c 2f mov r20, r28 ef2: 6e ea ldi r22, 0xAE ; 174 ef4: 70 e0 ldi r23, 0x00 ; 0 ef6: 83 e6 ldi r24, 0x63 ; 99 ef8: 90 e0 ldi r25, 0x00 ; 0 efa: 1b de rcall .-970 ; 0xb32 <allColorSetRGB> efc: 2c c0 rjmp .+88 ; 0xf56 <LedAllColorAnim+0x9e> efe: 80 91 ae 00 lds r24, 0x00AE ; 0x8000ae <b.1756> f02: 81 11 cpse r24, r1 f04: 06 c0 rjmp .+12 ; 0xf12 <LedAllColorAnim+0x5a> f06: 4c 2f mov r20, r28 f08: 6d ea ldi r22, 0xAD ; 173 f0a: 70 e0 ldi r23, 0x00 ; 0 f0c: 83 e6 ldi r24, 0x63 ; 99 f0e: 90 e0 ldi r25, 0x00 ; 0 f10: 10 de rcall .-992 ; 0xb32 <allColorSetRGB> f12: 80 91 63 00 lds r24, 0x0063 ; 0x800063 <r.1754> f16: 81 11 cpse r24, r1 f18: 06 c0 rjmp .+12 ; 0xf26 <LedAllColorAnim+0x6e> f1a: 4c 2f mov r20, r28 f1c: 6e ea ldi r22, 0xAE ; 174 f1e: 70 e0 ldi r23, 0x00 ; 0 f20: 8d ea ldi r24, 0xAD ; 173 f22: 90 e0 ldi r25, 0x00 ; 0 f24: 06 de rcall .-1012 ; 0xb32 <allColorSetRGB> f26: 80 91 ad 00 lds r24, 0x00AD ; 0x8000ad <g.1755> f2a: 81 11 cpse r24, r1 f2c: 14 c0 rjmp .+40 ; 0xf56 <LedAllColorAnim+0x9e> f2e: 4c 2f mov r20, r28 f30: 63 e6 ldi r22, 0x63 ; 99 f32: 70 e0 ldi r23, 0x00 ; 0 f34: 8e ea ldi r24, 0xAE ; 174 f36: 90 e0 ldi r25, 0x00 ; 0 f38: fc dd rcall .-1032 ; 0xb32 <allColorSetRGB> f3a: 0d c0 rjmp .+26 ; 0xf56 <LedAllColorAnim+0x9e> f3c: 20 91 ae 00 lds r18, 0x00AE ; 0x8000ae <b.1756> f40: 40 91 ad 00 lds r20, 0x00AD ; 0x8000ad <g.1755> f44: 60 91 63 00 lds r22, 0x0063 ; 0x800063 <r.1754> f48: 8c 2f mov r24, r28 f4a: 35 de rcall .-918 ; 0xbb6 <LedSetColorRGB> f4c: cf 5f subi r28, 0xFF ; 255 f4e: c6 30 cpi r28, 0x06 ; 6 f50: a9 f7 brne .-22 ; 0xf3c <LedAllColorAnim+0x84> f52: 52 dc rcall .-1884 ; 0x7f8 <DisplayRequestUpdateLed> f54: 02 c0 rjmp .+4 ; 0xf5a <LedAllColorAnim+0xa2> f56: c0 e0 ldi r28, 0x00 ; 0 f58: f1 cf rjmp .-30 ; 0xf3c <LedAllColorAnim+0x84> f5a: cf 91 pop r28 f5c: 08 95 ret 00000f5e <LedSetBrigtness>: f5e: 84 36 cpi r24, 0x64 ; 100 f60: 18 f4 brcc .+6 ; 0xf68 <LedSetBrigtness+0xa> f62: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <brigtness> f66: 08 95 ret f68: 83 e6 ldi r24, 0x63 ; 99 f6a: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <brigtness> f6e: 08 95 ret 00000f70 <LedReadColor>: void LedReadColor(uint8_t led, uint8_t *r, uint8_t *g, uint8_t *b) { uint16_t index = 3*led; f70: 90 e0 ldi r25, 0x00 ; 0 f72: fc 01 movw r30, r24 f74: ee 0f add r30, r30 f76: ff 1f adc r31, r31 f78: 8e 0f add r24, r30 f7a: 9f 1f adc r25, r31 *g = buffLeds[index++]; f7c: fc 01 movw r30, r24 f7e: e0 58 subi r30, 0x80 ; 128 f80: fe 4f sbci r31, 0xFE ; 254 f82: 80 81 ld r24, Z f84: da 01 movw r26, r20 f86: 8c 93 st X, r24 *r = buffLeds[index++]; f88: 81 81 ldd r24, Z+1 ; 0x01 f8a: db 01 movw r26, r22 f8c: 8c 93 st X, r24 *b = buffLeds[index]; f8e: 82 81 ldd r24, Z+2 ; 0x02 f90: f9 01 movw r30, r18 f92: 80 83 st Z, r24 f94: 08 95 ret 00000f96 <__vector_8>: void RestoreSettingsFromEeprom(); /*task timer*/ ISR(TIMER1_OVF_vect) { f96: 1f 92 push r1 f98: 0f 92 push r0 f9a: 0f b6 in r0, 0x3f ; 63 f9c: 0f 92 push r0 f9e: 11 24 eor r1, r1 fa0: 2f 93 push r18 fa2: 3f 93 push r19 fa4: 4f 93 push r20 fa6: 5f 93 push r21 fa8: 6f 93 push r22 faa: 7f 93 push r23 fac: 8f 93 push r24 fae: 9f 93 push r25 fb0: af 93 push r26 fb2: bf 93 push r27 fb4: ef 93 push r30 fb6: ff 93 push r31 fb8: 80 e0 ldi r24, 0x00 ; 0 fba: 90 e0 ldi r25, 0x00 ; 0 SoftTimer[i].Time --; } else { /*set flag*/ flag[SoftTimer[i].Number] = 1; fbc: 51 e0 ldi r21, 0x01 ; 1 /*reset timer*/ SoftTimer[i].Number = 255; fbe: 4f ef ldi r20, 0xFF ; 255 ISR(TIMER1_OVF_vect) { uint8_t i; for(i=0; i<MAX_NUM_OF_TIMERS; i++) { if(SoftTimer[i].Number == 255)continue; /*if timer empty, next timer*/ fc0: 9c 01 movw r18, r24 fc2: fc 01 movw r30, r24 fc4: ee 0f add r30, r30 fc6: ff 1f adc r31, r31 fc8: e8 0f add r30, r24 fca: f9 1f adc r31, r25 fcc: e6 54 subi r30, 0x46 ; 70 fce: ff 4f sbci r31, 0xFF ; 255 fd0: 60 81 ld r22, Z fd2: 6f 3f cpi r22, 0xFF ; 255 fd4: 41 f1 breq .+80 ; 0x1026 <__vector_8+0x90> if(SoftTimer[i].Time > 0) fd6: fc 01 movw r30, r24 fd8: ee 0f add r30, r30 fda: ff 1f adc r31, r31 fdc: e8 0f add r30, r24 fde: f9 1f adc r31, r25 fe0: e6 54 subi r30, 0x46 ; 70 fe2: ff 4f sbci r31, 0xFF ; 255 fe4: 61 81 ldd r22, Z+1 ; 0x01 fe6: 72 81 ldd r23, Z+2 ; 0x02 fe8: 67 2b or r22, r23 fea: 79 f0 breq .+30 ; 0x100a <__vector_8+0x74> { SoftTimer[i].Time --; fec: fc 01 movw r30, r24 fee: ee 0f add r30, r30 ff0: ff 1f adc r31, r31 ff2: 2e 0f add r18, r30 ff4: 3f 1f adc r19, r31 ff6: f9 01 movw r30, r18 ff8: e6 54 subi r30, 0x46 ; 70 ffa: ff 4f sbci r31, 0xFF ; 255 ffc: 21 81 ldd r18, Z+1 ; 0x01 ffe: 32 81 ldd r19, Z+2 ; 0x02 1000: 21 50 subi r18, 0x01 ; 1 1002: 31 09 sbc r19, r1 1004: 32 83 std Z+2, r19 ; 0x02 1006: 21 83 std Z+1, r18 ; 0x01 1008: 0e c0 rjmp .+28 ; 0x1026 <__vector_8+0x90> } else { /*set flag*/ flag[SoftTimer[i].Number] = 1; 100a: fc 01 movw r30, r24 100c: ee 0f add r30, r30 100e: ff 1f adc r31, r31 1010: 2e 0f add r18, r30 1012: 3f 1f adc r19, r31 1014: f9 01 movw r30, r18 1016: e6 54 subi r30, 0x46 ; 70 1018: ff 4f sbci r31, 0xFF ; 255 101a: a0 81 ld r26, Z 101c: b0 e0 ldi r27, 0x00 ; 0 101e: ac 55 subi r26, 0x5C ; 92 1020: be 4f sbci r27, 0xFE ; 254 1022: 5c 93 st X, r21 /*reset timer*/ SoftTimer[i].Number = 255; 1024: 40 83 st Z, r20 1026: 01 96 adiw r24, 0x01 ; 1 /*task timer*/ ISR(TIMER1_OVF_vect) { uint8_t i; for(i=0; i<MAX_NUM_OF_TIMERS; i++) 1028: 85 30 cpi r24, 0x05 ; 5 102a: 91 05 cpc r25, r1 102c: 49 f6 brne .-110 ; 0xfc0 <__vector_8+0x2a> /*reset timer*/ SoftTimer[i].Number = 255; } } TCNT1 = 65527; 102e: 87 ef ldi r24, 0xF7 ; 247 1030: 9f ef ldi r25, 0xFF ; 255 1032: 9d bd out 0x2d, r25 ; 45 1034: 8c bd out 0x2c, r24 ; 44 } 1036: ff 91 pop r31 1038: ef 91 pop r30 103a: bf 91 pop r27 103c: af 91 pop r26 103e: 9f 91 pop r25 1040: 8f 91 pop r24 1042: 7f 91 pop r23 1044: 6f 91 pop r22 1046: 5f 91 pop r21 1048: 4f 91 pop r20 104a: 3f 91 pop r19 104c: 2f 91 pop r18 104e: 0f 90 pop r0 1050: 0f be out 0x3f, r0 ; 63 1052: 0f 90 pop r0 1054: 1f 90 pop r1 1056: 18 95 reti 00001058 <SetTaskTimer>: { uint8_t i; /*search existing timer*/ for(i=0; i< MAX_NUM_OF_TIMERS; i++) { if(SoftTimer[i].Number == newNumber) 1058: 90 91 ba 00 lds r25, 0x00BA ; 0x8000ba <SoftTimer> 105c: 89 17 cp r24, r25 105e: 71 f0 breq .+28 ; 0x107c <SetTaskTimer+0x24> 1060: 21 e0 ldi r18, 0x01 ; 1 1062: 30 e0 ldi r19, 0x00 ; 0 1064: a9 01 movw r20, r18 1066: f9 01 movw r30, r18 1068: ee 0f add r30, r30 106a: ff 1f adc r31, r31 106c: e2 0f add r30, r18 106e: f3 1f adc r31, r19 1070: e6 54 subi r30, 0x46 ; 70 1072: ff 4f sbci r31, 0xFF ; 255 1074: 90 81 ld r25, Z 1076: 98 13 cpse r25, r24 1078: 0e c0 rjmp .+28 ; 0x1096 <SetTaskTimer+0x3e> 107a: 02 c0 rjmp .+4 ; 0x1080 <SetTaskTimer+0x28> 107c: 40 e0 ldi r20, 0x00 ; 0 107e: 50 e0 ldi r21, 0x00 ; 0 { /*set new time*/ SoftTimer[i].Time = newTime; 1080: fa 01 movw r30, r20 1082: ee 0f add r30, r30 1084: ff 1f adc r31, r31 1086: 4e 0f add r20, r30 1088: 5f 1f adc r21, r31 108a: fa 01 movw r30, r20 108c: e6 54 subi r30, 0x46 ; 70 108e: ff 4f sbci r31, 0xFF ; 255 1090: 72 83 std Z+2, r23 ; 0x02 1092: 61 83 std Z+1, r22 ; 0x01 return; 1094: 08 95 ret 1096: 2f 5f subi r18, 0xFF ; 255 1098: 3f 4f sbci r19, 0xFF ; 255 void SetTaskTimer(uint8_t newNumber, uint16_t newTime) { uint8_t i; /*search existing timer*/ for(i=0; i< MAX_NUM_OF_TIMERS; i++) 109a: 25 30 cpi r18, 0x05 ; 5 109c: 31 05 cpc r19, r1 109e: 11 f7 brne .-60 ; 0x1064 <SetTaskTimer+0xc> } /*search new empty timer*/ for(i=0; i< MAX_NUM_OF_TIMERS; i++) { if(SoftTimer[i].Number == 255) 10a0: 90 91 ba 00 lds r25, 0x00BA ; 0x8000ba <SoftTimer> 10a4: 9f 3f cpi r25, 0xFF ; 255 10a6: 71 f0 breq .+28 ; 0x10c4 <SetTaskTimer+0x6c> 10a8: 21 e0 ldi r18, 0x01 ; 1 10aa: 30 e0 ldi r19, 0x00 ; 0 10ac: a9 01 movw r20, r18 10ae: f9 01 movw r30, r18 10b0: ee 0f add r30, r30 10b2: ff 1f adc r31, r31 10b4: e2 0f add r30, r18 10b6: f3 1f adc r31, r19 10b8: e6 54 subi r30, 0x46 ; 70 10ba: ff 4f sbci r31, 0xFF ; 255 10bc: 90 81 ld r25, Z 10be: 9f 3f cpi r25, 0xFF ; 255 10c0: 79 f4 brne .+30 ; 0x10e0 <SetTaskTimer+0x88> 10c2: 02 c0 rjmp .+4 ; 0x10c8 <SetTaskTimer+0x70> 10c4: 40 e0 ldi r20, 0x00 ; 0 10c6: 50 e0 ldi r21, 0x00 ; 0 { SoftTimer[i].Number = newNumber; 10c8: fa 01 movw r30, r20 10ca: ee 0f add r30, r30 10cc: ff 1f adc r31, r31 10ce: 4e 0f add r20, r30 10d0: 5f 1f adc r21, r31 10d2: fa 01 movw r30, r20 10d4: e6 54 subi r30, 0x46 ; 70 10d6: ff 4f sbci r31, 0xFF ; 255 10d8: 80 83 st Z, r24 SoftTimer[i].Time = newTime; 10da: 72 83 std Z+2, r23 ; 0x02 10dc: 61 83 std Z+1, r22 ; 0x01 return; 10de: 08 95 ret 10e0: 2f 5f subi r18, 0xFF ; 255 10e2: 3f 4f sbci r19, 0xFF ; 255 return; } } /*search new empty timer*/ for(i=0; i< MAX_NUM_OF_TIMERS; i++) 10e4: 25 30 cpi r18, 0x05 ; 5 10e6: 31 05 cpc r19, r1 10e8: 09 f7 brne .-62 ; 0x10ac <SetTaskTimer+0x54> 10ea: 08 95 ret 000010ec <CheckUpdateTime>: } } } void CheckUpdateTime() { 10ec: cf 93 push r28 10ee: df 93 push r29 flag[ACTION1] = 0; 10f0: 10 92 a4 01 sts 0x01A4, r1 ; 0x8001a4 <flag> static uint16_t countToDateDisplay; /*display date*/ if(++countToDateDisplay >= DELAY_TO_DATE) 10f4: 80 91 b6 00 lds r24, 0x00B6 ; 0x8000b6 <countToDateDisplay.1970> 10f8: 90 91 b7 00 lds r25, 0x00B7 ; 0x8000b7 <countToDateDisplay.1970+0x1> 10fc: 01 96 adiw r24, 0x01 ; 1 10fe: 90 93 b7 00 sts 0x00B7, r25 ; 0x8000b7 <countToDateDisplay.1970+0x1> 1102: 80 93 b6 00 sts 0x00B6, r24 ; 0x8000b6 <countToDateDisplay.1970> 1106: 88 3e cpi r24, 0xE8 ; 232 1108: 93 40 sbci r25, 0x03 ; 3 110a: 98 f0 brcs .+38 ; 0x1132 <CheckUpdateTime+0x46> { rtc_get_date(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); 110c: 4b ea ldi r20, 0xAB ; 171 110e: 51 e0 ldi r21, 0x01 ; 1 1110: 6a ea ldi r22, 0xAA ; 170 1112: 71 e0 ldi r23, 0x01 ; 1 1114: 89 ea ldi r24, 0xA9 ; 169 1116: 91 e0 ldi r25, 0x01 ; 1 1118: 02 dc rcall .-2044 ; 0x91e <rtc_get_date> if(countToDateDisplay >= DELAY_TO_DATE+TIME_DISPLAY_DATE) //delay to display date 111a: 80 91 b6 00 lds r24, 0x00B6 ; 0x8000b6 <countToDateDisplay.1970> 111e: 90 91 b7 00 lds r25, 0x00B7 ; 0x8000b7 <countToDateDisplay.1970+0x1> 1122: 8c 3f cpi r24, 0xFC ; 252 1124: 93 40 sbci r25, 0x03 ; 3 1126: 58 f1 brcs .+86 ; 0x117e <CheckUpdateTime+0x92> countToDateDisplay = 0; 1128: 10 92 b7 00 sts 0x00B7, r1 ; 0x8000b7 <countToDateDisplay.1970+0x1> 112c: 10 92 b6 00 sts 0x00B6, r1 ; 0x8000b6 <countToDateDisplay.1970> 1130: 26 c0 rjmp .+76 ; 0x117e <CheckUpdateTime+0x92> }else if(rtc_check_sqw()){ 1132: 3a dc rcall .-1932 ; 0x9a8 <rtc_check_sqw> 1134: 88 23 and r24, r24 1136: 19 f1 breq .+70 ; 0x117e <CheckUpdateTime+0x92> rtc_get_time(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); 1138: 4b ea ldi r20, 0xAB ; 171 113a: 51 e0 ldi r21, 0x01 ; 1 113c: 6a ea ldi r22, 0xAA ; 170 113e: 71 e0 ldi r23, 0x01 ; 1 1140: 89 ea ldi r24, 0xA9 ; 169 1142: 91 e0 ldi r25, 0x01 ; 1 1144: ac db rcall .-2216 ; 0x89e <rtc_get_time> /*change brightness*/ uint16_t tmpBright; tmpBright = BrightnessGet(); 1146: c9 d7 rcall .+3986 ; 0x20da <__TEXT_REGION_LENGTH__+0xda> 1148: c8 2f mov r28, r24 114a: d0 e0 ldi r29, 0x00 ; 0 tmpBright*=2; 114c: cc 0f add r28, r28 114e: dd 1f adc r29, r29 1150: cf 3f cpi r28, 0xFF ; 255 1152: d1 05 cpc r29, r1 1154: 19 f0 breq .+6 ; 0x115c <CheckUpdateTime+0x70> 1156: 10 f0 brcs .+4 ; 0x115c <CheckUpdateTime+0x70> 1158: cf ef ldi r28, 0xFF ; 255 115a: d0 e0 ldi r29, 0x00 ; 0 if(tmpBright>255) tmpBright = 255; LedSetBrigtness(tmpBright*100/255); 115c: 84 e6 ldi r24, 0x64 ; 100 115e: 8c 9f mul r24, r28 1160: 90 01 movw r18, r0 1162: 8d 9f mul r24, r29 1164: 30 0d add r19, r0 1166: 11 24 eor r1, r1 1168: a1 e8 ldi r26, 0x81 ; 129 116a: b0 e8 ldi r27, 0x80 ; 128 116c: 80 d4 rcall .+2304 ; 0x1a6e <__umulhisi3> 116e: 88 0f add r24, r24 1170: 89 2f mov r24, r25 1172: 88 1f adc r24, r24 1174: 99 0b sbc r25, r25 1176: 91 95 neg r25 1178: f2 de rcall .-540 ; 0xf5e <LedSetBrigtness> DisplaySetBrightness(tmpBright); 117a: 8c 2f mov r24, r28 117c: c5 d9 rcall .-3190 ; 0x508 <DisplaySetBrightness> // dataToDisplay[0] = OFF_NUMB; // dataToDisplay[1] = tmpBright/100; // dataToDisplay[2] = tmpBright-dataToDisplay[1]*100; } DisplaySetData3Num(dataToDisplay); 117e: 89 ea ldi r24, 0xA9 ; 169 1180: 91 e0 ldi r25, 0x01 ; 1 1182: 97 d9 rcall .-3282 ; 0x4b2 <DisplaySetData3Num> SetTaskTimer(ACTION1,10); 1184: 6a e0 ldi r22, 0x0A ; 10 1186: 70 e0 ldi r23, 0x00 ; 0 1188: 80 e0 ldi r24, 0x00 ; 0 118a: 66 df rcall .-308 ; 0x1058 <SetTaskTimer> } 118c: df 91 pop r29 118e: cf 91 pop r28 1190: 08 95 ret 00001192 <VerifyControl>: void VerifyControl() { flag[ACTION2] = 0; 1192: 10 92 a5 01 sts 0x01A5, r1 ; 0x8001a5 <flag+0x1> if(controlState==NO_PRESS) 1196: 80 91 ac 01 lds r24, 0x01AC ; 0x8001ac <controlState> 119a: 81 11 cpse r24, r1 119c: 03 c0 rjmp .+6 ; 0x11a4 <VerifyControl+0x12> controlState = ControlCheck(); 119e: a7 d7 rcall .+3918 ; 0x20ee <__TEXT_REGION_LENGTH__+0xee> 11a0: 80 93 ac 01 sts 0x01AC, r24 ; 0x8001ac <controlState> /*ignore turn left/right*/ if(controlState != PRESS_CENTER) 11a4: 80 91 ac 01 lds r24, 0x01AC ; 0x8001ac <controlState> 11a8: 82 30 cpi r24, 0x02 ; 2 11aa: 11 f0 breq .+4 ; 0x11b0 <VerifyControl+0x1e> controlState = NO_PRESS; 11ac: 10 92 ac 01 sts 0x01AC, r1 ; 0x8001ac <controlState> SetTaskTimer(ACTION2,1); 11b0: 61 e0 ldi r22, 0x01 ; 1 11b2: 70 e0 ldi r23, 0x00 ; 0 11b4: 81 e0 ldi r24, 0x01 ; 1 11b6: 50 df rcall .-352 ; 0x1058 <SetTaskTimer> 11b8: 08 95 ret 000011ba <DisplayOtherInfo>: } void DisplayOtherInfo() { flag[ACTION3] = 0; 11ba: 10 92 a6 01 sts 0x01A6, r1 ; 0x8001a6 <flag+0x2> * , * / */ /*display animation*/ switch (eeprom_read_byte(&eepNumLedAnimation)) 11be: 85 e0 ldi r24, 0x05 ; 5 11c0: 90 e0 ldi r25, 0x00 ; 0 11c2: 75 d4 rcall .+2282 ; 0x1aae <eeprom_read_byte> 11c4: 82 30 cpi r24, 0x02 ; 2 11c6: 79 f0 breq .+30 ; 0x11e6 <DisplayOtherInfo+0x2c> 11c8: 28 f4 brcc .+10 ; 0x11d4 <DisplayOtherInfo+0x1a> 11ca: 88 23 and r24, r24 11cc: 41 f0 breq .+16 ; 0x11de <DisplayOtherInfo+0x24> 11ce: 81 30 cpi r24, 0x01 ; 1 11d0: 41 f0 breq .+16 ; 0x11e2 <DisplayOtherInfo+0x28> 11d2: 10 c0 rjmp .+32 ; 0x11f4 <DisplayOtherInfo+0x3a> 11d4: 83 30 cpi r24, 0x03 ; 3 11d6: 49 f0 breq .+18 ; 0x11ea <DisplayOtherInfo+0x30> 11d8: 84 30 cpi r24, 0x04 ; 4 11da: 49 f0 breq .+18 ; 0x11ee <DisplayOtherInfo+0x34> 11dc: 0b c0 rjmp .+22 ; 0x11f4 <DisplayOtherInfo+0x3a> { case 0: LedOffAll(); 11de: 5a dd rcall .-1356 ; 0xc94 <LedOffAll> break; 11e0: 09 c0 rjmp .+18 ; 0x11f4 <DisplayOtherInfo+0x3a> case 1: LedTheaterChaseRainbow(); 11e2: 65 dd rcall .-1334 ; 0xcae <LedTheaterChaseRainbow> break; 11e4: 07 c0 rjmp .+14 ; 0x11f4 <DisplayOtherInfo+0x3a> case 2: LedRainbowCycle(); 11e6: e1 dd rcall .-1086 ; 0xdaa <LedRainbowCycle> break; 11e8: 05 c0 rjmp .+10 ; 0x11f4 <DisplayOtherInfo+0x3a> case 3: LedRainbow(); 11ea: 29 de rcall .-942 ; 0xe3e <LedRainbow> break; 11ec: 03 c0 rjmp .+6 ; 0x11f4 <DisplayOtherInfo+0x3a> case 4: LedAllColorAnim(10, UP); 11ee: 60 e0 ldi r22, 0x00 ; 0 11f0: 8a e0 ldi r24, 0x0A ; 10 11f2: 62 de rcall .-828 ; 0xeb8 <LedAllColorAnim> break; default: break; } SetTaskTimer(ACTION3,100); 11f4: 64 e6 ldi r22, 0x64 ; 100 11f6: 70 e0 ldi r23, 0x00 ; 0 11f8: 82 e0 ldi r24, 0x02 ; 2 11fa: 2e df rcall .-420 ; 0x1058 <SetTaskTimer> 11fc: 08 95 ret 000011fe <GotoMenu>: } void GotoMenu() { flag[ACTION4] = 0; 11fe: 10 92 a7 01 sts 0x01A7, r1 ; 0x8001a7 <flag+0x3> /*go to menu*/ if(controlState == PRESS_CENTER) 1202: 80 91 ac 01 lds r24, 0x01AC ; 0x8001ac <controlState> 1206: 82 30 cpi r24, 0x02 ; 2 1208: 19 f4 brne .+6 ; 0x1210 <GotoMenu+0x12> { /*MENU*/ StartMenu(); 120a: ac d0 rcall .+344 ; 0x1364 <StartMenu> controlState = NO_PRESS; 120c: 10 92 ac 01 sts 0x01AC, r1 ; 0x8001ac <controlState> } SetTaskTimer(ACTION4,100); 1210: 64 e6 ldi r22, 0x64 ; 100 1212: 70 e0 ldi r23, 0x00 ; 0 1214: 83 e0 ldi r24, 0x03 ; 3 1216: 20 df rcall .-448 ; 0x1058 <SetTaskTimer> 1218: 08 95 ret 0000121a <RestoreSettingsFromEeprom>: } void RestoreSettingsFromEeprom() { 121a: cf 93 push r28 121c: df 93 push r29 LedSetBrigtness(eeprom_read_byte(&eepBrightnessLedMax)); 121e: 89 e0 ldi r24, 0x09 ; 9 1220: 90 e0 ldi r25, 0x00 ; 0 1222: 45 d4 rcall .+2186 ; 0x1aae <eeprom_read_byte> 1224: 9c de rcall .-712 ; 0xf5e <LedSetBrigtness> DisplaySetBrightness100(eeprom_read_byte(&eepBrightnessDigitMax)); 1226: 87 e0 ldi r24, 0x07 ; 7 1228: 90 e0 ldi r25, 0x00 ; 0 122a: 41 d4 rcall .+2178 ; 0x1aae <eeprom_read_byte> 122c: d7 d9 rcall .-3154 ; 0x5dc <DisplaySetBrightness100> numLedAnimation = eeprom_read_byte(&eepNumLedAnimation); 122e: 85 e0 ldi r24, 0x05 ; 5 1230: 90 e0 ldi r25, 0x00 ; 0 1232: 3d d4 rcall .+2170 ; 0x1aae <eeprom_read_byte> 1234: 80 93 b9 00 sts 0x00B9, r24 ; 0x8000b9 <numLedAnimation> numDigitAnimation = eeprom_read_byte(&eepNumDigitAnimation); 1238: 84 e0 ldi r24, 0x04 ; 4 123a: 90 e0 ldi r25, 0x00 ; 0 123c: 38 d4 rcall .+2160 ; 0x1aae <eeprom_read_byte> 123e: 80 93 b8 00 sts 0x00B8, r24 ; 0x8000b8 <numDigitAnimation> LedSetColorRGBAllLed( 1242: 82 e0 ldi r24, 0x02 ; 2 1244: 90 e0 ldi r25, 0x00 ; 0 1246: 33 d4 rcall .+2150 ; 0x1aae <eeprom_read_byte> 1248: d8 2f mov r29, r24 124a: 81 e0 ldi r24, 0x01 ; 1 124c: 90 e0 ldi r25, 0x00 ; 0 124e: 2f d4 rcall .+2142 ; 0x1aae <eeprom_read_byte> 1250: c8 2f mov r28, r24 1252: 80 e0 ldi r24, 0x00 ; 0 1254: 90 e0 ldi r25, 0x00 ; 0 1256: 2b d4 rcall .+2134 ; 0x1aae <eeprom_read_byte> 1258: 4d 2f mov r20, r29 125a: 6c 2f mov r22, r28 125c: 06 dd rcall .-1524 ; 0xc6a <LedSetColorRGBAllLed> eeprom_read_byte(&eepColor[0]), eeprom_read_byte(&eepColor[1]), eeprom_read_byte(&eepColor[2])); DisplayRequestUpdateLed(); 125e: cc da rcall .-2664 ; 0x7f8 <DisplayRequestUpdateLed> if(eeprom_read_byte(&eepDisplayAnimation)) 1260: 83 e0 ldi r24, 0x03 ; 3 1262: 90 e0 ldi r25, 0x00 ; 0 1264: 24 d4 rcall .+2120 ; 0x1aae <eeprom_read_byte> 1266: 88 23 and r24, r24 1268: 19 f0 breq .+6 ; 0x1270 <RestoreSettingsFromEeprom+0x56> DisplaySetAnimation(LONG_BLINC); 126a: 81 e0 ldi r24, 0x01 ; 1 126c: 4a d9 rcall .-3436 ; 0x502 <DisplaySetAnimation> 126e: 02 c0 rjmp .+4 ; 0x1274 <RestoreSettingsFromEeprom+0x5a> else DisplaySetAnimation(SHORT_BLINC); 1270: 80 e0 ldi r24, 0x00 ; 0 1272: 47 d9 rcall .-3442 ; 0x502 <DisplaySetAnimation> 1274: df 91 pop r29 1276: cf 91 pop r28 1278: 08 95 ret 0000127a <Init>: void Init(void) { /*task time initialization*/ uint8_t i; for(i=0; i<MAX_NUM_OF_TIMERS; i++) SoftTimer[i].Number = 255; 127a: ea eb ldi r30, 0xBA ; 186 127c: f0 e0 ldi r31, 0x00 ; 0 127e: 8f ef ldi r24, 0xFF ; 255 1280: 80 83 st Z, r24 1282: 83 83 std Z+3, r24 ; 0x03 1284: 86 83 std Z+6, r24 ; 0x06 1286: 81 87 std Z+9, r24 ; 0x09 1288: 84 87 std Z+12, r24 ; 0x0c TCCR1A = 0x00; 128a: 1f bc out 0x2f, r1 ; 47 TCCR1B |= (1<<CS12)|(1<<CS10); //divider clk/1024 128c: 8e b5 in r24, 0x2e ; 46 128e: 85 60 ori r24, 0x05 ; 5 1290: 8e bd out 0x2e, r24 ; 46 TCNT1 = 65527; //period 1ms 1292: 87 ef ldi r24, 0xF7 ; 247 1294: 9f ef ldi r25, 0xFF ; 255 1296: 9d bd out 0x2d, r25 ; 45 1298: 8c bd out 0x2c, r24 ; 44 TIMSK |= (1<<TOIE1); //interrupt to timer overflow 129a: 89 b7 in r24, 0x39 ; 57 129c: 84 60 ori r24, 0x04 ; 4 129e: 89 bf out 0x39, r24 ; 57 SetTaskTimer(ACTION1,1); 12a0: 61 e0 ldi r22, 0x01 ; 1 12a2: 70 e0 ldi r23, 0x00 ; 0 12a4: 80 e0 ldi r24, 0x00 ; 0 12a6: d8 de rcall .-592 ; 0x1058 <SetTaskTimer> SetTaskTimer(ACTION2,1); 12a8: 61 e0 ldi r22, 0x01 ; 1 12aa: 70 e0 ldi r23, 0x00 ; 0 12ac: 81 e0 ldi r24, 0x01 ; 1 12ae: d4 de rcall .-600 ; 0x1058 <SetTaskTimer> SetTaskTimer(ACTION3,100); //every 100ms 12b0: 64 e6 ldi r22, 0x64 ; 100 12b2: 70 e0 ldi r23, 0x00 ; 0 12b4: 82 e0 ldi r24, 0x02 ; 2 12b6: d0 de rcall .-608 ; 0x1058 <SetTaskTimer> SetTaskTimer(ACTION4,100); 12b8: 64 e6 ldi r22, 0x64 ; 100 12ba: 70 e0 ldi r23, 0x00 ; 0 12bc: 83 e0 ldi r24, 0x03 ; 3 12be: cc de rcall .-616 ; 0x1058 <SetTaskTimer> /*display initialization*/ DisplayInit(); 12c0: a0 d9 rcall .-3264 ; 0x602 <DisplayInit> /*RTC initialization*/ i2c_init(); 12c2: d7 db rcall .-2130 ; 0xa72 <i2c_init> rtc_init(0, 1, 1); 12c4: 41 e0 ldi r20, 0x01 ; 1 12c6: 61 e0 ldi r22, 0x01 ; 1 12c8: 80 e0 ldi r24, 0x00 ; 0 12ca: d8 da rcall .-2640 ; 0x87c <rtc_init> rtc_init_sqw(); 12cc: 68 db rcall .-2352 ; 0x99e <rtc_init_sqw> ControlInit(); 12ce: 08 d7 rcall .+3600 ; 0x20e0 <__TEXT_REGION_LENGTH__+0xe0> LedInit(); 12d0: 69 dc rcall .-1838 ; 0xba4 <LedInit> BrightnessInit(); 12d2: fc d6 rcall .+3576 ; 0x20cc <__TEXT_REGION_LENGTH__+0xcc> /*restore all settings from eeprom*/ //eeprom_write_byte(&eepIsExist,0xFF); //check default if(eeprom_read_byte(&eepIsExist)==0xFF) 12d4: 8a e0 ldi r24, 0x0A ; 10 12d6: 90 e0 ldi r25, 0x00 ; 0 12d8: ea d3 rcall .+2004 ; 0x1aae <eeprom_read_byte> 12da: 8f 3f cpi r24, 0xFF ; 255 12dc: 61 f5 brne .+88 ; 0x1336 <Init+0xbc> { /*default settings*/ for(i=0;i<3;i++) eeprom_write_byte(&eepColor[i],0); 12de: 60 e0 ldi r22, 0x00 ; 0 12e0: 80 e0 ldi r24, 0x00 ; 0 12e2: 90 e0 ldi r25, 0x00 ; 0 12e4: ec d3 rcall .+2008 ; 0x1abe <eeprom_write_byte> 12e6: 60 e0 ldi r22, 0x00 ; 0 12e8: 81 e0 ldi r24, 0x01 ; 1 12ea: 90 e0 ldi r25, 0x00 ; 0 12ec: e8 d3 rcall .+2000 ; 0x1abe <eeprom_write_byte> 12ee: 60 e0 ldi r22, 0x00 ; 0 12f0: 82 e0 ldi r24, 0x02 ; 2 12f2: 90 e0 ldi r25, 0x00 ; 0 12f4: e4 d3 rcall .+1992 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepBrightnessLedMax,99); 12f6: 63 e6 ldi r22, 0x63 ; 99 12f8: 89 e0 ldi r24, 0x09 ; 9 12fa: 90 e0 ldi r25, 0x00 ; 0 12fc: e0 d3 rcall .+1984 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepBrightnessLedMin,5); 12fe: 65 e0 ldi r22, 0x05 ; 5 1300: 88 e0 ldi r24, 0x08 ; 8 1302: 90 e0 ldi r25, 0x00 ; 0 1304: dc d3 rcall .+1976 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepBrightnessDigitMax,99); 1306: 63 e6 ldi r22, 0x63 ; 99 1308: 87 e0 ldi r24, 0x07 ; 7 130a: 90 e0 ldi r25, 0x00 ; 0 130c: d8 d3 rcall .+1968 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepBrightnessDigitMin,10); 130e: 6a e0 ldi r22, 0x0A ; 10 1310: 86 e0 ldi r24, 0x06 ; 6 1312: 90 e0 ldi r25, 0x00 ; 0 1314: d4 d3 rcall .+1960 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepNumLedAnimation,4); 1316: 64 e0 ldi r22, 0x04 ; 4 1318: 85 e0 ldi r24, 0x05 ; 5 131a: 90 e0 ldi r25, 0x00 ; 0 131c: d0 d3 rcall .+1952 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepNumDigitAnimation,0); 131e: 60 e0 ldi r22, 0x00 ; 0 1320: 84 e0 ldi r24, 0x04 ; 4 1322: 90 e0 ldi r25, 0x00 ; 0 1324: cc d3 rcall .+1944 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepDisplayAnimation,1); //0-short, 1 - long animation 1326: 61 e0 ldi r22, 0x01 ; 1 1328: 83 e0 ldi r24, 0x03 ; 3 132a: 90 e0 ldi r25, 0x00 ; 0 132c: c8 d3 rcall .+1936 ; 0x1abe <eeprom_write_byte> eeprom_write_byte(&eepIsExist,0x00); 132e: 60 e0 ldi r22, 0x00 ; 0 1330: 8a e0 ldi r24, 0x0A ; 10 1332: 90 e0 ldi r25, 0x00 ; 0 1334: c4 d3 rcall .+1928 ; 0x1abe <eeprom_write_byte> } /*restore settings*/ RestoreSettingsFromEeprom(); 1336: 71 df rcall .-286 ; 0x121a <RestoreSettingsFromEeprom> sei(); 1338: 78 94 sei 133a: 08 95 ret 0000133c <main>: TCNT1 = 65527; } int main(void) { Init(); 133c: 9e df rcall .-196 ; 0x127a <Init> while (1) { if(flag[ACTION1])CheckUpdateTime(); //update time on display 133e: c4 ea ldi r28, 0xA4 ; 164 1340: d1 e0 ldi r29, 0x01 ; 1 1342: 88 81 ld r24, Y 1344: 81 11 cpse r24, r1 1346: d2 de rcall .-604 ; 0x10ec <CheckUpdateTime> if(flag[ACTION2])VerifyControl(); //check encoder/button 1348: 89 81 ldd r24, Y+1 ; 0x01 134a: 81 11 cpse r24, r1 134c: 22 df rcall .-444 ; 0x1192 <VerifyControl> if(flag[ACTION3])DisplayOtherInfo(); //display date/temperature/... 134e: 8a 81 ldd r24, Y+2 ; 0x02 1350: 81 11 cpse r24, r1 1352: 33 df rcall .-410 ; 0x11ba <DisplayOtherInfo> if(flag[ACTION4])GotoMenu(); 1354: 8b 81 ldd r24, Y+3 ; 0x03 1356: 81 11 cpse r24, r1 1358: 52 df rcall .-348 ; 0x11fe <GotoMenu> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 135a: 8a e1 ldi r24, 0x1A ; 26 135c: 8a 95 dec r24 135e: f1 f7 brne .-4 ; 0x135c <main+0x20> 1360: 00 c0 rjmp .+0 ; 0x1362 <main+0x26> 1362: ef cf rjmp .-34 ; 0x1342 <main+0x6> 00001364 <StartMenu>: uint8_t digitBrightness[6], digitBlink[6]; uint8_t highDigitBrigtness, lowDigitBrightness; uint8_t color[3]; uint8_t StartMenu(void) { 1364: 2f 92 push r2 1366: 3f 92 push r3 1368: 4f 92 push r4 136a: 5f 92 push r5 136c: 6f 92 push r6 136e: 7f 92 push r7 1370: 8f 92 push r8 1372: 9f 92 push r9 1374: af 92 push r10 1376: bf 92 push r11 1378: cf 92 push r12 137a: df 92 push r13 137c: ef 92 push r14 137e: ff 92 push r15 1380: 0f 93 push r16 1382: 1f 93 push r17 1384: cf 93 push r28 1386: df 93 push r29 1388: cd b7 in r28, 0x3d ; 61 138a: de b7 in r29, 0x3e ; 62 138c: 66 97 sbiw r28, 0x16 ; 22 138e: 0f b6 in r0, 0x3f ; 63 1390: f8 94 cli 1392: de bf out 0x3e, r29 ; 62 1394: 0f be out 0x3f, r0 ; 63 1396: cd bf out 0x3d, r28 ; 61 uint8_t mainMenu[] = {1,2,3,4,5,6}; 1398: 86 e0 ldi r24, 0x06 ; 6 139a: e8 e6 ldi r30, 0x68 ; 104 139c: f0 e0 ldi r31, 0x00 ; 0 139e: de 01 movw r26, r28 13a0: 11 96 adiw r26, 0x01 ; 1 13a2: 01 90 ld r0, Z+ 13a4: 0d 92 st X+, r0 13a6: 8a 95 dec r24 13a8: e1 f7 brne .-8 ; 0x13a2 <StartMenu+0x3e> uint8_t pressedDelay = 0; const uint8_t SPEED_CHANGE_IN_PRESSED = 200; /*save led color, led brightness, digit brightness, number led animation, digit animation, display animation*/ uint8_t i; LedReadColor(0, &color[0], &color[1], &color[2]); 13aa: 2b eb ldi r18, 0xBB ; 187 13ac: 31 e0 ldi r19, 0x01 ; 1 13ae: 4a eb ldi r20, 0xBA ; 186 13b0: 51 e0 ldi r21, 0x01 ; 1 13b2: 69 eb ldi r22, 0xB9 ; 185 13b4: 71 e0 ldi r23, 0x01 ; 1 13b6: 80 e0 ldi r24, 0x00 ; 0 13b8: db dd rcall .-1098 ; 0xf70 <LedReadColor> 13ba: 0f 2e mov r0, r31 13bc: f9 eb ldi r31, 0xB9 ; 185 13be: ef 2e mov r14, r31 13c0: f1 e0 ldi r31, 0x01 ; 1 13c2: ff 2e mov r15, r31 13c4: f0 2d mov r31, r0 13c6: 00 e0 ldi r16, 0x00 ; 0 13c8: 10 e0 ldi r17, 0x00 ; 0 13ca: 0f 2e mov r0, r31 13cc: fc eb ldi r31, 0xBC ; 188 13ce: cf 2e mov r12, r31 13d0: f1 e0 ldi r31, 0x01 ; 1 13d2: df 2e mov r13, r31 13d4: f0 2d mov r31, r0 for(i=0;i<3;i++) eeprom_write_byte(&eepColor[i],color[i]); 13d6: f7 01 movw r30, r14 13d8: 61 91 ld r22, Z+ 13da: 7f 01 movw r14, r30 13dc: c8 01 movw r24, r16 13de: 6f d3 rcall .+1758 ; 0x1abe <eeprom_write_byte> 13e0: 0f 5f subi r16, 0xFF ; 255 13e2: 1f 4f sbci r17, 0xFF ; 255 const uint8_t SPEED_CHANGE_IN_PRESSED = 200; /*save led color, led brightness, digit brightness, number led animation, digit animation, display animation*/ uint8_t i; LedReadColor(0, &color[0], &color[1], &color[2]); for(i=0;i<3;i++) 13e4: ec 14 cp r14, r12 13e6: fd 04 cpc r15, r13 13e8: b1 f7 brne .-20 ; 0x13d6 <StartMenu+0x72> 13ea: 51 2c mov r5, r1 highDigitBrigtness = eeprom_read_byte(&eepBrightnessDigitMax); //read current display brightness LedSetBrigtness(highDigitBrigtness); lowDigitBrightness = highDigitBrigtness/5; digitBrightness[0] = highDigitBrigtness; 13ec: 0f 2e mov r0, r31 13ee: fd ea ldi r31, 0xAD ; 173 13f0: ef 2e mov r14, r31 13f2: f1 e0 ldi r31, 0x01 ; 1 13f4: ff 2e mov r15, r31 13f6: f0 2d mov r31, r0 digitBlink[0] = 1; 13f8: 33 24 eor r3, r3 13fa: 33 94 inc r3 13fc: 0f 2e mov r0, r31 13fe: f3 eb ldi r31, 0xB3 ; 179 1400: cf 2e mov r12, r31 1402: f1 e0 ldi r31, 0x01 ; 1 1404: df 2e mov r13, r31 1406: f0 2d mov r31, r0 /*set led backlighting and digit brightness*/ LedOffAll(); for(i=0;i<NUM_DIGIT;i++) //set minimum brightness for all digit { digitBrightness[i] = lowDigitBrightness; 1408: ed 8a std Y+21, r14 ; 0x15 140a: fe 8a std Y+22, r15 ; 0x16 while(selectMenu != 5) //select_menu = 6 - menu exit { selectMenu = 0; highDigitBrigtness = eeprom_read_byte(&eepBrightnessDigitMax); //read current display brightness 140c: 87 e0 ldi r24, 0x07 ; 7 140e: 90 e0 ldi r25, 0x00 ; 0 1410: 4e d3 rcall .+1692 ; 0x1aae <eeprom_read_byte> 1412: 80 93 bc 01 sts 0x01BC, r24 ; 0x8001bc <highDigitBrigtness> LedSetBrigtness(highDigitBrigtness); 1416: a3 dd rcall .-1210 ; 0xf5e <LedSetBrigtness> lowDigitBrightness = highDigitBrigtness/5; 1418: 90 91 bc 01 lds r25, 0x01BC ; 0x8001bc <highDigitBrigtness> 141c: 8d ec ldi r24, 0xCD ; 205 141e: 98 9f mul r25, r24 1420: 81 2d mov r24, r1 1422: 11 24 eor r1, r1 1424: 86 95 lsr r24 1426: 86 95 lsr r24 1428: 80 93 bd 01 sts 0x01BD, r24 ; 0x8001bd <lowDigitBrightness> digitBrightness[0] = highDigitBrigtness; 142c: f7 01 movw r30, r14 142e: 90 83 st Z, r25 digitBlink[0] = 1; 1430: e3 eb ldi r30, 0xB3 ; 179 1432: f1 e0 ldi r31, 0x01 ; 1 1434: 30 82 st Z, r3 1436: ee ea ldi r30, 0xAE ; 174 1438: f1 e0 ldi r31, 0x01 ; 1 143a: a4 eb ldi r26, 0xB4 ; 180 143c: b1 e0 ldi r27, 0x01 ; 1 for(i=1;i<NUM_DIGIT;i++) //to lower other digit { digitBrightness[i] = lowDigitBrightness; 143e: 81 93 st Z+, r24 digitBlink[i] = 0; 1440: 1d 92 st X+, r1 LedSetBrigtness(highDigitBrigtness); lowDigitBrightness = highDigitBrigtness/5; digitBrightness[0] = highDigitBrigtness; digitBlink[0] = 1; for(i=1;i<NUM_DIGIT;i++) //to lower other digit 1442: ec 15 cp r30, r12 1444: fd 05 cpc r31, r13 1446: d9 f7 brne .-10 ; 0x143e <StartMenu+0xda> { digitBrightness[i] = lowDigitBrightness; digitBlink[i] = 0; } DisplaySetBrightnessEachNumber100(digitBrightness); 1448: c7 01 movw r24, r14 144a: 69 d9 rcall .-3374 ; 0x71e <DisplaySetBrightnessEachNumber100> DisplaySetAnimation(SHORT_BLINC); 144c: 80 e0 ldi r24, 0x00 ; 0 144e: 59 d8 rcall .-3918 ; 0x502 <DisplaySetAnimation> DisplaySetData6Num(mainMenu); 1450: ce 01 movw r24, r28 1452: 01 96 adiw r24, 0x01 ; 1 1454: 1d d8 rcall .-4038 ; 0x490 <DisplaySetData6Num> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 1456: ff ef ldi r31, 0xFF ; 255 1458: 20 e7 ldi r18, 0x70 ; 112 145a: 82 e0 ldi r24, 0x02 ; 2 145c: f1 50 subi r31, 0x01 ; 1 145e: 20 40 sbci r18, 0x00 ; 0 1460: 80 40 sbci r24, 0x00 ; 0 1462: e1 f7 brne .-8 ; 0x145c <StartMenu+0xf8> 1464: 00 c0 rjmp .+0 ; 0x1466 <StartMenu+0x102> 1466: 00 00 nop _delay_ms(100); DisplaySetBlinkDigit(digitBlink); 1468: 83 eb ldi r24, 0xB3 ; 179 146a: 91 e0 ldi r25, 0x01 ; 1 146c: b0 d9 rcall .-3232 ; 0x7ce <DisplaySetBlinkDigit> LedOffAll(); //enable led only "select menu" digit 146e: 12 dc rcall .-2012 ; 0xc94 <LedOffAll> LedSetColor(selectMenu, colorBacklightChoice); 1470: 65 e6 ldi r22, 0x65 ; 101 1472: 70 e0 ldi r23, 0x00 ; 0 1474: 80 e0 ldi r24, 0x00 ; 0 1476: f3 db rcall .-2074 ; 0xc5e <LedSetColor> for(i=4; i<6; i++) DisplayRequestUpdateLed(); 1478: bf d9 rcall .-3202 ; 0x7f8 <DisplayRequestUpdateLed> 147a: be d9 rcall .-3204 ; 0x7f8 <DisplayRequestUpdateLed> 147c: 10 e0 ldi r17, 0x00 ; 0 147e: 6b c0 rjmp .+214 ; 0x1556 <StartMenu+0x1f2> while((controlState=ControlCheck()) != PRESS_CENTER) { if(controlState == PRESS_LEFT || controlState == PRESSED_LEFT) 1480: 81 30 cpi r24, 0x01 ; 1 1482: 29 f0 breq .+10 ; 0x148e <StartMenu+0x12a> 1484: 84 30 cpi r24, 0x04 ; 4 1486: 71 f5 brne .+92 ; 0x14e4 <StartMenu+0x180> { if(controlState == PRESS_LEFT || pressedDelay >SPEED_CHANGE_IN_PRESSED) 1488: 98 ec ldi r25, 0xC8 ; 200 148a: 95 15 cp r25, r5 148c: 48 f5 brcc .+82 ; 0x14e0 <StartMenu+0x17c> { digitBrightness[selectMenu] = lowDigitBrightness; 148e: 81 2f mov r24, r17 1490: 90 e0 ldi r25, 0x00 ; 0 1492: fc 01 movw r30, r24 1494: e3 55 subi r30, 0x53 ; 83 1496: fe 4f sbci r31, 0xFE ; 254 1498: 20 91 bd 01 lds r18, 0x01BD ; 0x8001bd <lowDigitBrightness> 149c: 20 83 st Z, r18 digitBlink[selectMenu] = 0; 149e: fc 01 movw r30, r24 14a0: ed 54 subi r30, 0x4D ; 77 14a2: fe 4f sbci r31, 0xFE ; 254 14a4: 10 82 st Z, r1 if(++selectMenu == NUM_DIGIT) 14a6: 1f 5f subi r17, 0xFF ; 255 14a8: 16 30 cpi r17, 0x06 ; 6 14aa: 09 f4 brne .+2 ; 0x14ae <StartMenu+0x14a> selectMenu = 0; 14ac: 10 e0 ldi r17, 0x00 ; 0 digitBrightness[selectMenu] = highDigitBrigtness; 14ae: 81 2f mov r24, r17 14b0: 90 e0 ldi r25, 0x00 ; 0 14b2: fc 01 movw r30, r24 14b4: e3 55 subi r30, 0x53 ; 83 14b6: fe 4f sbci r31, 0xFE ; 254 14b8: 20 91 bc 01 lds r18, 0x01BC ; 0x8001bc <highDigitBrigtness> 14bc: 20 83 st Z, r18 digitBlink[selectMenu] = 1; 14be: fc 01 movw r30, r24 14c0: ed 54 subi r30, 0x4D ; 77 14c2: fe 4f sbci r31, 0xFE ; 254 14c4: 30 82 st Z, r3 DisplaySetBrightnessEachNumber100(digitBrightness); 14c6: c7 01 movw r24, r14 14c8: 2a d9 rcall .-3500 ; 0x71e <DisplaySetBrightnessEachNumber100> DisplaySetBlinkDigit(digitBlink); 14ca: 83 eb ldi r24, 0xB3 ; 179 14cc: 91 e0 ldi r25, 0x01 ; 1 14ce: 7f d9 rcall .-3330 ; 0x7ce <DisplaySetBlinkDigit> LedOffAll(); 14d0: e1 db rcall .-2110 ; 0xc94 <LedOffAll> LedSetColor(selectMenu, colorBacklightChoice); 14d2: 65 e6 ldi r22, 0x65 ; 101 14d4: 70 e0 ldi r23, 0x00 ; 0 14d6: 81 2f mov r24, r17 14d8: c2 db rcall .-2172 ; 0xc5e <LedSetColor> DisplayRequestUpdateLed(); 14da: 8e d9 rcall .-3300 ; 0x7f8 <DisplayRequestUpdateLed> pressedDelay = 0; 14dc: 51 2c mov r5, r1 14de: 02 c0 rjmp .+4 ; 0x14e4 <StartMenu+0x180> }else pressedDelay++; 14e0: 53 94 inc r5 14e2: 33 c0 rjmp .+102 ; 0x154a <StartMenu+0x1e6> } if (controlState == PRESS_RIGHT || controlState == PRESSED_RIGHT) 14e4: 80 91 c9 00 lds r24, 0x00C9 ; 0x8000c9 <controlState> 14e8: 83 30 cpi r24, 0x03 ; 3 14ea: 29 f0 breq .+10 ; 0x14f6 <StartMenu+0x192> 14ec: 86 30 cpi r24, 0x06 ; 6 14ee: 69 f5 brne .+90 ; 0x154a <StartMenu+0x1e6> { if(controlState == PRESS_RIGHT || pressedDelay >SPEED_CHANGE_IN_PRESSED) 14f0: e8 ec ldi r30, 0xC8 ; 200 14f2: e5 15 cp r30, r5 14f4: 48 f5 brcc .+82 ; 0x1548 <StartMenu+0x1e4> { digitBrightness[selectMenu]=lowDigitBrightness; 14f6: 81 2f mov r24, r17 14f8: 90 e0 ldi r25, 0x00 ; 0 14fa: fc 01 movw r30, r24 14fc: e3 55 subi r30, 0x53 ; 83 14fe: fe 4f sbci r31, 0xFE ; 254 1500: 20 91 bd 01 lds r18, 0x01BD ; 0x8001bd <lowDigitBrightness> 1504: 20 83 st Z, r18 digitBlink[selectMenu] = 0; 1506: fc 01 movw r30, r24 1508: ed 54 subi r30, 0x4D ; 77 150a: fe 4f sbci r31, 0xFE ; 254 150c: 10 82 st Z, r1 if (--selectMenu>NUM_DIGIT) 150e: 11 50 subi r17, 0x01 ; 1 1510: 17 30 cpi r17, 0x07 ; 7 1512: 08 f0 brcs .+2 ; 0x1516 <StartMenu+0x1b2> selectMenu = NUM_DIGIT-1; 1514: 15 e0 ldi r17, 0x05 ; 5 digitBrightness[selectMenu] = highDigitBrigtness; 1516: 81 2f mov r24, r17 1518: 90 e0 ldi r25, 0x00 ; 0 151a: fc 01 movw r30, r24 151c: e3 55 subi r30, 0x53 ; 83 151e: fe 4f sbci r31, 0xFE ; 254 1520: 20 91 bc 01 lds r18, 0x01BC ; 0x8001bc <highDigitBrigtness> 1524: 20 83 st Z, r18 digitBlink[selectMenu] = 1; 1526: fc 01 movw r30, r24 1528: ed 54 subi r30, 0x4D ; 77 152a: fe 4f sbci r31, 0xFE ; 254 152c: 30 82 st Z, r3 DisplaySetBrightnessEachNumber100(digitBrightness); 152e: c7 01 movw r24, r14 1530: f6 d8 rcall .-3604 ; 0x71e <DisplaySetBrightnessEachNumber100> DisplaySetBlinkDigit(digitBlink); 1532: 83 eb ldi r24, 0xB3 ; 179 1534: 91 e0 ldi r25, 0x01 ; 1 1536: 4b d9 rcall .-3434 ; 0x7ce <DisplaySetBlinkDigit> LedOffAll(); 1538: ad db rcall .-2214 ; 0xc94 <LedOffAll> LedSetColor(selectMenu, colorBacklightChoice); 153a: 65 e6 ldi r22, 0x65 ; 101 153c: 70 e0 ldi r23, 0x00 ; 0 153e: 81 2f mov r24, r17 1540: 8e db rcall .-2276 ; 0xc5e <LedSetColor> DisplayRequestUpdateLed(); 1542: 5a d9 rcall .-3404 ; 0x7f8 <DisplayRequestUpdateLed> pressedDelay = 0; 1544: 51 2c mov r5, r1 1546: 01 c0 rjmp .+2 ; 0x154a <StartMenu+0x1e6> }else pressedDelay ++; 1548: 53 94 inc r5 154a: 8f ec ldi r24, 0xCF ; 207 154c: 97 e0 ldi r25, 0x07 ; 7 154e: 01 97 sbiw r24, 0x01 ; 1 1550: f1 f7 brne .-4 ; 0x154e <StartMenu+0x1ea> 1552: 00 c0 rjmp .+0 ; 0x1554 <StartMenu+0x1f0> 1554: 00 00 nop LedOffAll(); //enable led only "select menu" digit LedSetColor(selectMenu, colorBacklightChoice); for(i=4; i<6; i++) DisplayRequestUpdateLed(); while((controlState=ControlCheck()) != PRESS_CENTER) 1556: cb d5 rcall .+2966 ; 0x20ee <__TEXT_REGION_LENGTH__+0xee> 1558: 80 93 c9 00 sts 0x00C9, r24 ; 0x8000c9 <controlState> 155c: 82 30 cpi r24, 0x02 ; 2 155e: 09 f0 breq .+2 ; 0x1562 <StartMenu+0x1fe> 1560: 8f cf rjmp .-226 ; 0x1480 <StartMenu+0x11c> } _delay_ms(1); } digitBlink[selectMenu] = 0; // off digit blink 1562: e1 2f mov r30, r17 1564: f0 e0 ldi r31, 0x00 ; 0 1566: ed 54 subi r30, 0x4D ; 77 1568: fe 4f sbci r31, 0xFE ; 254 156a: 10 82 st Z, r1 DisplaySetBlinkDigit(digitBlink); // 156c: 83 eb ldi r24, 0xB3 ; 179 156e: 91 e0 ldi r25, 0x01 ; 1 1570: 2e d9 rcall .-3492 ; 0x7ce <DisplaySetBlinkDigit> /*choice menu*/ switch(selectMenu) 1572: 11 30 cpi r17, 0x01 ; 1 1574: 09 f4 brne .+2 ; 0x1578 <StartMenu+0x214> 1576: 89 c1 rjmp .+786 ; 0x188a <StartMenu+0x526> 1578: 20 f0 brcs .+8 ; 0x1582 <StartMenu+0x21e> 157a: 15 30 cpi r17, 0x05 ; 5 157c: 09 f4 brne .+2 ; 0x1580 <StartMenu+0x21c> 157e: 15 c2 rjmp .+1066 ; 0x19aa <StartMenu+0x646> 1580: 16 c2 rjmp .+1068 ; 0x19ae <StartMenu+0x64a> uint8_t null; uint8_t pressedDelay = 0; uint8_t SPEED_CHANGE_IN_PRESSED = 150; enum {HOUR, MIN, DATE, MONTH, YEAR, EXIT}; const uint8_t maxDataValue[5] = {23,59,31,12,99}; //HOUR, MIN, DATE, MONTH, YEAR 1582: 85 e0 ldi r24, 0x05 ; 5 1584: ee e6 ldi r30, 0x6E ; 110 1586: f0 e0 ldi r31, 0x00 ; 0 1588: de 01 movw r26, r28 158a: 1d 96 adiw r26, 0x0d ; 13 158c: 01 90 ld r0, Z+ 158e: 0d 92 st X+, r0 1590: 8a 95 dec r24 1592: e1 f7 brne .-8 ; 0x158c <StartMenu+0x228> const uint8_t minDataValue[5] = {0,0,1,1,0}; //HOUR, MIN, DATE, MONTH, YEAR 1594: 85 e0 ldi r24, 0x05 ; 5 1596: e3 e7 ldi r30, 0x73 ; 115 1598: f0 e0 ldi r31, 0x00 ; 0 159a: de 01 movw r26, r28 159c: 17 96 adiw r26, 0x07 ; 7 159e: 01 90 ld r0, Z+ 15a0: 0d 92 st X+, r0 15a2: 8a 95 dec r24 15a4: e1 f7 brne .-8 ; 0x159e <StartMenu+0x23a> uint8_t currentSettings = HOUR; DisplayClear(); 15a6: 1e d9 rcall .-3524 ; 0x7e4 <DisplayClear> if(brigthessMode == DAY_MODE) highDigitBrigtness = eeprom_read_byte(&eepBrightnessDigitMax); //read current display brightness 15a8: 87 e0 ldi r24, 0x07 ; 7 15aa: 90 e0 ldi r25, 0x00 ; 0 15ac: 80 d2 rcall .+1280 ; 0x1aae <eeprom_read_byte> 15ae: 80 93 bc 01 sts 0x01BC, r24 ; 0x8001bc <highDigitBrigtness> else highDigitBrigtness = eeprom_read_byte(&eepBrightnessDigitMin); lowDigitBrightness = highDigitBrigtness/8; 15b2: 98 2f mov r25, r24 15b4: 96 95 lsr r25 15b6: 96 95 lsr r25 15b8: 96 95 lsr r25 15ba: 90 93 bd 01 sts 0x01BD, r25 ; 0x8001bd <lowDigitBrightness> digitBrightness[0] = highDigitBrigtness; 15be: f7 01 movw r30, r14 15c0: 80 83 st Z, r24 digitBrightness[1] = highDigitBrigtness; 15c2: 81 83 std Z+1, r24 ; 0x01 digitBlink[0] = 0; 15c4: e3 eb ldi r30, 0xB3 ; 179 15c6: f1 e0 ldi r31, 0x01 ; 1 15c8: 10 82 st Z, r1 digitBlink[1] = 0; 15ca: 10 92 b4 01 sts 0x01B4, r1 ; 0x8001b4 <digitBlink+0x1> for(i=2;i<NUM_DIGIT;i++) { digitBrightness[i] = lowDigitBrightness; 15ce: f7 01 movw r30, r14 15d0: 92 83 std Z+2, r25 ; 0x02 digitBlink[i] = 0; 15d2: 10 92 b5 01 sts 0x01B5, r1 ; 0x8001b5 <digitBlink+0x2> digitBrightness[1] = highDigitBrigtness; digitBlink[0] = 0; digitBlink[1] = 0; for(i=2;i<NUM_DIGIT;i++) { digitBrightness[i] = lowDigitBrightness; 15d6: 93 83 std Z+3, r25 ; 0x03 digitBlink[i] = 0; 15d8: 10 92 b6 01 sts 0x01B6, r1 ; 0x8001b6 <digitBlink+0x3> digitBrightness[1] = highDigitBrigtness; digitBlink[0] = 0; digitBlink[1] = 0; for(i=2;i<NUM_DIGIT;i++) { digitBrightness[i] = lowDigitBrightness; 15dc: 94 83 std Z+4, r25 ; 0x04 digitBlink[i] = 0; 15de: 10 92 b7 01 sts 0x01B7, r1 ; 0x8001b7 <digitBlink+0x4> digitBrightness[1] = highDigitBrigtness; digitBlink[0] = 0; digitBlink[1] = 0; for(i=2;i<NUM_DIGIT;i++) { digitBrightness[i] = lowDigitBrightness; 15e2: 95 83 std Z+5, r25 ; 0x05 digitBlink[i] = 0; 15e4: 10 92 b8 01 sts 0x01B8, r1 ; 0x8001b8 <digitBlink+0x5> } DisplaySetAnimation(SHORT_BLINC); 15e8: 80 e0 ldi r24, 0x00 ; 0 15ea: 8b d7 rcall .+3862 ; 0x2502 <__TEXT_REGION_LENGTH__+0x502> rtc_get_time(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); 15ec: 4b ea ldi r20, 0xAB ; 171 15ee: 51 e0 ldi r21, 0x01 ; 1 15f0: 6a ea ldi r22, 0xAA ; 170 15f2: 71 e0 ldi r23, 0x01 ; 1 15f4: 89 ea ldi r24, 0xA9 ; 169 15f6: 91 e0 ldi r25, 0x01 ; 1 15f8: 52 d9 rcall .-3420 ; 0x89e <rtc_get_time> DisplaySetData3Num(dataToDisplay); 15fa: 89 ea ldi r24, 0xA9 ; 169 15fc: 91 e0 ldi r25, 0x01 ; 1 15fe: 59 d7 rcall .+3762 ; 0x24b2 <__TEXT_REGION_LENGTH__+0x4b2> DisplaySetBrightnessEachNumber100(digitBrightness); 1600: c7 01 movw r24, r14 1602: 8d d8 rcall .-3814 ; 0x71e <DisplaySetBrightnessEachNumber100> 1604: ff ef ldi r31, 0xFF ; 255 1606: 20 e7 ldi r18, 0x70 ; 112 1608: 82 e0 ldi r24, 0x02 ; 2 160a: f1 50 subi r31, 0x01 ; 1 160c: 20 40 sbci r18, 0x00 ; 0 160e: 80 40 sbci r24, 0x00 ; 0 1610: e1 f7 brne .-8 ; 0x160a <StartMenu+0x2a6> 1612: 00 c0 rjmp .+0 ; 0x1614 <StartMenu+0x2b0> 1614: 00 00 nop _delay_ms(100); DisplaySetBlinkDigit(digitBlink); 1616: 83 eb ldi r24, 0xB3 ; 179 1618: 91 e0 ldi r25, 0x01 ; 1 161a: d9 d8 rcall .-3662 ; 0x7ce <DisplaySetBlinkDigit> LedOffAll(); 161c: 3b db rcall .-2442 ; 0xc94 <LedOffAll> for(i=0; i<2; i++) LedSetColor(i, colorBacklightChoice); 161e: 65 e6 ldi r22, 0x65 ; 101 1620: 70 e0 ldi r23, 0x00 ; 0 1622: 80 e0 ldi r24, 0x00 ; 0 1624: 1c db rcall .-2504 ; 0xc5e <LedSetColor> 1626: 65 e6 ldi r22, 0x65 ; 101 1628: 70 e0 ldi r23, 0x00 ; 0 162a: 83 2d mov r24, r3 162c: 18 db rcall .-2512 ; 0xc5e <LedSetColor> DisplayRequestUpdateLed(); 162e: e4 d8 rcall .-3640 ; 0x7f8 <DisplayRequestUpdateLed> static void MenuTime() { uint8_t i; uint8_t null; uint8_t pressedDelay = 0; 1630: 10 e0 ldi r17, 0x00 ; 0 uint8_t SPEED_CHANGE_IN_PRESSED = 150; enum {HOUR, MIN, DATE, MONTH, YEAR, EXIT}; const uint8_t maxDataValue[5] = {23,59,31,12,99}; //HOUR, MIN, DATE, MONTH, YEAR const uint8_t minDataValue[5] = {0,0,1,1,0}; //HOUR, MIN, DATE, MONTH, YEAR uint8_t currentSettings = HOUR; 1632: 00 e0 ldi r16, 0x00 ; 0 if(currentSettings == DATE) rtc_get_date(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); if(currentSettings == YEAR) //year in format __ 20 18 { dataToDisplay[0] = OFF_NUMB; dataToDisplay[1] = 20; 1634: 0f 2e mov r0, r31 1636: f4 e1 ldi r31, 0x14 ; 20 1638: 2f 2e mov r2, r31 163a: f0 2d mov r31, r0 LedSetColor(i, colorBacklightChoice); DisplayRequestUpdateLed(); while(currentSettings != EXIT) { controlState = ControlCheck(); 163c: 58 d5 rcall .+2736 ; 0x20ee <__TEXT_REGION_LENGTH__+0xee> 163e: 80 93 c9 00 sts 0x00C9, r24 ; 0x8000c9 <controlState> /*update time*/ if(rtc_check_sqw() && (currentSettings==HOUR || currentSettings==MIN)) 1642: b2 d9 rcall .-3228 ; 0x9a8 <rtc_check_sqw> 1644: 88 23 and r24, r24 1646: 61 f0 breq .+24 ; 0x1660 <StartMenu+0x2fc> 1648: 02 30 cpi r16, 0x02 ; 2 164a: 50 f4 brcc .+20 ; 0x1660 <StartMenu+0x2fc> { rtc_get_time(&null, &null, &dataToDisplay[2]); 164c: 4b ea ldi r20, 0xAB ; 171 164e: 51 e0 ldi r21, 0x01 ; 1 1650: be 01 movw r22, r28 1652: 6e 5e subi r22, 0xEE ; 238 1654: 7f 4f sbci r23, 0xFF ; 255 1656: cb 01 movw r24, r22 1658: 22 d9 rcall .-3516 ; 0x89e <rtc_get_time> DisplaySetData3Num(dataToDisplay); 165a: 89 ea ldi r24, 0xA9 ; 169 165c: 91 e0 ldi r25, 0x01 ; 1 165e: 29 d7 rcall .+3666 ; 0x24b2 <__TEXT_REGION_LENGTH__+0x4b2> } if(controlState == PRESS_LEFT || controlState == PRESSED_LEFT) 1660: 80 91 c9 00 lds r24, 0x00C9 ; 0x8000c9 <controlState> 1664: 81 30 cpi r24, 0x01 ; 1 1666: 21 f0 breq .+8 ; 0x1670 <StartMenu+0x30c> 1668: 84 30 cpi r24, 0x04 ; 4 166a: b9 f5 brne .+110 ; 0x16da <StartMenu+0x376> { if(controlState == PRESS_LEFT || pressedDelay >SPEED_CHANGE_IN_PRESSED) 166c: 17 39 cpi r17, 0x97 ; 151 166e: 98 f1 brcs .+102 ; 0x16d6 <StartMenu+0x372> { if(currentSettings!=YEAR){ 1670: 04 30 cpi r16, 0x04 ; 4 1672: 09 f1 breq .+66 ; 0x16b6 <StartMenu+0x352> if((++dataToDisplay[currentSettings%2]) > maxDataValue[currentSettings]) 1674: 00 fb bst r16, 0 1676: aa 24 eor r10, r10 1678: a0 f8 bld r10, 0 167a: b1 2c mov r11, r1 167c: f5 01 movw r30, r10 167e: e7 55 subi r30, 0x57 ; 87 1680: fe 4f sbci r31, 0xFE ; 254 1682: 80 81 ld r24, Z 1684: 8f 5f subi r24, 0xFF ; 255 1686: 80 83 st Z, r24 1688: 20 2f mov r18, r16 168a: 30 e0 ldi r19, 0x00 ; 0 168c: ed e0 ldi r30, 0x0D ; 13 168e: f0 e0 ldi r31, 0x00 ; 0 1690: ec 0f add r30, r28 1692: fd 1f adc r31, r29 1694: e2 0f add r30, r18 1696: f3 1f adc r31, r19 1698: 90 81 ld r25, Z 169a: 98 17 cp r25, r24 169c: b8 f4 brcc .+46 ; 0x16cc <StartMenu+0x368> dataToDisplay[currentSettings%2] = minDataValue[currentSettings]; 169e: e7 e0 ldi r30, 0x07 ; 7 16a0: f0 e0 ldi r31, 0x00 ; 0 16a2: ec 0f add r30, r28 16a4: fd 1f adc r31, r29 16a6: e2 0f add r30, r18 16a8: f3 1f adc r31, r19 16aa: 80 81 ld r24, Z 16ac: f5 01 movw r30, r10 16ae: e7 55 subi r30, 0x57 ; 87 16b0: fe 4f sbci r31, 0xFE ; 254 16b2: 80 83 st Z, r24 16b4: 0b c0 rjmp .+22 ; 0x16cc <StartMenu+0x368> } else{ if((++dataToDisplay[2])>maxDataValue[currentSettings]) 16b6: e9 ea ldi r30, 0xA9 ; 169 16b8: f1 e0 ldi r31, 0x01 ; 1 16ba: 82 81 ldd r24, Z+2 ; 0x02 16bc: 8f 5f subi r24, 0xFF ; 255 16be: 82 83 std Z+2, r24 ; 0x02 16c0: 99 89 ldd r25, Y+17 ; 0x11 16c2: 98 17 cp r25, r24 16c4: 18 f4 brcc .+6 ; 0x16cc <StartMenu+0x368> dataToDisplay[2] = minDataValue[currentSettings]; 16c6: 8b 85 ldd r24, Y+11 ; 0x0b 16c8: 80 93 ab 01 sts 0x01AB, r24 ; 0x8001ab <dataToDisplay+0x2> } DisplaySetData3Num(dataToDisplay); 16cc: 89 ea ldi r24, 0xA9 ; 169 16ce: 91 e0 ldi r25, 0x01 ; 1 16d0: f0 d6 rcall .+3552 ; 0x24b2 <__TEXT_REGION_LENGTH__+0x4b2> pressedDelay = 0; 16d2: 10 e0 ldi r17, 0x00 ; 0 16d4: d0 c0 rjmp .+416 ; 0x1876 <StartMenu+0x512> }else pressedDelay++; 16d6: 1f 5f subi r17, 0xFF ; 255 16d8: ce c0 rjmp .+412 ; 0x1876 <StartMenu+0x512> }else if(controlState == PRESS_RIGHT || controlState == PRESSED_RIGHT) 16da: 83 30 cpi r24, 0x03 ; 3 16dc: 31 f0 breq .+12 ; 0x16ea <StartMenu+0x386> 16de: 86 30 cpi r24, 0x06 ; 6 16e0: 09 f0 breq .+2 ; 0x16e4 <StartMenu+0x380> 16e2: 45 c0 rjmp .+138 ; 0x176e <StartMenu+0x40a> { if(controlState == PRESS_RIGHT || pressedDelay >SPEED_CHANGE_IN_PRESSED) 16e4: 17 39 cpi r17, 0x97 ; 151 16e6: 08 f4 brcc .+2 ; 0x16ea <StartMenu+0x386> 16e8: 40 c0 rjmp .+128 ; 0x176a <StartMenu+0x406> { if(currentSettings!=YEAR){ 16ea: 04 30 cpi r16, 0x04 ; 4 16ec: 79 f1 breq .+94 ; 0x174c <StartMenu+0x3e8> if((--dataToDisplay[currentSettings%2]) > maxDataValue[currentSettings]) 16ee: 00 fb bst r16, 0 16f0: 66 24 eor r6, r6 16f2: 60 f8 bld r6, 0 16f4: 71 2c mov r7, r1 16f6: f3 01 movw r30, r6 16f8: e7 55 subi r30, 0x57 ; 87 16fa: fe 4f sbci r31, 0xFE ; 254 16fc: 80 81 ld r24, Z 16fe: 81 50 subi r24, 0x01 ; 1 1700: 80 83 st Z, r24 1702: 20 2f mov r18, r16 1704: 30 e0 ldi r19, 0x00 ; 0 1706: ed e0 ldi r30, 0x0D ; 13 1708: f0 e0 ldi r31, 0x00 ; 0 170a: ec 0f add r30, r28 170c: fd 1f adc r31, r29 170e: e2 0f add r30, r18 1710: f3 1f adc r31, r19 1712: 90 81 ld r25, Z 1714: 98 17 cp r25, r24 1716: 20 f4 brcc .+8 ; 0x1720 <StartMenu+0x3bc> dataToDisplay[currentSettings%2] = maxDataValue[currentSettings]; 1718: f3 01 movw r30, r6 171a: e7 55 subi r30, 0x57 ; 87 171c: fe 4f sbci r31, 0xFE ; 254 171e: 90 83 st Z, r25 if(currentSettings==DATE || currentSettings==MONTH) 1720: 8e ef ldi r24, 0xFE ; 254 1722: 80 0f add r24, r16 1724: 82 30 cpi r24, 0x02 ; 2 1726: e0 f4 brcc .+56 ; 0x1760 <StartMenu+0x3fc> if(dataToDisplay[currentSettings%2]<minDataValue[currentSettings]) 1728: a7 e0 ldi r26, 0x07 ; 7 172a: b0 e0 ldi r27, 0x00 ; 0 172c: ac 0f add r26, r28 172e: bd 1f adc r27, r29 1730: a2 0f add r26, r18 1732: b3 1f adc r27, r19 1734: f3 01 movw r30, r6 1736: e7 55 subi r30, 0x57 ; 87 1738: fe 4f sbci r31, 0xFE ; 254 173a: 40 81 ld r20, Z 173c: 8c 91 ld r24, X 173e: 48 17 cp r20, r24 1740: 78 f4 brcc .+30 ; 0x1760 <StartMenu+0x3fc> dataToDisplay[currentSettings%2] = maxDataValue[currentSettings]; 1742: f3 01 movw r30, r6 1744: e7 55 subi r30, 0x57 ; 87 1746: fe 4f sbci r31, 0xFE ; 254 1748: 90 83 st Z, r25 174a: 0a c0 rjmp .+20 ; 0x1760 <StartMenu+0x3fc> } else{ if((--dataToDisplay[2]) > maxDataValue[currentSettings]) 174c: e9 ea ldi r30, 0xA9 ; 169 174e: f1 e0 ldi r31, 0x01 ; 1 1750: 82 81 ldd r24, Z+2 ; 0x02 1752: 81 50 subi r24, 0x01 ; 1 1754: 82 83 std Z+2, r24 ; 0x02 1756: 99 89 ldd r25, Y+17 ; 0x11 1758: 98 17 cp r25, r24 175a: 10 f4 brcc .+4 ; 0x1760 <StartMenu+0x3fc> dataToDisplay[2] = maxDataValue[currentSettings]; 175c: 90 93 ab 01 sts 0x01AB, r25 ; 0x8001ab <dataToDisplay+0x2> } DisplaySetData3Num(dataToDisplay); 1760: 89 ea ldi r24, 0xA9 ; 169 1762: 91 e0 ldi r25, 0x01 ; 1 1764: a6 d6 rcall .+3404 ; 0x24b2 <__TEXT_REGION_LENGTH__+0x4b2> pressedDelay = 0; 1766: 10 e0 ldi r17, 0x00 ; 0 1768: 86 c0 rjmp .+268 ; 0x1876 <StartMenu+0x512> }else pressedDelay ++; 176a: 1f 5f subi r17, 0xFF ; 255 176c: 84 c0 rjmp .+264 ; 0x1876 <StartMenu+0x512> }else if(controlState == PRESS_CENTER) 176e: 82 30 cpi r24, 0x02 ; 2 1770: 09 f0 breq .+2 ; 0x1774 <StartMenu+0x410> 1772: 81 c0 rjmp .+258 ; 0x1876 <StartMenu+0x512> { currentSettings++; 1774: 0f 5f subi r16, 0xFF ; 255 /*save time*/ if (currentSettings==DATE) 1776: 02 30 cpi r16, 0x02 ; 2 1778: 39 f4 brne .+14 ; 0x1788 <StartMenu+0x424> rtc_set_time(dataToDisplay[0], dataToDisplay[1], dataToDisplay[2]); 177a: e9 ea ldi r30, 0xA9 ; 169 177c: f1 e0 ldi r31, 0x01 ; 1 177e: 42 81 ldd r20, Z+2 ; 0x02 1780: 61 81 ldd r22, Z+1 ; 0x01 1782: 80 81 ld r24, Z 1784: b3 d8 rcall .-3738 ; 0x8ec <rtc_set_time> 1786: 1f c0 rjmp .+62 ; 0x17c6 <StartMenu+0x462> /*save date*/ if(currentSettings == YEAR) 1788: 04 30 cpi r16, 0x04 ; 4 178a: 39 f4 brne .+14 ; 0x179a <StartMenu+0x436> rtc_set_date(dataToDisplay[0], dataToDisplay[1], dataToDisplay[2]); 178c: e9 ea ldi r30, 0xA9 ; 169 178e: f1 e0 ldi r31, 0x01 ; 1 1790: 42 81 ldd r20, Z+2 ; 0x02 1792: 61 81 ldd r22, Z+1 ; 0x01 1794: 80 81 ld r24, Z 1796: ea d8 rcall .-3628 ; 0x96c <rtc_set_date> 1798: 22 c0 rjmp .+68 ; 0x17de <StartMenu+0x47a> if(currentSettings == EXIT) 179a: 05 30 cpi r16, 0x05 ; 5 179c: a1 f4 brne .+40 ; 0x17c6 <StartMenu+0x462> { uint8_t tmpYear = dataToDisplay[2]; 179e: 0f 2e mov r0, r31 17a0: f9 ea ldi r31, 0xA9 ; 169 17a2: 8f 2e mov r8, r31 17a4: f1 e0 ldi r31, 0x01 ; 1 17a6: 9f 2e mov r9, r31 17a8: f0 2d mov r31, r0 17aa: f4 01 movw r30, r8 17ac: 42 80 ldd r4, Z+2 ; 0x02 rtc_get_date(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); 17ae: 4b ea ldi r20, 0xAB ; 171 17b0: 51 e0 ldi r21, 0x01 ; 1 17b2: 6a ea ldi r22, 0xAA ; 170 17b4: 71 e0 ldi r23, 0x01 ; 1 17b6: c4 01 movw r24, r8 17b8: b2 d8 rcall .-3740 ; 0x91e <rtc_get_date> rtc_set_date(dataToDisplay[0], dataToDisplay[1], tmpYear); 17ba: 44 2d mov r20, r4 17bc: f4 01 movw r30, r8 17be: 61 81 ldd r22, Z+1 ; 0x01 17c0: 80 81 ld r24, Z 17c2: d4 d8 rcall .-3672 ; 0x96c <rtc_set_date> 17c4: 13 c0 rjmp .+38 ; 0x17ec <StartMenu+0x488> } /*off time and display data*/ if(currentSettings >=DATE) 17c6: 02 30 cpi r16, 0x02 ; 2 17c8: a0 f0 brcs .+40 ; 0x17f2 <StartMenu+0x48e> { if(currentSettings == DATE) 17ca: 02 30 cpi r16, 0x02 ; 2 17cc: 41 f4 brne .+16 ; 0x17de <StartMenu+0x47a> rtc_get_date(&dataToDisplay[0], &dataToDisplay[1], &dataToDisplay[2]); 17ce: 4b ea ldi r20, 0xAB ; 171 17d0: 51 e0 ldi r21, 0x01 ; 1 17d2: 6a ea ldi r22, 0xAA ; 170 17d4: 71 e0 ldi r23, 0x01 ; 1 17d6: 89 ea ldi r24, 0xA9 ; 169 17d8: 91 e0 ldi r25, 0x01 ; 1 17da: a1 d8 rcall .-3774 ; 0x91e <rtc_get_date> 17dc: 07 c0 rjmp .+14 ; 0x17ec <StartMenu+0x488> if(currentSettings == YEAR) //year in format __ 20 18 17de: 04 30 cpi r16, 0x04 ; 4 17e0: 29 f4 brne .+10 ; 0x17ec <StartMenu+0x488> { dataToDisplay[0] = OFF_NUMB; 17e2: e9 ea ldi r30, 0xA9 ; 169 17e4: f1 e0 ldi r31, 0x01 ; 1 17e6: 24 e6 ldi r18, 0x64 ; 100 17e8: 20 83 st Z, r18 dataToDisplay[1] = 20; 17ea: 21 82 std Z+1, r2 ; 0x01 } DisplaySetData3Num(dataToDisplay); 17ec: 89 ea ldi r24, 0xA9 ; 169 17ee: 91 e0 ldi r25, 0x01 ; 1 17f0: 60 d6 rcall .+3264 ; 0x24b2 <__TEXT_REGION_LENGTH__+0x4b2> } /*set led backlighting and digit brightness*/ LedOffAll(); 17f2: 50 da rcall .-2912 ; 0xc94 <LedOffAll> for(i=0;i<NUM_DIGIT;i++) //set minimum brightness for all digit { digitBrightness[i] = lowDigitBrightness; 17f4: 80 91 bd 01 lds r24, 0x01BD ; 0x8001bd <lowDigitBrightness> 17f8: f7 01 movw r30, r14 17fa: 80 83 st Z, r24 17fc: 81 83 std Z+1, r24 ; 0x01 17fe: 82 83 std Z+2, r24 ; 0x02 1800: 83 83 std Z+3, r24 ; 0x03 1802: 84 83 std Z+4, r24 ; 0x04 1804: 85 83 std Z+5, r24 ; 0x05 //digitBlink[i] = 0; } if(currentSettings != YEAR) 1806: 04 30 cpi r16, 0x04 ; 4 1808: c9 f0 breq .+50 ; 0x183c <StartMenu+0x4d8> { LedSetColor((currentSettings%2)*2, colorBacklightChoice); 180a: f0 2f mov r31, r16 180c: f1 70 andi r31, 0x01 ; 1 180e: 9f 2e mov r9, r31 1810: 8f 2e mov r8, r31 1812: 88 0c add r8, r8 1814: 65 e6 ldi r22, 0x65 ; 101 1816: 70 e0 ldi r23, 0x00 ; 0 1818: 88 2d mov r24, r8 181a: 21 da rcall .-3006 ; 0xc5e <LedSetColor> LedSetColor((currentSettings%2)*2+1, colorBacklightChoice); 181c: 65 e6 ldi r22, 0x65 ; 101 181e: 70 e0 ldi r23, 0x00 ; 0 1820: 81 e0 ldi r24, 0x01 ; 1 1822: 88 0d add r24, r8 1824: 1c da rcall .-3016 ; 0xc5e <LedSetColor> digitBrightness[(currentSettings%2)*2] = highDigitBrigtness; 1826: e9 2d mov r30, r9 1828: f0 e0 ldi r31, 0x00 ; 0 182a: ee 0f add r30, r30 182c: ff 1f adc r31, r31 182e: 80 91 bc 01 lds r24, 0x01BC ; 0x8001bc <highDigitBrigtness> 1832: e3 55 subi r30, 0x53 ; 83 1834: fe 4f sbci r31, 0xFE ; 254 1836: 80 83 st Z, r24 digitBrightness[(currentSettings%2)*2+1] = highDigitBrigtness; 1838: 81 83 std Z+1, r24 ; 0x01 183a: 16 c0 rjmp .+44 ; 0x1868 <StartMenu+0x504> 183c: 8f ea ldi r24, 0xAF ; 175 183e: 91 e0 ldi r25, 0x01 ; 1 1840: 9c 8b std Y+20, r25 ; 0x14 1842: 8b 8b std Y+19, r24 ; 0x13 for(i=0;i<NUM_DIGIT;i++) //set minimum brightness for all digit { digitBrightness[i] = lowDigitBrightness; //digitBlink[i] = 0; } if(currentSettings != YEAR) 1844: 68 94 set 1846: 99 24 eor r9, r9 1848: 91 f8 bld r9, 1 } else { for (i=2;i<NUM_DIGIT;i++) { LedSetColor(i, colorBacklightChoice); 184a: 65 e6 ldi r22, 0x65 ; 101 184c: 70 e0 ldi r23, 0x00 ; 0 184e: 89 2d mov r24, r9 1850: 06 da rcall .-3060 ; 0xc5e <LedSetColor> digitBrightness[i] = highDigitBrigtness; 1852: 80 91 bc 01 lds r24, 0x01BC ; 0x8001bc <highDigitBrigtness> 1856: eb 89 ldd r30, Y+19 ; 0x13 1858: fc 89 ldd r31, Y+20 ; 0x14 185a: 81 93 st Z+, r24 185c: fc 8b std Y+20, r31 ; 0x14 185e: eb 8b std Y+19, r30 ; 0x13 //digitBlink[(currentSettings%2)*2] = 1; //digitBlink[(currentSettings%2)*2+1] = 1; } else { for (i=2;i<NUM_DIGIT;i++) 1860: 93 94 inc r9 1862: f6 e0 ldi r31, 0x06 ; 6 1864: 9f 12 cpse r9, r31 1866: f1 cf rjmp .-30 ; 0x184a <StartMenu+0x4e6> LedSetColor(i, colorBacklightChoice); digitBrightness[i] = highDigitBrigtness; //digitBlink[i] = 1; } } DisplayRequestUpdateLed(); 1868: c7 d7 rcall .+3982 ; 0x27f8 <__TEXT_REGION_LENGTH__+0x7f8> DisplaySetBrightnessEachNumber100(digitBrightness); 186a: 8d 89 ldd r24, Y+21 ; 0x15 186c: 9e 89 ldd r25, Y+22 ; 0x16 186e: 57 d7 rcall .+3758 ; 0x271e <__TEXT_REGION_LENGTH__+0x71e> DisplaySetBlinkDigit(digitBlink); 1870: 83 eb ldi r24, 0xB3 ; 179 1872: 91 e0 ldi r25, 0x01 ; 1 1874: ac d7 rcall .+3928 ; 0x27ce <__TEXT_REGION_LENGTH__+0x7ce> 1876: 8f ec ldi r24, 0xCF ; 207 1878: 97 e0 ldi r25, 0x07 ; 7 187a: 01 97 sbiw r24, 0x01 ; 1 187c: f1 f7 brne .-4 ; 0x187a <StartMenu+0x516> 187e: 00 c0 rjmp .+0 ; 0x1880 <StartMenu+0x51c> 1880: 00 00 nop LedOffAll(); for(i=0; i<2; i++) LedSetColor(i, colorBacklightChoice); DisplayRequestUpdateLed(); while(currentSettings != EXIT) 1882: 05 30 cpi r16, 0x05 ; 5 1884: 09 f0 breq .+2 ; 0x1888 <StartMenu+0x524> 1886: da ce rjmp .-588 ; 0x163c <StartMenu+0x2d8> 1888: c1 cd rjmp .-1150 ; 0x140c <StartMenu+0xa8> uint8_t i; uint8_t animationUpdateCounter = 0; enum {INPUT, EXIT}; uint8_t tmpAnimation = eeprom_read_byte(&eepNumLedAnimation); 188a: 85 e0 ldi r24, 0x05 ; 5 188c: 90 e0 ldi r25, 0x00 ; 0 188e: 0f d1 rcall .+542 ; 0x1aae <eeprom_read_byte> 1890: 08 2f mov r16, r24 uint8_t currentSettings = 0; LedOffAll(); 1892: 00 da rcall .-3072 ; 0xc94 <LedOffAll> LedSetBrigtness(eeprom_read_byte(&eepBrightnessLedMax)); 1894: 89 e0 ldi r24, 0x09 ; 9 1896: 90 e0 ldi r25, 0x00 ; 0 1898: 0a d1 rcall .+532 ; 0x1aae <eeprom_read_byte> 189a: 61 db rcall .-2366 ; 0xf5e <LedSetBrigtness> for(i=0; i<6; i++) 189c: 10 e0 ldi r17, 0x00 ; 0 LedSetColor(i, colorBacklightChoice); 189e: 65 e6 ldi r22, 0x65 ; 101 18a0: 70 e0 ldi r23, 0x00 ; 0 18a2: 81 2f mov r24, r17 18a4: dc d9 rcall .-3144 ; 0xc5e <LedSetColor> uint8_t tmpAnimation = eeprom_read_byte(&eepNumLedAnimation); uint8_t currentSettings = 0; LedOffAll(); LedSetBrigtness(eeprom_read_byte(&eepBrightnessLedMax)); for(i=0; i<6; i++) 18a6: 1f 5f subi r17, 0xFF ; 255 18a8: 16 30 cpi r17, 0x06 ; 6 18aa: c9 f7 brne .-14 ; 0x189e <StartMenu+0x53a> LedSetColor(i, colorBacklightChoice); DisplayRequestUpdateLed(); 18ac: a5 d7 rcall .+3914 ; 0x27f8 <__TEXT_REGION_LENGTH__+0x7f8> digitBlink[5] = 1; 18ae: 30 92 b8 01 sts 0x01B8, r3 ; 0x8001b8 <digitBlink+0x5> for(i=0;i<NUM_DIGIT-1;i++) digitBlink[i] = 0; 18b2: e3 eb ldi r30, 0xB3 ; 179 18b4: f1 e0 ldi r31, 0x01 ; 1 18b6: 10 82 st Z, r1 18b8: 10 92 b4 01 sts 0x01B4, r1 ; 0x8001b4 <digitBlink+0x1> 18bc: 10 92 b5 01 sts 0x01B5, r1 ; 0x8001b5 <digitBlink+0x2> 18c0: 10 92 b6 01 sts 0x01B6, r1 ; 0x8001b6 <digitBlink+0x3> 18c4: 10 92 b7 01 sts 0x01B7, r1 ; 0x8001b7 <digitBlink+0x4> DisplaySetBlinkDigit(digitBlink); 18c8: cf 01 movw r24, r30 18ca: 81 d7 rcall .+3842 ; 0x27ce <__TEXT_REGION_LENGTH__+0x7ce> uint8_t numberToDisplay[6] = {OFF_NUMB,OFF_NUMB,OFF_NUMB,OFF_NUMB,OFF_NUMB,OFF_NUMB}; 18cc: 86 e0 ldi r24, 0x06 ; 6 18ce: e8 e7 ldi r30, 0x78 ; 120 18d0: f0 e0 ldi r31, 0x00 ; 0 18d2: de 01 movw r26, r28 18d4: 17 96 adiw r26, 0x07 ; 7 18d6: 01 90 ld r0, Z+ 18d8: 0d 92 st X+, r0 18da: 8a 95 dec r24 18dc: e1 f7 brne .-8 ; 0x18d6 <StartMenu+0x572> /* */ DisplaySetBrightness100(eeprom_read_byte(&eepBrightnessDigitMax)); 18de: 87 e0 ldi r24, 0x07 ; 7 18e0: 90 e0 ldi r25, 0x00 ; 0 18e2: e5 d0 rcall .+458 ; 0x1aae <eeprom_read_byte> 18e4: 7b d6 rcall .+3318 ; 0x25dc <__TEXT_REGION_LENGTH__+0x5dc> numberToDisplay[5] = tmpAnimation; 18e6: 0c 87 std Y+12, r16 ; 0x0c DisplaySetData6Num(numberToDisplay); //display current animation 18e8: ce 01 movw r24, r28 18ea: 07 96 adiw r24, 0x07 ; 7 18ec: d1 d5 rcall .+2978 ; 0x2490 <__TEXT_REGION_LENGTH__+0x490> uint8_t animationUpdateCounter = 0; enum {INPUT, EXIT}; uint8_t tmpAnimation = eeprom_read_byte(&eepNumLedAnimation); uint8_t currentSettings = 0; 18ee: 91 2c mov r9, r1 static void MenuLedAnimation() { /**/ uint8_t i; uint8_t animationUpdateCounter = 0; 18f0: 10 e0 ldi r17, 0x00 ; 0 numberToDisplay[5] = tmpAnimation; DisplaySetData6Num(numberToDisplay); //display current animation while(currentSettings != EXIT) { controlState = ControlCheck(); 18f2: fd d3 rcall .+2042 ; 0x20ee <__TEXT_REGION_LENGTH__+0xee> 18f4: 80 93 c9 00 sts 0x00C9, r24 ; 0x8000c9 <controlState> /*display animation*/ if(++animationUpdateCounter >= 50) //every 10 ms 18f8: 1f 5f subi r17, 0xFF ; 255 18fa: 12 33 cpi r17, 0x32 ; 50 18fc: 10 f1 brcs .+68 ; 0x1942 <StartMenu+0x5de> { switch(tmpAnimation) 18fe: 02 30 cpi r16, 0x02 ; 2 1900: 79 f0 breq .+30 ; 0x1920 <StartMenu+0x5bc> 1902: 28 f4 brcc .+10 ; 0x190e <StartMenu+0x5aa> 1904: 00 23 and r16, r16 1906: 41 f0 breq .+16 ; 0x1918 <StartMenu+0x5b4> 1908: 01 30 cpi r16, 0x01 ; 1 190a: 41 f0 breq .+16 ; 0x191c <StartMenu+0x5b8> 190c: 19 c0 rjmp .+50 ; 0x1940 <StartMenu+0x5dc> 190e: 03 30 cpi r16, 0x03 ; 3 1910: 49 f0 breq .+18 ; 0x1924 <StartMenu+0x5c0> 1912: 04 30 cpi r16, 0x04 ; 4 1914: 49 f0 breq .+18 ; 0x1928 <StartMenu+0x5c4> 1916: 14 c0 rjmp .+40 ; 0x1940 <StartMenu+0x5dc> { case 0: LedOffAll(); 1918: bd d9 rcall .-3206 ; 0xc94 <LedOffAll> 191a: 50 c0 rjmp .+160 ; 0x19bc <StartMenu+0x658> break; case 1: LedTheaterChaseRainbow(); 191c: c8 d9 rcall .-3184 ; 0xcae <LedTheaterChaseRainbow> 191e: 4e c0 rjmp .+156 ; 0x19bc <StartMenu+0x658> break; case 2: LedRainbowCycle(); 1920: 44 da rcall .-2936 ; 0xdaa <LedRainbowCycle> 1922: 4c c0 rjmp .+152 ; 0x19bc <StartMenu+0x658> break; case 3: LedRainbow(); 1924: 8c da rcall .-2792 ; 0xe3e <LedRainbow> 1926: 4a c0 rjmp .+148 ; 0x19bc <StartMenu+0x658> break; case 4: LedAllColorAnim(10, UP); 1928: 60 e0 ldi r22, 0x00 ; 0 192a: 8a e0 ldi r24, 0x0A ; 10 192c: c5 da rcall .-2678 ; 0xeb8 <LedAllColorAnim> } animationUpdateCounter = 0; } /*display number on display*/ switch(controlState) 192e: 80 91 c9 00 lds r24, 0x00C9 ; 0x8000c9 <controlState> 1932: 82 30 cpi r24, 0x02 ; 2 1934: 21 f1 breq .+72 ; 0x197e <StartMenu+0x61a> 1936: 83 30 cpi r24, 0x03 ; 3 1938: b1 f0 breq .+44 ; 0x1966 <StartMenu+0x602> 193a: 81 30 cpi r24, 0x01 ; 1 193c: 49 f5 brne .+82 ; 0x1990 <StartMenu+0x62c> 193e: 0c c0 rjmp .+24 ; 0x1958 <StartMenu+0x5f4> LedAllColorAnim(10, UP); break; default: break; } animationUpdateCounter = 0; 1940: 10 e0 ldi r17, 0x00 ; 0 } /*display number on display*/ switch(controlState) 1942: 82 30 cpi r24, 0x02 ; 2 1944: f9 f0 breq .+62 ; 0x1984 <StartMenu+0x620> 1946: 83 30 cpi r24, 0x03 ; 3 1948: 89 f0 breq .+34 ; 0x196c <StartMenu+0x608> 194a: 81 30 cpi r24, 0x01 ; 1 194c: 21 f5 brne .+72 ; 0x1996 <StartMenu+0x632> { case PRESS_LEFT: tmpAnimation++; 194e: 0f 5f subi r16, 0xFF ; 255 if(tmpAnimation == 5) 1950: 05 30 cpi r16, 0x05 ; 5 1952: 21 f4 brne .+8 ; 0x195c <StartMenu+0x5f8> tmpAnimation = 0; 1954: 00 e0 ldi r16, 0x00 ; 0 1956: 02 c0 rjmp .+4 ; 0x195c <StartMenu+0x5f8> LedAllColorAnim(10, UP); break; default: break; } animationUpdateCounter = 0; 1958: 10 e0 ldi r17, 0x00 ; 0 { case PRESS_LEFT: tmpAnimation++; if(tmpAnimation == 5) tmpAnimation = 0; 195a: 00 e0 ldi r16, 0x00 ; 0 numberToDisplay[5] = tmpAnimation; 195c: 0c 87 std Y+12, r16 ; 0x0c DisplaySetData6Num(numberToDisplay); 195e: ce 01 movw r24, r28 1960: 07 96 adiw r24, 0x07 ; 7 1962: 96 d5 rcall .+2860 ; 0x2490 <__TEXT_REGION_LENGTH__+0x490> 1964: 18 c0 rjmp .+48 ; 0x1996 <StartMenu+0x632> LedAllColorAnim(10, UP); break; default: break; } animationUpdateCounter = 0; 1966: 10 e0 ldi r17, 0x00 ; 0 1968: 01 c0 rjmp .+2 ; 0x196c <StartMenu+0x608> } /*display number on display*/ switch(controlState) 196a: 10 e0 ldi r17, 0x00 ; 0 numberToDisplay[5] = tmpAnimation; DisplaySetData6Num(numberToDisplay); break; case PRESS_RIGHT: tmpAnimation--; 196c: 01 50 subi r16, 0x01 ; 1 196e: 05 30 cpi r16, 0x05 ; 5 1970: 08 f0 brcs .+2 ; 0x1974 <StartMenu+0x610> 1972: 04 e0 ldi r16, 0x04 ; 4 if(tmpAnimation >= 5) tmpAnimation = 4; numberToDisplay[5] = tmpAnimation; 1974: 0c 87 std Y+12, r16 ; 0x0c DisplaySetData6Num(numberToDisplay); 1976: ce 01 movw r24, r28 1978: 07 96 adiw r24, 0x07 ; 7 197a: 8a d5 rcall .+2836 ; 0x2490 <__TEXT_REGION_LENGTH__+0x490> 197c: 0c c0 rjmp .+24 ; 0x1996 <StartMenu+0x632> LedAllColorAnim(10, UP); break; default: break; } animationUpdateCounter = 0; 197e: 10 e0 ldi r17, 0x00 ; 0 1980: 01 c0 rjmp .+2 ; 0x1984 <StartMenu+0x620> } /*display number on display*/ switch(controlState) 1982: 10 e0 ldi r17, 0x00 ; 0 numberToDisplay[5] = tmpAnimation; DisplaySetData6Num(numberToDisplay); break; case PRESS_CENTER: currentSettings++; //exit 1984: 93 94 inc r9 /*save settings*/ eeprom_write_byte(&eepNumLedAnimation, tmpAnimation); 1986: 60 2f mov r22, r16 1988: 85 e0 ldi r24, 0x05 ; 5 198a: 90 e0 ldi r25, 0x00 ; 0 198c: 98 d0 rcall .+304 ; 0x1abe <eeprom_write_byte> 198e: 03 c0 rjmp .+6 ; 0x1996 <StartMenu+0x632> LedAllColorAnim(10, UP); break; default: break; } animationUpdateCounter = 0; 1990: 10 e0 ldi r17, 0x00 ; 0 1992: 01 c0 rjmp .+2 ; 0x1996 <StartMenu+0x632> } /*display number on display*/ switch(controlState) 1994: 10 e0 ldi r17, 0x00 ; 0 1996: 8f ec ldi r24, 0xCF ; 207 1998: 97 e0 ldi r25, 0x07 ; 7 199a: 01 97 sbiw r24, 0x01 ; 1 199c: f1 f7 brne .-4 ; 0x199a <StartMenu+0x636> 199e: 00 c0 rjmp .+0 ; 0x19a0 <StartMenu+0x63c> 19a0: 00 00 nop DisplaySetBrightness100(eeprom_read_byte(&eepBrightnessDigitMax)); numberToDisplay[5] = tmpAnimation; DisplaySetData6Num(numberToDisplay); //display current animation while(currentSettings != EXIT) 19a2: 91 e0 ldi r25, 0x01 ; 1 19a4: 99 12 cpse r9, r25 19a6: a5 cf rjmp .-182 ; 0x18f2 <StartMenu+0x58e> 19a8: 31 cd rjmp .-1438 ; 0x140c <StartMenu+0xa8> case 3: break; case 4: break; case 5: //exit DisplayClear(); 19aa: 1c d7 rcall .+3640 ; 0x27e4 <__TEXT_REGION_LENGTH__+0x7e4> 19ac: 10 c0 rjmp .+32 ; 0x19ce <StartMenu+0x66a> uint8_t i; LedReadColor(0, &color[0], &color[1], &color[2]); for(i=0;i<3;i++) eeprom_write_byte(&eepColor[i],color[i]); while(selectMenu != 5) //select_menu = 6 - menu exit 19ae: 15 30 cpi r17, 0x05 ; 5 19b0: 09 f0 breq .+2 ; 0x19b4 <StartMenu+0x650> 19b2: 2c cd rjmp .-1448 ; 0x140c <StartMenu+0xa8> 19b4: 0c c0 rjmp .+24 ; 0x19ce <StartMenu+0x66a> /*display number on display*/ switch(controlState) { case PRESS_LEFT: tmpAnimation++; 19b6: 0f 5f subi r16, 0xFF ; 255 19b8: 10 e0 ldi r17, 0x00 ; 0 19ba: d0 cf rjmp .-96 ; 0x195c <StartMenu+0x5f8> } animationUpdateCounter = 0; } /*display number on display*/ switch(controlState) 19bc: 80 91 c9 00 lds r24, 0x00C9 ; 0x8000c9 <controlState> 19c0: 82 30 cpi r24, 0x02 ; 2 19c2: f9 f2 breq .-66 ; 0x1982 <StartMenu+0x61e> 19c4: 83 30 cpi r24, 0x03 ; 3 19c6: 89 f2 breq .-94 ; 0x196a <StartMenu+0x606> 19c8: 81 30 cpi r24, 0x01 ; 1 19ca: 21 f7 brne .-56 ; 0x1994 <StartMenu+0x630> 19cc: f4 cf rjmp .-24 ; 0x19b6 <StartMenu+0x652> } /*restore all setting from eeprom*/ /*restore led color, led brightness, digit brightness, number led animation, digit animation, display animation*/ RestoreSettingsFromEeprom(); 19ce: 25 dc rcall .-1974 ; 0x121a <RestoreSettingsFromEeprom> //set brightness led and digit return 1; } 19d0: 81 e0 ldi r24, 0x01 ; 1 19d2: 66 96 adiw r28, 0x16 ; 22 19d4: 0f b6 in r0, 0x3f ; 63 19d6: f8 94 cli 19d8: de bf out 0x3e, r29 ; 62 19da: 0f be out 0x3f, r0 ; 63 19dc: cd bf out 0x3d, r28 ; 61 19de: df 91 pop r29 19e0: cf 91 pop r28 19e2: 1f 91 pop r17 19e4: 0f 91 pop r16 19e6: ff 90 pop r15 19e8: ef 90 pop r14 19ea: df 90 pop r13 19ec: cf 90 pop r12 19ee: bf 90 pop r11 19f0: af 90 pop r10 19f2: 9f 90 pop r9 19f4: 8f 90 pop r8 19f6: 7f 90 pop r7 19f8: 6f 90 pop r6 19fa: 5f 90 pop r5 19fc: 4f 90 pop r4 19fe: 3f 90 pop r3 1a00: 2f 90 pop r2 1a02: 08 95 ret 00001a04 <__divmodhi4>: 1a04: 97 fb bst r25, 7 1a06: 07 2e mov r0, r23 1a08: 16 f4 brtc .+4 ; 0x1a0e <__divmodhi4+0xa> 1a0a: 00 94 com r0 1a0c: 06 d0 rcall .+12 ; 0x1a1a <__divmodhi4_neg1> 1a0e: 77 fd sbrc r23, 7 1a10: 08 d0 rcall .+16 ; 0x1a22 <__divmodhi4_neg2> 1a12: 39 d0 rcall .+114 ; 0x1a86 <__udivmodhi4> 1a14: 07 fc sbrc r0, 7 1a16: 05 d0 rcall .+10 ; 0x1a22 <__divmodhi4_neg2> 1a18: 3e f4 brtc .+14 ; 0x1a28 <__divmodhi4_exit> 00001a1a <__divmodhi4_neg1>: 1a1a: 90 95 com r25 1a1c: 81 95 neg r24 1a1e: 9f 4f sbci r25, 0xFF ; 255 1a20: 08 95 ret 00001a22 <__divmodhi4_neg2>: 1a22: 70 95 com r23 1a24: 61 95 neg r22 1a26: 7f 4f sbci r23, 0xFF ; 255 00001a28 <__divmodhi4_exit>: 1a28: 08 95 ret 00001a2a <__udivmodsi4>: 1a2a: a1 e2 ldi r26, 0x21 ; 33 1a2c: 1a 2e mov r1, r26 1a2e: aa 1b sub r26, r26 1a30: bb 1b sub r27, r27 1a32: fd 01 movw r30, r26 1a34: 0d c0 rjmp .+26 ; 0x1a50 <__udivmodsi4_ep> 00001a36 <__udivmodsi4_loop>: 1a36: aa 1f adc r26, r26 1a38: bb 1f adc r27, r27 1a3a: ee 1f adc r30, r30 1a3c: ff 1f adc r31, r31 1a3e: a2 17 cp r26, r18 1a40: b3 07 cpc r27, r19 1a42: e4 07 cpc r30, r20 1a44: f5 07 cpc r31, r21 1a46: 20 f0 brcs .+8 ; 0x1a50 <__udivmodsi4_ep> 1a48: a2 1b sub r26, r18 1a4a: b3 0b sbc r27, r19 1a4c: e4 0b sbc r30, r20 1a4e: f5 0b sbc r31, r21 00001a50 <__udivmodsi4_ep>: 1a50: 66 1f adc r22, r22 1a52: 77 1f adc r23, r23 1a54: 88 1f adc r24, r24 1a56: 99 1f adc r25, r25 1a58: 1a 94 dec r1 1a5a: 69 f7 brne .-38 ; 0x1a36 <__udivmodsi4_loop> 1a5c: 60 95 com r22 1a5e: 70 95 com r23 1a60: 80 95 com r24 1a62: 90 95 com r25 1a64: 9b 01 movw r18, r22 1a66: ac 01 movw r20, r24 1a68: bd 01 movw r22, r26 1a6a: cf 01 movw r24, r30 1a6c: 08 95 ret 00001a6e <__umulhisi3>: 1a6e: a2 9f mul r26, r18 1a70: b0 01 movw r22, r0 1a72: b3 9f mul r27, r19 1a74: c0 01 movw r24, r0 1a76: a3 9f mul r26, r19 1a78: 01 d0 rcall .+2 ; 0x1a7c <__umulhisi3+0xe> 1a7a: b2 9f mul r27, r18 1a7c: 70 0d add r23, r0 1a7e: 81 1d adc r24, r1 1a80: 11 24 eor r1, r1 1a82: 91 1d adc r25, r1 1a84: 08 95 ret 00001a86 <__udivmodhi4>: 1a86: aa 1b sub r26, r26 1a88: bb 1b sub r27, r27 1a8a: 51 e1 ldi r21, 0x11 ; 17 1a8c: 07 c0 rjmp .+14 ; 0x1a9c <__udivmodhi4_ep> 00001a8e <__udivmodhi4_loop>: 1a8e: aa 1f adc r26, r26 1a90: bb 1f adc r27, r27 1a92: a6 17 cp r26, r22 1a94: b7 07 cpc r27, r23 1a96: 10 f0 brcs .+4 ; 0x1a9c <__udivmodhi4_ep> 1a98: a6 1b sub r26, r22 1a9a: b7 0b sbc r27, r23 00001a9c <__udivmodhi4_ep>: 1a9c: 88 1f adc r24, r24 1a9e: 99 1f adc r25, r25 1aa0: 5a 95 dec r21 1aa2: a9 f7 brne .-22 ; 0x1a8e <__udivmodhi4_loop> 1aa4: 80 95 com r24 1aa6: 90 95 com r25 1aa8: bc 01 movw r22, r24 1aaa: cd 01 movw r24, r26 1aac: 08 95 ret 00001aae <eeprom_read_byte>: 1aae: e1 99 sbic 0x1c, 1 ; 28 1ab0: fe cf rjmp .-4 ; 0x1aae <eeprom_read_byte> 1ab2: 9f bb out 0x1f, r25 ; 31 1ab4: 8e bb out 0x1e, r24 ; 30 1ab6: e0 9a sbi 0x1c, 0 ; 28 1ab8: 99 27 eor r25, r25 1aba: 8d b3 in r24, 0x1d ; 29 1abc: 08 95 ret 00001abe <eeprom_write_byte>: 1abe: 26 2f mov r18, r22 00001ac0 <eeprom_write_r18>: 1ac0: e1 99 sbic 0x1c, 1 ; 28 1ac2: fe cf rjmp .-4 ; 0x1ac0 <eeprom_write_r18> 1ac4: 9f bb out 0x1f, r25 ; 31 1ac6: 8e bb out 0x1e, r24 ; 30 1ac8: 2d bb out 0x1d, r18 ; 29 1aca: 0f b6 in r0, 0x3f ; 63 1acc: f8 94 cli 1ace: e2 9a sbi 0x1c, 2 ; 28 1ad0: e1 9a sbi 0x1c, 1 ; 28 1ad2: 0f be out 0x3f, r0 ; 63 1ad4: 01 96 adiw r24, 0x01 ; 1 1ad6: 08 95 ret 00001ad8 <_exit>: 1ad8: f8 94 cli 00001ada <__stop_program>: 1ada: ff cf rjmp .-2 ; 0x1ada <__stop_program>