Files
Last update 6 years 11 months
by
Jefferson Pimenta Melo
GatilhoMega328.lssGatilhoMega328.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000b12 00000000 00000000 00000074 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00800060 00800060 00000b86 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000009 00800060 00800060 00000b86 2**0 ALLOC 3 .comment 00000030 00000000 00000000 00000b86 2**0 CONTENTS, READONLY 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000bb8 2**2 CONTENTS, READONLY 5 .debug_aranges 00000078 00000000 00000000 00000bf8 2**3 CONTENTS, READONLY, DEBUGGING 6 .debug_info 00000f33 00000000 00000000 00000c70 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_abbrev 0000064a 00000000 00000000 00001ba3 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_line 000008bf 00000000 00000000 000021ed 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_frame 00000080 00000000 00000000 00002aac 2**2 CONTENTS, READONLY, DEBUGGING 10 .debug_str 00000372 00000000 00000000 00002b2c 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 0000079c 00000000 00000000 00002e9e 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_ranges 00000040 00000000 00000000 0000363a 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0e c0 rjmp .+28 ; 0x1e <__ctors_end> 2: 1d c0 rjmp .+58 ; 0x3e <__bad_interrupt> 4: 1c c0 rjmp .+56 ; 0x3e <__bad_interrupt> 6: 1b c0 rjmp .+54 ; 0x3e <__bad_interrupt> 8: 1a c0 rjmp .+52 ; 0x3e <__bad_interrupt> a: 19 c0 rjmp .+50 ; 0x3e <__bad_interrupt> c: 18 c0 rjmp .+48 ; 0x3e <__bad_interrupt> e: 17 c0 rjmp .+46 ; 0x3e <__bad_interrupt> 10: 16 c0 rjmp .+44 ; 0x3e <__bad_interrupt> 12: 15 c0 rjmp .+42 ; 0x3e <__bad_interrupt> 14: 14 c0 rjmp .+40 ; 0x3e <__bad_interrupt> 16: 13 c0 rjmp .+38 ; 0x3e <__bad_interrupt> 18: 12 c0 rjmp .+36 ; 0x3e <__bad_interrupt> 1a: 11 c0 rjmp .+34 ; 0x3e <__bad_interrupt> 1c: 10 c0 rjmp .+32 ; 0x3e <__bad_interrupt> 0000001e <__ctors_end>: 1e: 11 24 eor r1, r1 20: 1f be out 0x3f, r1 ; 63 22: cf e5 ldi r28, 0x5F ; 95 24: d2 e0 ldi r29, 0x02 ; 2 26: de bf out 0x3e, r29 ; 62 28: cd bf out 0x3d, r28 ; 61 0000002a <__do_clear_bss>: 2a: 20 e0 ldi r18, 0x00 ; 0 2c: a0 e6 ldi r26, 0x60 ; 96 2e: b0 e0 ldi r27, 0x00 ; 0 30: 01 c0 rjmp .+2 ; 0x34 <.do_clear_bss_start> 00000032 <.do_clear_bss_loop>: 32: 1d 92 st X+, r1 00000034 <.do_clear_bss_start>: 34: a9 36 cpi r26, 0x69 ; 105 36: b2 07 cpc r27, r18 38: e1 f7 brne .-8 ; 0x32 <.do_clear_bss_loop> 3a: 2e d3 rcall .+1628 ; 0x698 <main> 3c: 68 c5 rjmp .+2768 ; 0xb0e <_exit> 0000003e <__bad_interrupt>: 3e: e0 cf rjmp .-64 ; 0x0 <__vectors> 00000040 <normal>: } void normal(){ 40: cf 92 push r12 42: df 92 push r13 44: ef 92 push r14 46: ff 92 push r15 48: cf 93 push r28 4a: df 93 push r29 uint8_t j=0,i=0;//declara contador if (firemode==1) 4c: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 50: 81 30 cpi r24, 0x01 ; 1 52: 31 f4 brne .+12 ; 0x60 <normal+0x20> { while(1){ if (bit_get(Trigger,Pintrigger)) 54: b1 9b sbis 0x16, 1 ; 22 56: 02 c0 rjmp .+4 ; 0x5c <normal+0x1c> { bit_clear(Motor,Pinmotor); 58: c0 98 cbi 0x18, 0 ; 24 5a: fc cf rjmp .-8 ; 0x54 <normal+0x14> }else{ bit_set(Motor,Pinmotor); 5c: c0 9a sbi 0x18, 0 ; 24 5e: fa cf rjmp .-12 ; 0x54 <normal+0x14> } } }//modo de espelhamento do estado do gatilho if (firemode==2){//modo economico 60: 82 30 cpi r24, 0x02 ; 2 62: 09 f0 breq .+2 ; 0x66 <normal+0x26> 64: f5 c0 rjmp .+490 ; 0x250 <normal+0x210> while(1){ if (nextfire!=0) nextfire--; 66: c0 90 60 00 lds r12, 0x0060 ; 0x800060 <_edata> 6a: d0 90 61 00 lds r13, 0x0061 ; 0x800061 <_edata+0x1> 6e: e0 90 62 00 lds r14, 0x0062 ; 0x800062 <_edata+0x2> 72: f0 90 63 00 lds r15, 0x0063 ; 0x800063 <_edata+0x3> 76: 20 e0 ldi r18, 0x00 ; 0 78: 30 e0 ldi r19, 0x00 ; 0 7a: a9 01 movw r20, r18 7c: c7 01 movw r24, r14 7e: b6 01 movw r22, r12 80: a3 d3 rcall .+1862 ; 0x7c8 <__cmpsf2> 82: 88 23 and r24, r24 84: 79 f0 breq .+30 ; 0xa4 <normal+0x64> 86: 20 e0 ldi r18, 0x00 ; 0 88: 30 e0 ldi r19, 0x00 ; 0 8a: 40 e8 ldi r20, 0x80 ; 128 8c: 5f e3 ldi r21, 0x3F ; 63 8e: c7 01 movw r24, r14 90: b6 01 movw r22, r12 92: 35 d3 rcall .+1642 ; 0x6fe <__subsf3> 94: 60 93 60 00 sts 0x0060, r22 ; 0x800060 <_edata> 98: 70 93 61 00 sts 0x0061, r23 ; 0x800061 <_edata+0x1> 9c: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <_edata+0x2> a0: 90 93 63 00 sts 0x0063, r25 ; 0x800063 <_edata+0x3> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); a4: 89 ef ldi r24, 0xF9 ; 249 a6: 90 e0 ldi r25, 0x00 ; 0 a8: 01 97 sbiw r24, 0x01 ; 1 aa: f1 f7 brne .-4 ; 0xa8 <normal+0x68> ac: 00 c0 rjmp .+0 ; 0xae <normal+0x6e> ae: 00 00 nop i=0; b0: c0 e0 ldi r28, 0x00 ; 0 _delay_ms(1); while(bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado b2: b1 9b sbis 0x16, 1 ; 22 b4: d8 cf rjmp .-80 ; 0x66 <normal+0x26> i++; b6: cf 5f subi r28, 0xFF ; 255 b8: 89 ef ldi r24, 0xF9 ; 249 ba: 90 e0 ldi r25, 0x00 ; 0 bc: 01 97 sbiw r24, 0x01 ; 1 be: f1 f7 brne .-4 ; 0xbc <normal+0x7c> c0: 00 c0 rjmp .+0 ; 0xc2 <normal+0x82> c2: 00 00 nop _delay_ms(1); if (i>debouncedelay) c4: c6 30 cpi r28, 0x06 ; 6 c6: 08 f4 brcc .+2 ; 0xca <normal+0x8a> c8: c1 c0 rjmp .+386 ; 0x24c <normal+0x20c> { bit_set(Motor,Pinmotor);//liga motor ca: c0 9a sbi 0x18, 0 ; 24 if ((bit_get(Trigger,Pintrigger))){ cc: b1 9b sbis 0x16, 1 ; 22 ce: f1 cf rjmp .-30 ; 0xb2 <normal+0x72> d0: c0 e0 ldi r28, 0x00 ; 0 for (i=0;i<tiros;i++)//quantidade de tiros menos o efetuado d2: 80 91 66 00 lds r24, 0x0066 ; 0x800066 <tiros> d6: c8 17 cp r28, r24 d8: 08 f0 brcs .+2 ; 0xdc <normal+0x9c> da: 8e c0 rjmp .+284 ; 0x1f8 <normal+0x1b8> { if (i==0) dc: c1 11 cpse r28, r1 de: 69 c0 rjmp .+210 ; 0x1b2 <normal+0x172> {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro e0: 20 e0 ldi r18, 0x00 ; 0 e2: 30 e0 ldi r19, 0x00 ; 0 e4: a9 01 movw r20, r18 e6: 60 91 60 00 lds r22, 0x0060 ; 0x800060 <_edata> ea: 70 91 61 00 lds r23, 0x0061 ; 0x800061 <_edata+0x1> ee: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <_edata+0x2> f2: 90 91 63 00 lds r25, 0x0063 ; 0x800063 <_edata+0x3> f6: 6c d3 rcall .+1752 ; 0x7d0 <__divsf3> f8: 20 ed ldi r18, 0xD0 ; 208 fa: 3c ec ldi r19, 0xCC ; 204 fc: 4c ec ldi r20, 0xCC ; 204 fe: 5d e3 ldi r21, 0x3D ; 61 100: 85 d4 rcall .+2314 ; 0xa0c <__mulsf3> 102: 9b 01 movw r18, r22 104: ac 01 movw r20, r24 106: 60 e0 ldi r22, 0x00 ; 0 108: 70 e0 ldi r23, 0x00 ; 0 10a: 80 e8 ldi r24, 0x80 ; 128 10c: 9f e3 ldi r25, 0x3F ; 63 10e: f7 d2 rcall .+1518 ; 0x6fe <__subsf3> 110: 6b 01 movw r12, r22 112: 7c 01 movw r14, r24 if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta 114: 26 e6 ldi r18, 0x66 ; 102 116: 36 e6 ldi r19, 0x66 ; 102 118: 46 e6 ldi r20, 0x66 ; 102 11a: 5f e3 ldi r21, 0x3F ; 63 11c: 55 d3 rcall .+1706 ; 0x7c8 <__cmpsf2> 11e: 87 fd sbrc r24, 7 120: 12 c0 rjmp .+36 ; 0x146 <normal+0x106> 122: 20 e0 ldi r18, 0x00 ; 0 124: 30 e0 ldi r19, 0x00 ; 0 126: 40 e8 ldi r20, 0x80 ; 128 128: 5f e3 ldi r21, 0x3F ; 63 12a: c7 01 movw r24, r14 12c: b6 01 movw r22, r12 12e: 6a d4 rcall .+2260 ; 0xa04 <__gesf2> 130: 18 16 cp r1, r24 132: 4c f0 brlt .+18 ; 0x146 <normal+0x106> for (i=0;i<tiros;i++)//quantidade de tiros menos o efetuado { if (i==0) {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro 134: c0 92 60 00 sts 0x0060, r12 ; 0x800060 <_edata> 138: d0 92 61 00 sts 0x0061, r13 ; 0x800061 <_edata+0x1> 13c: e0 92 62 00 sts 0x0062, r14 ; 0x800062 <_edata+0x2> 140: f0 92 63 00 sts 0x0063, r15 ; 0x800063 <_edata+0x3> 144: 0c c0 rjmp .+24 ; 0x15e <normal+0x11e> if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta 146: 80 e0 ldi r24, 0x00 ; 0 148: 90 e0 ldi r25, 0x00 ; 0 14a: a0 e8 ldi r26, 0x80 ; 128 14c: bf e3 ldi r27, 0x3F ; 63 14e: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <_edata> 152: 90 93 61 00 sts 0x0061, r25 ; 0x800061 <_edata+0x1> 156: a0 93 62 00 sts 0x0062, r26 ; 0x800062 <_edata+0x2> 15a: b0 93 63 00 sts 0x0063, r27 ; 0x800063 <_edata+0x3> } void normal(){ 15e: d0 e0 ldi r29, 0x00 ; 0 if (i==0) {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta for (j=0;j<timeon*nextfire;j++) 160: 6d 2f mov r22, r29 162: 70 e0 ldi r23, 0x00 ; 0 164: 80 e0 ldi r24, 0x00 ; 0 166: 90 e0 ldi r25, 0x00 ; 0 168: 9d d3 rcall .+1850 ; 0x8a4 <__floatsisf> 16a: 6b 01 movw r12, r22 16c: 7c 01 movw r14, r24 16e: 80 91 67 00 lds r24, 0x0067 ; 0x800067 <timeon> 172: 68 2f mov r22, r24 174: 70 e0 ldi r23, 0x00 ; 0 176: 80 e0 ldi r24, 0x00 ; 0 178: 90 e0 ldi r25, 0x00 ; 0 17a: 94 d3 rcall .+1832 ; 0x8a4 <__floatsisf> 17c: 20 91 60 00 lds r18, 0x0060 ; 0x800060 <_edata> 180: 30 91 61 00 lds r19, 0x0061 ; 0x800061 <_edata+0x1> 184: 40 91 62 00 lds r20, 0x0062 ; 0x800062 <_edata+0x2> 188: 50 91 63 00 lds r21, 0x0063 ; 0x800063 <_edata+0x3> 18c: 3f d4 rcall .+2174 ; 0xa0c <__mulsf3> 18e: 9b 01 movw r18, r22 190: ac 01 movw r20, r24 192: c7 01 movw r24, r14 194: b6 01 movw r22, r12 196: 18 d3 rcall .+1584 ; 0x7c8 <__cmpsf2> 198: 87 ff sbrs r24, 7 19a: 08 c0 rjmp .+16 ; 0x1ac <normal+0x16c> 19c: 89 ef ldi r24, 0xF9 ; 249 19e: 90 e0 ldi r25, 0x00 ; 0 1a0: 01 97 sbiw r24, 0x01 ; 1 1a2: f1 f7 brne .-4 ; 0x1a0 <normal+0x160> 1a4: 00 c0 rjmp .+0 ; 0x1a6 <normal+0x166> 1a6: 00 00 nop 1a8: df 5f subi r29, 0xFF ; 255 1aa: da cf rjmp .-76 ; 0x160 <normal+0x120> { _delay_ms(1); }//tempo que cada ciclo leva pra se completar }//segundo tiro, motor acelerado if (!(bit_get(Trigger,Pintrigger))) break;//para se o usuário parar os tiros 1ac: b1 99 sbic 0x16, 1 ; 22 1ae: 2e c0 rjmp .+92 ; 0x20c <normal+0x1cc> 1b0: 23 c0 rjmp .+70 ; 0x1f8 <normal+0x1b8> 1b2: d0 e0 ldi r29, 0x00 ; 0 for (j=0;j<timeon*nextfire;j++) { _delay_ms(1); }//tempo que cada ciclo leva pra se completar }else{ for (j=0;j<(timeon*atraso);j++) 1b4: 6d 2f mov r22, r29 1b6: 70 e0 ldi r23, 0x00 ; 0 1b8: 80 e0 ldi r24, 0x00 ; 0 1ba: 90 e0 ldi r25, 0x00 ; 0 1bc: 73 d3 rcall .+1766 ; 0x8a4 <__floatsisf> 1be: 6b 01 movw r12, r22 1c0: 7c 01 movw r14, r24 1c2: 80 91 67 00 lds r24, 0x0067 ; 0x800067 <timeon> 1c6: 68 2f mov r22, r24 1c8: 70 e0 ldi r23, 0x00 ; 0 1ca: 80 e0 ldi r24, 0x00 ; 0 1cc: 90 e0 ldi r25, 0x00 ; 0 1ce: 6a d3 rcall .+1748 ; 0x8a4 <__floatsisf> 1d0: 26 e6 ldi r18, 0x66 ; 102 1d2: 36 e6 ldi r19, 0x66 ; 102 1d4: 46 e6 ldi r20, 0x66 ; 102 1d6: 5f e3 ldi r21, 0x3F ; 63 1d8: 19 d4 rcall .+2098 ; 0xa0c <__mulsf3> 1da: 9b 01 movw r18, r22 1dc: ac 01 movw r20, r24 1de: c7 01 movw r24, r14 1e0: b6 01 movw r22, r12 1e2: f2 d2 rcall .+1508 ; 0x7c8 <__cmpsf2> 1e4: 87 ff sbrs r24, 7 1e6: e2 cf rjmp .-60 ; 0x1ac <normal+0x16c> 1e8: 89 ef ldi r24, 0xF9 ; 249 1ea: 90 e0 ldi r25, 0x00 ; 0 1ec: 01 97 sbiw r24, 0x01 ; 1 1ee: f1 f7 brne .-4 ; 0x1ec <normal+0x1ac> 1f0: 00 c0 rjmp .+0 ; 0x1f2 <normal+0x1b2> 1f2: 00 00 nop 1f4: df 5f subi r29, 0xFF ; 255 1f6: de cf rjmp .-68 ; 0x1b4 <normal+0x174> }//tempo que cada ciclo leva pra se completar }//segundo tiro, motor acelerado if (!(bit_get(Trigger,Pintrigger))) break;//para se o usuário parar os tiros } bit_clear(Motor,Pinmotor);//desliga motor, pois os tiros configurados foram efetuados 1f8: c0 98 cbi 0x18, 0 ; 24 nextfire=nextpreset; 1fa: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <_edata> 1fe: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <_edata+0x1> 202: 10 92 62 00 sts 0x0062, r1 ; 0x800062 <_edata+0x2> 206: 10 92 63 00 sts 0x0063, r1 ; 0x800063 <_edata+0x3> 20a: 02 c0 rjmp .+4 ; 0x210 <normal+0x1d0> if (i>debouncedelay) { bit_set(Motor,Pinmotor);//liga motor if ((bit_get(Trigger,Pintrigger))){ for (i=0;i<tiros;i++)//quantidade de tiros menos o efetuado 20c: cf 5f subi r28, 0xFF ; 255 20e: 61 cf rjmp .-318 ; 0xd2 <normal+0x92> 210: 89 ef ldi r24, 0xF9 ; 249 212: 90 e0 ldi r25, 0x00 ; 0 214: 01 97 sbiw r24, 0x01 ; 1 216: f1 f7 brne .-4 ; 0x214 <normal+0x1d4> 218: 00 c0 rjmp .+0 ; 0x21a <normal+0x1da> 21a: 00 00 nop nextfire=nextpreset; do { _delay_ms(1); nextfire--;//decrementa valor pra estimar o tempo de aperto do gatilho 21c: 20 e0 ldi r18, 0x00 ; 0 21e: 30 e0 ldi r19, 0x00 ; 0 220: 40 e8 ldi r20, 0x80 ; 128 222: 5f e3 ldi r21, 0x3F ; 63 224: 60 91 60 00 lds r22, 0x0060 ; 0x800060 <_edata> 228: 70 91 61 00 lds r23, 0x0061 ; 0x800061 <_edata+0x1> 22c: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <_edata+0x2> 230: 90 91 63 00 lds r25, 0x0063 ; 0x800063 <_edata+0x3> 234: 64 d2 rcall .+1224 ; 0x6fe <__subsf3> 236: 60 93 60 00 sts 0x0060, r22 ; 0x800060 <_edata> 23a: 70 93 61 00 sts 0x0061, r23 ; 0x800061 <_edata+0x1> 23e: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <_edata+0x2> 242: 90 93 63 00 sts 0x0063, r25 ; 0x800063 <_edata+0x3> } while (bit_get(Trigger,Pintrigger));//espera o gatilho ser liberado 246: b1 99 sbic 0x16, 1 ; 22 248: e3 cf rjmp .-58 ; 0x210 <normal+0x1d0> 24a: 33 cf rjmp .-410 ; 0xb2 <normal+0x72> } }else bit_clear(Motor,Pinmotor);//desliga motor 24c: c0 98 cbi 0x18, 0 ; 24 24e: 31 cf rjmp .-414 ; 0xb2 <normal+0x72> } } } if (firemode==3)//modo rambo 250: 83 30 cpi r24, 0x03 ; 3 252: 09 f0 breq .+2 ; 0x256 <normal+0x216> 254: f9 c0 rjmp .+498 ; 0x448 <__LOCK_REGION_LENGTH__+0x48> { while(1){ if (nextfire!=0) nextfire--; 256: c0 90 60 00 lds r12, 0x0060 ; 0x800060 <_edata> 25a: d0 90 61 00 lds r13, 0x0061 ; 0x800061 <_edata+0x1> 25e: e0 90 62 00 lds r14, 0x0062 ; 0x800062 <_edata+0x2> 262: f0 90 63 00 lds r15, 0x0063 ; 0x800063 <_edata+0x3> 266: 20 e0 ldi r18, 0x00 ; 0 268: 30 e0 ldi r19, 0x00 ; 0 26a: a9 01 movw r20, r18 26c: c7 01 movw r24, r14 26e: b6 01 movw r22, r12 270: ab d2 rcall .+1366 ; 0x7c8 <__cmpsf2> 272: 88 23 and r24, r24 274: 79 f0 breq .+30 ; 0x294 <__stack+0x35> 276: 20 e0 ldi r18, 0x00 ; 0 278: 30 e0 ldi r19, 0x00 ; 0 27a: 40 e8 ldi r20, 0x80 ; 128 27c: 5f e3 ldi r21, 0x3F ; 63 27e: c7 01 movw r24, r14 280: b6 01 movw r22, r12 282: 3d d2 rcall .+1146 ; 0x6fe <__subsf3> 284: 60 93 60 00 sts 0x0060, r22 ; 0x800060 <_edata> 288: 70 93 61 00 sts 0x0061, r23 ; 0x800061 <_edata+0x1> 28c: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <_edata+0x2> 290: 90 93 63 00 sts 0x0063, r25 ; 0x800063 <_edata+0x3> 294: 89 ef ldi r24, 0xF9 ; 249 296: 90 e0 ldi r25, 0x00 ; 0 298: 01 97 sbiw r24, 0x01 ; 1 29a: f1 f7 brne .-4 ; 0x298 <__stack+0x39> 29c: 00 c0 rjmp .+0 ; 0x29e <__stack+0x3f> 29e: 00 00 nop i=0; 2a0: c0 e0 ldi r28, 0x00 ; 0 _delay_ms(1); while(bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 2a2: b1 9b sbis 0x16, 1 ; 22 2a4: d8 cf rjmp .-80 ; 0x256 <normal+0x216> i++; 2a6: cf 5f subi r28, 0xFF ; 255 2a8: 89 ef ldi r24, 0xF9 ; 249 2aa: 90 e0 ldi r25, 0x00 ; 0 2ac: 01 97 sbiw r24, 0x01 ; 1 2ae: f1 f7 brne .-4 ; 0x2ac <__stack+0x4d> 2b0: 00 c0 rjmp .+0 ; 0x2b2 <__stack+0x53> 2b2: 00 00 nop _delay_ms(1); if (i>debouncedelay) 2b4: c6 30 cpi r28, 0x06 ; 6 2b6: 08 f4 brcc .+2 ; 0x2ba <__stack+0x5b> 2b8: c5 c0 rjmp .+394 ; 0x444 <__LOCK_REGION_LENGTH__+0x44> { bit_set(Motor,Pinmotor);//liga motor 2ba: c0 9a sbi 0x18, 0 ; 24 if ((bit_get(Trigger,Pintrigger))){ 2bc: b1 9b sbis 0x16, 1 ; 22 2be: f1 cf rjmp .-30 ; 0x2a2 <__stack+0x43> 2c0: c0 e0 ldi r28, 0x00 ; 0 for (i=0;i<tiros;i++)//quantidade de tiros efetuado 2c2: 80 91 66 00 lds r24, 0x0066 ; 0x800066 <tiros> 2c6: c8 17 cp r28, r24 2c8: 08 f0 brcs .+2 ; 0x2cc <__stack+0x6d> 2ca: 8d c0 rjmp .+282 ; 0x3e6 <__stack+0x187> { if (i==0) 2cc: c1 11 cpse r28, r1 2ce: 66 c0 rjmp .+204 ; 0x39c <__stack+0x13d> {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro 2d0: 20 e0 ldi r18, 0x00 ; 0 2d2: 30 e0 ldi r19, 0x00 ; 0 2d4: a9 01 movw r20, r18 2d6: 60 91 60 00 lds r22, 0x0060 ; 0x800060 <_edata> 2da: 70 91 61 00 lds r23, 0x0061 ; 0x800061 <_edata+0x1> 2de: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <_edata+0x2> 2e2: 90 91 63 00 lds r25, 0x0063 ; 0x800063 <_edata+0x3> 2e6: 74 d2 rcall .+1256 ; 0x7d0 <__divsf3> 2e8: 20 ed ldi r18, 0xD0 ; 208 2ea: 3c ec ldi r19, 0xCC ; 204 2ec: 4c ec ldi r20, 0xCC ; 204 2ee: 5d e3 ldi r21, 0x3D ; 61 2f0: 8d d3 rcall .+1818 ; 0xa0c <__mulsf3> 2f2: 9b 01 movw r18, r22 2f4: ac 01 movw r20, r24 2f6: 60 e0 ldi r22, 0x00 ; 0 2f8: 70 e0 ldi r23, 0x00 ; 0 2fa: 80 e8 ldi r24, 0x80 ; 128 2fc: 9f e3 ldi r25, 0x3F ; 63 2fe: ff d1 rcall .+1022 ; 0x6fe <__subsf3> 300: 6b 01 movw r12, r22 302: 7c 01 movw r14, r24 if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta 304: 26 e6 ldi r18, 0x66 ; 102 306: 36 e6 ldi r19, 0x66 ; 102 308: 46 e6 ldi r20, 0x66 ; 102 30a: 5f e3 ldi r21, 0x3F ; 63 30c: 5d d2 rcall .+1210 ; 0x7c8 <__cmpsf2> 30e: 87 fd sbrc r24, 7 310: 12 c0 rjmp .+36 ; 0x336 <__stack+0xd7> 312: 20 e0 ldi r18, 0x00 ; 0 314: 30 e0 ldi r19, 0x00 ; 0 316: 40 e8 ldi r20, 0x80 ; 128 318: 5f e3 ldi r21, 0x3F ; 63 31a: c7 01 movw r24, r14 31c: b6 01 movw r22, r12 31e: 72 d3 rcall .+1764 ; 0xa04 <__gesf2> 320: 18 16 cp r1, r24 322: 4c f0 brlt .+18 ; 0x336 <__stack+0xd7> for (i=0;i<tiros;i++)//quantidade de tiros efetuado { if (i==0) {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro 324: c0 92 60 00 sts 0x0060, r12 ; 0x800060 <_edata> 328: d0 92 61 00 sts 0x0061, r13 ; 0x800061 <_edata+0x1> 32c: e0 92 62 00 sts 0x0062, r14 ; 0x800062 <_edata+0x2> 330: f0 92 63 00 sts 0x0063, r15 ; 0x800063 <_edata+0x3> 334: 0c c0 rjmp .+24 ; 0x34e <__stack+0xef> if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta 336: 80 e0 ldi r24, 0x00 ; 0 338: 90 e0 ldi r25, 0x00 ; 0 33a: a0 e8 ldi r26, 0x80 ; 128 33c: bf e3 ldi r27, 0x3F ; 63 33e: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <_edata> 342: 90 93 61 00 sts 0x0061, r25 ; 0x800061 <_edata+0x1> 346: a0 93 62 00 sts 0x0062, r26 ; 0x800062 <_edata+0x2> 34a: b0 93 63 00 sts 0x0063, r27 ; 0x800063 <_edata+0x3> if (firemode==2){//modo economico while(1){ if (nextfire!=0) nextfire--; i=0; 34e: d0 e0 ldi r29, 0x00 ; 0 {//primeiro tiro, de aceleração nextfire=1-((1-atraso)*(nextfire/nextpreset));//calcula o tempo a ser compensado no tempo de tiro if ((nextfire<atraso)||(nextfire>1)) nextfire=1;//evita treta for (j=0;j<timeon*nextfire;j++) 350: 6d 2f mov r22, r29 352: 70 e0 ldi r23, 0x00 ; 0 354: 80 e0 ldi r24, 0x00 ; 0 356: 90 e0 ldi r25, 0x00 ; 0 358: a5 d2 rcall .+1354 ; 0x8a4 <__floatsisf> 35a: 6b 01 movw r12, r22 35c: 7c 01 movw r14, r24 35e: 80 91 67 00 lds r24, 0x0067 ; 0x800067 <timeon> 362: 68 2f mov r22, r24 364: 70 e0 ldi r23, 0x00 ; 0 366: 80 e0 ldi r24, 0x00 ; 0 368: 90 e0 ldi r25, 0x00 ; 0 36a: 9c d2 rcall .+1336 ; 0x8a4 <__floatsisf> 36c: 20 91 60 00 lds r18, 0x0060 ; 0x800060 <_edata> 370: 30 91 61 00 lds r19, 0x0061 ; 0x800061 <_edata+0x1> 374: 40 91 62 00 lds r20, 0x0062 ; 0x800062 <_edata+0x2> 378: 50 91 63 00 lds r21, 0x0063 ; 0x800063 <_edata+0x3> 37c: 47 d3 rcall .+1678 ; 0xa0c <__mulsf3> 37e: 9b 01 movw r18, r22 380: ac 01 movw r20, r24 382: c7 01 movw r24, r14 384: b6 01 movw r22, r12 386: 20 d2 rcall .+1088 ; 0x7c8 <__cmpsf2> 388: 87 ff sbrs r24, 7 38a: 2b c0 rjmp .+86 ; 0x3e2 <__stack+0x183> 38c: 89 ef ldi r24, 0xF9 ; 249 38e: 90 e0 ldi r25, 0x00 ; 0 390: 01 97 sbiw r24, 0x01 ; 1 392: f1 f7 brne .-4 ; 0x390 <__stack+0x131> 394: 00 c0 rjmp .+0 ; 0x396 <__stack+0x137> 396: 00 00 nop 398: df 5f subi r29, 0xFF ; 255 39a: da cf rjmp .-76 ; 0x350 <__stack+0xf1> 39c: d0 e0 ldi r29, 0x00 ; 0 { _delay_ms(1); }//tempo que cada ciclo leva pra se completar }else{ for (j=0;j<(timeon*atraso);j++) 39e: 6d 2f mov r22, r29 3a0: 70 e0 ldi r23, 0x00 ; 0 3a2: 80 e0 ldi r24, 0x00 ; 0 3a4: 90 e0 ldi r25, 0x00 ; 0 3a6: 7e d2 rcall .+1276 ; 0x8a4 <__floatsisf> 3a8: 6b 01 movw r12, r22 3aa: 7c 01 movw r14, r24 3ac: 80 91 67 00 lds r24, 0x0067 ; 0x800067 <timeon> 3b0: 68 2f mov r22, r24 3b2: 70 e0 ldi r23, 0x00 ; 0 3b4: 80 e0 ldi r24, 0x00 ; 0 3b6: 90 e0 ldi r25, 0x00 ; 0 3b8: 75 d2 rcall .+1258 ; 0x8a4 <__floatsisf> 3ba: 26 e6 ldi r18, 0x66 ; 102 3bc: 36 e6 ldi r19, 0x66 ; 102 3be: 46 e6 ldi r20, 0x66 ; 102 3c0: 5f e3 ldi r21, 0x3F ; 63 3c2: 24 d3 rcall .+1608 ; 0xa0c <__mulsf3> 3c4: 9b 01 movw r18, r22 3c6: ac 01 movw r20, r24 3c8: c7 01 movw r24, r14 3ca: b6 01 movw r22, r12 3cc: fd d1 rcall .+1018 ; 0x7c8 <__cmpsf2> 3ce: 87 ff sbrs r24, 7 3d0: 08 c0 rjmp .+16 ; 0x3e2 <__stack+0x183> 3d2: 89 ef ldi r24, 0xF9 ; 249 3d4: 90 e0 ldi r25, 0x00 ; 0 3d6: 01 97 sbiw r24, 0x01 ; 1 3d8: f1 f7 brne .-4 ; 0x3d6 <__stack+0x177> 3da: 00 c0 rjmp .+0 ; 0x3dc <__stack+0x17d> 3dc: 00 00 nop 3de: df 5f subi r29, 0xFF ; 255 3e0: de cf rjmp .-68 ; 0x39e <__stack+0x13f> if (i>debouncedelay) { bit_set(Motor,Pinmotor);//liga motor if ((bit_get(Trigger,Pintrigger))){ for (i=0;i<tiros;i++)//quantidade de tiros efetuado 3e2: cf 5f subi r28, 0xFF ; 255 3e4: 6e cf rjmp .-292 ; 0x2c2 <__stack+0x63> _delay_ms(1); }//tempo que cada ciclo leva pra se completar }//segundo tiro, motor acelerado } while(bit_get(Trigger,Pintrigger)){ 3e6: b1 9b sbis 0x16, 1 ; 22 3e8: 23 c0 rjmp .+70 ; 0x430 <__LOCK_REGION_LENGTH__+0x30> 3ea: d0 e0 ldi r29, 0x00 ; 0 for (j=0;j<(timeon*atraso);j++) 3ec: 6d 2f mov r22, r29 3ee: 70 e0 ldi r23, 0x00 ; 0 3f0: 80 e0 ldi r24, 0x00 ; 0 3f2: 90 e0 ldi r25, 0x00 ; 0 3f4: 57 d2 rcall .+1198 ; 0x8a4 <__floatsisf> 3f6: 6b 01 movw r12, r22 3f8: 7c 01 movw r14, r24 3fa: 80 91 67 00 lds r24, 0x0067 ; 0x800067 <timeon> 3fe: 68 2f mov r22, r24 400: 70 e0 ldi r23, 0x00 ; 0 402: 80 e0 ldi r24, 0x00 ; 0 404: 90 e0 ldi r25, 0x00 ; 0 406: 4e d2 rcall .+1180 ; 0x8a4 <__floatsisf> 408: 26 e6 ldi r18, 0x66 ; 102 40a: 36 e6 ldi r19, 0x66 ; 102 40c: 46 e6 ldi r20, 0x66 ; 102 40e: 5f e3 ldi r21, 0x3F ; 63 410: fd d2 rcall .+1530 ; 0xa0c <__mulsf3> 412: 9b 01 movw r18, r22 414: ac 01 movw r20, r24 416: c7 01 movw r24, r14 418: b6 01 movw r22, r12 41a: d6 d1 rcall .+940 ; 0x7c8 <__cmpsf2> 41c: 87 ff sbrs r24, 7 41e: e3 cf rjmp .-58 ; 0x3e6 <__stack+0x187> 420: 89 ef ldi r24, 0xF9 ; 249 422: 90 e0 ldi r25, 0x00 ; 0 424: 01 97 sbiw r24, 0x01 ; 1 426: f1 f7 brne .-4 ; 0x424 <__LOCK_REGION_LENGTH__+0x24> 428: 00 c0 rjmp .+0 ; 0x42a <__LOCK_REGION_LENGTH__+0x2a> 42a: 00 00 nop 42c: df 5f subi r29, 0xFF ; 255 42e: de cf rjmp .-68 ; 0x3ec <__stack+0x18d> { _delay_ms(1); }//tempo que cada ciclo leva pra se completar } bit_clear(Motor,Pinmotor);//desliga motor 430: c0 98 cbi 0x18, 0 ; 24 nextfire=nextpreset;//reseta a variável 432: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <_edata> 436: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <_edata+0x1> 43a: 10 92 62 00 sts 0x0062, r1 ; 0x800062 <_edata+0x2> 43e: 10 92 63 00 sts 0x0063, r1 ; 0x800063 <_edata+0x3> 442: 2f cf rjmp .-418 ; 0x2a2 <__stack+0x43> } }else bit_clear(Motor,Pinmotor);//desliga motor 444: c0 98 cbi 0x18, 0 ; 24 446: 2d cf rjmp .-422 ; 0x2a2 <__stack+0x43> } } } } 448: df 91 pop r29 44a: cf 91 pop r28 44c: ff 90 pop r15 44e: ef 90 pop r14 450: df 90 pop r13 452: cf 90 pop r12 454: 08 95 ret 00000456 <barulho>: } while (bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado } } void barulho(){ 456: 82 e3 ldi r24, 0x32 ; 50 for (uint8_t k=0;k<50;k++) { bit_set(Motor,Pinmotor); 458: c0 9a sbi 0x18, 0 ; 24 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 45a: 91 e2 ldi r25, 0x21 ; 33 45c: 9a 95 dec r25 45e: f1 f7 brne .-4 ; 0x45c <barulho+0x6> 460: 00 00 nop _delay_us(100); bit_clear(Motor,Pinmotor); 462: c0 98 cbi 0x18, 0 ; 24 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 464: e9 ef ldi r30, 0xF9 ; 249 466: f0 e0 ldi r31, 0x00 ; 0 468: 31 97 sbiw r30, 0x01 ; 1 46a: f1 f7 brne .-4 ; 0x468 <barulho+0x12> 46c: 00 c0 rjmp .+0 ; 0x46e <barulho+0x18> 46e: 00 00 nop 470: 81 50 subi r24, 0x01 ; 1 } } void barulho(){ for (uint8_t k=0;k<50;k++) 472: 91 f7 brne .-28 ; 0x458 <barulho+0x2> bit_set(Motor,Pinmotor); _delay_us(100); bit_clear(Motor,Pinmotor); _delay_ms(1); }//faz barulho 474: 08 95 ret 00000476 <conf>: } } void conf(){ 476: cf 93 push r28 478: df 93 push r29 uint8_t flag=1; firemode=0;//limpa firemode 47a: 10 92 65 00 sts 0x0065, r1 ; 0x800065 <firemode> flag=1;//reseta flag do { barulho(); 47e: eb df rcall .-42 ; 0x456 <barulho> } while (bit_get(Trigger,Pintrigger)); //espera usuário parar de apertar pra entrar no menu 480: b1 99 sbic 0x16, 1 ; 22 482: fd cf rjmp .-6 ; 0x47e <conf+0x8> 484: d1 e0 ldi r29, 0x01 ; 1 do { i=0;//reseta variavel 486: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> while(bit_get(Trigger,Pintrigger)){ 48a: b1 9b sbis 0x16, 1 ; 22 48c: 23 c0 rjmp .+70 ; 0x4d4 <conf+0x5e> i++; 48e: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 492: 8f 5f subi r24, 0xFF ; 255 494: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 498: 87 ea ldi r24, 0xA7 ; 167 49a: 91 e6 ldi r25, 0x61 ; 97 49c: 01 97 sbiw r24, 0x01 ; 1 49e: f1 f7 brne .-4 ; 0x49c <conf+0x26> 4a0: 00 c0 rjmp .+0 ; 0x4a2 <conf+0x2c> 4a2: 00 00 nop _delay_ms(100); if (i>30)//quebra o loop se o gatilho for pressionado 4a4: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 4a8: 8f 31 cpi r24, 0x1F ; 31 4aa: 78 f3 brcs .-34 ; 0x48a <conf+0x14> { flag=0;//sinaliza final da função if (firemode>3) firemode=1; 4ac: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 4b0: 84 30 cpi r24, 0x04 ; 4 4b2: 10 f0 brcs .+4 ; 0x4b8 <conf+0x42> 4b4: d0 93 65 00 sts 0x0065, r29 ; 0x800065 <firemode> if (firemode==0) firemode=1;//evita treta 4b8: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 4bc: 81 11 cpse r24, r1 4be: 02 c0 rjmp .+4 ; 0x4c4 <conf+0x4e> 4c0: d0 93 65 00 sts 0x0065, r29 ; 0x800065 <firemode> eeprom_write_byte((uint8_t*) 12, firemode);//grava na memo 4c4: 60 91 65 00 lds r22, 0x0065 ; 0x800065 <firemode> 4c8: 70 e0 ldi r23, 0x00 ; 0 4ca: 8c e0 ldi r24, 0x0C ; 12 4cc: 90 e0 ldi r25, 0x00 ; 0 4ce: 11 d3 rcall .+1570 ; 0xaf2 <eeprom_write_byte> while(bit_get(Trigger,Pintrigger)){ i++; _delay_ms(100); if (i>30)//quebra o loop se o gatilho for pressionado { flag=0;//sinaliza final da função 4d0: c0 e0 ldi r28, 0x00 ; 0 if (firemode>3) firemode=1; if (firemode==0) firemode=1;//evita treta eeprom_write_byte((uint8_t*) 12, firemode);//grava na memo break; 4d2: 01 c0 rjmp .+2 ; 0x4d6 <conf+0x60> 4d4: c1 e0 ldi r28, 0x01 ; 1 } }//conta o tempo que o gatilho foi apertado if (i>2)//debounce 4d6: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 4da: 83 30 cpi r24, 0x03 ; 3 4dc: f8 f0 brcs .+62 ; 0x51c <conf+0xa6> { if (i>30)//maior que 4 segundos 4de: 8f 31 cpi r24, 0x1F ; 31 4e0: c0 f0 brcs .+48 ; 0x512 <conf+0x9c> { for (i=0;i<firemode;i++) 4e2: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> 4e6: 90 91 68 00 lds r25, 0x0068 ; 0x800068 <i> 4ea: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 4ee: 98 17 cp r25, r24 4f0: a8 f4 brcc .+42 ; 0x51c <conf+0xa6> { barulho(); 4f2: b1 df rcall .-158 ; 0x456 <barulho> 4f4: 9f e9 ldi r25, 0x9F ; 159 4f6: e6 e8 ldi r30, 0x86 ; 134 4f8: f1 e0 ldi r31, 0x01 ; 1 4fa: 91 50 subi r25, 0x01 ; 1 4fc: e0 40 sbci r30, 0x00 ; 0 4fe: f0 40 sbci r31, 0x00 ; 0 500: e1 f7 brne .-8 ; 0x4fa <conf+0x84> 502: 00 c0 rjmp .+0 ; 0x504 <conf+0x8e> 504: 00 00 nop if (i>2)//debounce { if (i>30)//maior que 4 segundos { for (i=0;i<firemode;i++) 506: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 50a: 8f 5f subi r24, 0xFF ; 255 50c: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 510: ea cf rjmp .-44 ; 0x4e6 <conf+0x70> barulho(); _delay_ms(500);//indica o modo configurado } }else{ firemode++; 512: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 516: 8f 5f subi r24, 0xFF ; 255 518: 80 93 65 00 sts 0x0065, r24 ; 0x800065 <firemode> } } } while (flag);//loop de configuração do modo 51c: c1 11 cpse r28, r1 51e: b3 cf rjmp .-154 ; 0x486 <conf+0x10> do { barulho(); 520: 9a df rcall .-204 ; 0x456 <barulho> } while (bit_get(Trigger,Pintrigger)); //espera usuário parar de apertar pra sair do menu 522: b1 99 sbic 0x16, 1 ; 22 524: fd cf rjmp .-6 ; 0x520 <conf+0xaa> if (firemode!=1) 526: 80 91 65 00 lds r24, 0x0065 ; 0x800065 <firemode> 52a: 81 30 cpi r24, 0x01 ; 1 52c: 09 f4 brne .+2 ; 0x530 <conf+0xba> 52e: b1 c0 rjmp .+354 ; 0x692 <conf+0x21c> flag=1;//seta flag do loop do{ i=0; 530: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> while(bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 534: 91 e0 ldi r25, 0x01 ; 1 536: b1 9b sbis 0x16, 1 ; 22 538: 20 c0 rjmp .+64 ; 0x57a <conf+0x104> i++; 53a: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 53e: 8f 5f subi r24, 0xFF ; 255 540: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 544: e9 ef ldi r30, 0xF9 ; 249 546: f0 e0 ldi r31, 0x00 ; 0 548: 31 97 sbiw r30, 0x01 ; 1 54a: f1 f7 brne .-4 ; 0x548 <conf+0xd2> 54c: 00 c0 rjmp .+0 ; 0x54e <conf+0xd8> 54e: 00 00 nop _delay_ms(1); if (i>debouncedelay) 550: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 554: 86 30 cpi r24, 0x06 ; 6 556: 78 f3 brcs .-34 ; 0x536 <conf+0xc0> { bit_set(Motor,Pinmotor);//liga motor 558: c0 9a sbi 0x18, 0 ; 24 do { i++; 55a: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 55e: 8f 5f subi r24, 0xFF ; 255 560: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 564: 89 ef ldi r24, 0xF9 ; 249 566: 90 e0 ldi r25, 0x00 ; 0 568: 01 97 sbiw r24, 0x01 ; 1 56a: f1 f7 brne .-4 ; 0x568 <conf+0xf2> 56c: 00 c0 rjmp .+0 ; 0x56e <conf+0xf8> 56e: 00 00 nop _delay_ms(1); } while (bit_get(Trigger,Pintrigger)); 570: b1 99 sbic 0x16, 1 ; 22 572: f3 cf rjmp .-26 ; 0x55a <conf+0xe4> bit_clear(Motor,Pinmotor);//desliga motor 574: c0 98 cbi 0x18, 0 ; 24 flag=0; 576: 90 e0 ldi r25, 0x00 ; 0 578: de cf rjmp .-68 ; 0x536 <conf+0xc0> } }//dois tiros pra configurar o tempo de tiro }while(flag); 57a: 91 11 cpse r25, r1 57c: d9 cf rjmp .-78 ; 0x530 <conf+0xba> flag=1;//seta flag do loop do { i=0; 57e: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> while(bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 582: 91 e0 ldi r25, 0x01 ; 1 584: b1 9b sbis 0x16, 1 ; 22 586: 2a c0 rjmp .+84 ; 0x5dc <conf+0x166> i++; 588: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 58c: 8f 5f subi r24, 0xFF ; 255 58e: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 592: e9 ef ldi r30, 0xF9 ; 249 594: f0 e0 ldi r31, 0x00 ; 0 596: 31 97 sbiw r30, 0x01 ; 1 598: f1 f7 brne .-4 ; 0x596 <conf+0x120> 59a: 00 c0 rjmp .+0 ; 0x59c <conf+0x126> 59c: 00 00 nop _delay_ms(1); if (i>debouncedelay) 59e: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 5a2: 86 30 cpi r24, 0x06 ; 6 5a4: 78 f3 brcs .-34 ; 0x584 <conf+0x10e> { bit_set(Motor,Pinmotor);//liga motor 5a6: c0 9a sbi 0x18, 0 ; 24 do { i++; 5a8: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 5ac: 8f 5f subi r24, 0xFF ; 255 5ae: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 5b2: 89 ef ldi r24, 0xF9 ; 249 5b4: 90 e0 ldi r25, 0x00 ; 0 5b6: 01 97 sbiw r24, 0x01 ; 1 5b8: f1 f7 brne .-4 ; 0x5b6 <conf+0x140> 5ba: 00 c0 rjmp .+0 ; 0x5bc <conf+0x146> 5bc: 00 00 nop _delay_ms(1); } while (bit_get(Trigger,Pintrigger)); 5be: b1 99 sbic 0x16, 1 ; 22 5c0: f3 cf rjmp .-26 ; 0x5a8 <conf+0x132> bit_clear(Motor,Pinmotor);//desliga motor 5c2: c0 98 cbi 0x18, 0 ; 24 flag=0;//avisa que houve um pressionamento válido eeprom_write_byte((uint8_t*) 11, i);//salva o delay na eeprom 5c4: 60 91 68 00 lds r22, 0x0068 ; 0x800068 <i> 5c8: 70 e0 ldi r23, 0x00 ; 0 5ca: 8b e0 ldi r24, 0x0B ; 11 5cc: 90 e0 ldi r25, 0x00 ; 0 5ce: 91 d2 rcall .+1314 ; 0xaf2 <eeprom_write_byte> timeon=i;//atualiza variável 5d0: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 5d4: 80 93 67 00 sts 0x0067, r24 ; 0x800067 <timeon> i++; _delay_ms(1); } while (bit_get(Trigger,Pintrigger)); bit_clear(Motor,Pinmotor);//desliga motor flag=0;//avisa que houve um pressionamento válido 5d8: 90 e0 ldi r25, 0x00 ; 0 5da: d4 cf rjmp .-88 ; 0x584 <conf+0x10e> eeprom_write_byte((uint8_t*) 11, i);//salva o delay na eeprom timeon=i;//atualiza variável } } } while (flag);//loop de configuração de tempo de disparo 5dc: 91 11 cpse r25, r1 5de: cf cf rjmp .-98 ; 0x57e <conf+0x108> 5e0: 9f e3 ldi r25, 0x3F ; 63 5e2: ed e0 ldi r30, 0x0D ; 13 5e4: f3 e0 ldi r31, 0x03 ; 3 5e6: 91 50 subi r25, 0x01 ; 1 5e8: e0 40 sbci r30, 0x00 ; 0 5ea: f0 40 sbci r31, 0x00 ; 0 5ec: e1 f7 brne .-8 ; 0x5e6 <conf+0x170> 5ee: 00 c0 rjmp .+0 ; 0x5f0 <conf+0x17a> 5f0: 00 00 nop _delay_ms(1000); do { barulho(); 5f2: 31 df rcall .-414 ; 0x456 <barulho> } while (bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado 5f4: b1 99 sbic 0x16, 1 ; 22 5f6: fd cf rjmp .-6 ; 0x5f2 <conf+0x17c> flag=1;//reseta flag tiros=0; 5f8: 10 92 66 00 sts 0x0066, r1 ; 0x800066 <tiros> while(bit_get(Trigger,Pintrigger)){ i++; _delay_ms(100); if (i>30) { if (tiros==0) tiros=3;//evita que nenhuma info inválida passe à frente 5fc: d3 e0 ldi r29, 0x03 ; 3 flag=1;//reseta flag tiros=0; do { i=0;//reseta variavel 5fe: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> while(bit_get(Trigger,Pintrigger)){ 602: b1 9b sbis 0x16, 1 ; 22 604: 1d c0 rjmp .+58 ; 0x640 <conf+0x1ca> i++; 606: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 60a: 8f 5f subi r24, 0xFF ; 255 60c: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 610: 87 ea ldi r24, 0xA7 ; 167 612: 91 e6 ldi r25, 0x61 ; 97 614: 01 97 sbiw r24, 0x01 ; 1 616: f1 f7 brne .-4 ; 0x614 <conf+0x19e> 618: 00 c0 rjmp .+0 ; 0x61a <conf+0x1a4> 61a: 00 00 nop _delay_ms(100); if (i>30) 61c: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 620: 8f 31 cpi r24, 0x1F ; 31 622: 78 f3 brcs .-34 ; 0x602 <conf+0x18c> { if (tiros==0) tiros=3;//evita que nenhuma info inválida passe à frente 624: 80 91 66 00 lds r24, 0x0066 ; 0x800066 <tiros> 628: 81 11 cpse r24, r1 62a: 02 c0 rjmp .+4 ; 0x630 <conf+0x1ba> 62c: d0 93 66 00 sts 0x0066, r29 ; 0x800066 <tiros> flag=0;//sinaliza final da função eeprom_write_byte((uint8_t*) 10, tiros);//grava na memo 630: 60 91 66 00 lds r22, 0x0066 ; 0x800066 <tiros> 634: 70 e0 ldi r23, 0x00 ; 0 636: 8a e0 ldi r24, 0x0A ; 10 638: 90 e0 ldi r25, 0x00 ; 0 63a: 5b d2 rcall .+1206 ; 0xaf2 <eeprom_write_byte> i++; _delay_ms(100); if (i>30) { if (tiros==0) tiros=3;//evita que nenhuma info inválida passe à frente flag=0;//sinaliza final da função 63c: c0 e0 ldi r28, 0x00 ; 0 eeprom_write_byte((uint8_t*) 10, tiros);//grava na memo break; 63e: 01 c0 rjmp .+2 ; 0x642 <conf+0x1cc> 640: c1 e0 ldi r28, 0x01 ; 1 }//se for segurado o gatilho, quebra o loop }//conta o tempo que o gatilho foi apertado if (i>2)//debounce 642: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 646: 83 30 cpi r24, 0x03 ; 3 648: f8 f0 brcs .+62 ; 0x688 <conf+0x212> { if (i>30)//maior que 4 segundos 64a: 8f 31 cpi r24, 0x1F ; 31 64c: c0 f0 brcs .+48 ; 0x67e <conf+0x208> { for (i=0;i<tiros;i++) 64e: 10 92 68 00 sts 0x0068, r1 ; 0x800068 <i> 652: 90 91 68 00 lds r25, 0x0068 ; 0x800068 <i> 656: 80 91 66 00 lds r24, 0x0066 ; 0x800066 <tiros> 65a: 98 17 cp r25, r24 65c: a8 f4 brcc .+42 ; 0x688 <conf+0x212> { barulho(); 65e: fb de rcall .-522 ; 0x456 <barulho> 660: 9f e9 ldi r25, 0x9F ; 159 662: e6 e8 ldi r30, 0x86 ; 134 664: f1 e0 ldi r31, 0x01 ; 1 666: 91 50 subi r25, 0x01 ; 1 668: e0 40 sbci r30, 0x00 ; 0 66a: f0 40 sbci r31, 0x00 ; 0 66c: e1 f7 brne .-8 ; 0x666 <conf+0x1f0> 66e: 00 c0 rjmp .+0 ; 0x670 <conf+0x1fa> 670: 00 00 nop if (i>2)//debounce { if (i>30)//maior que 4 segundos { for (i=0;i<tiros;i++) 672: 80 91 68 00 lds r24, 0x0068 ; 0x800068 <i> 676: 8f 5f subi r24, 0xFF ; 255 678: 80 93 68 00 sts 0x0068, r24 ; 0x800068 <i> 67c: ea cf rjmp .-44 ; 0x652 <conf+0x1dc> { barulho(); _delay_ms(500);//indica a quantidade de tiros configuradas } }else tiros++; 67e: 80 91 66 00 lds r24, 0x0066 ; 0x800066 <tiros> 682: 8f 5f subi r24, 0xFF ; 255 684: 80 93 66 00 sts 0x0066, r24 ; 0x800066 <tiros> } } while (flag);//loop de configuração de quantidade de disparos 688: c1 11 cpse r28, r1 68a: b9 cf rjmp .-142 ; 0x5fe <conf+0x188> do { barulho(); 68c: e4 de rcall .-568 ; 0x456 <barulho> } while (bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado 68e: b1 99 sbic 0x16, 1 ; 22 690: fd cf rjmp .-6 ; 0x68c <conf+0x216> } } 692: df 91 pop r29 694: cf 91 pop r28 696: 08 95 ret 00000698 <main>: float nextfire=nextpreset; int main(void) { bit_clear(Ptrigger,Pintrigger);//seta ddr do gatilho como entrada 698: b9 98 cbi 0x17, 1 ; 23 bit_set(Omotor,Pinmotor);//seta ddr do motor como saída 69a: b8 9a sbi 0x17, 0 ; 23 bit_clear(Motor,Pinmotor);//garante que o motor ficará desligado 69c: c0 98 cbi 0x18, 0 ; 24 barulho(); 69e: db de rcall .-586 ; 0x456 <barulho> 6a0: 8f e4 ldi r24, 0x4F ; 79 6a2: 93 ec ldi r25, 0xC3 ; 195 6a4: 01 97 sbiw r24, 0x01 ; 1 6a6: f1 f7 brne .-4 ; 0x6a4 <main+0xc> 6a8: 00 c0 rjmp .+0 ; 0x6aa <main+0x12> 6aa: 00 00 nop _delay_ms(200); barulho(); 6ac: d4 de rcall .-600 ; 0x456 <barulho> while(1){ check=0; 6ae: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <check> do { check++; 6b2: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <check> 6b6: 8f 5f subi r24, 0xFF ; 255 6b8: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <check> 6bc: 87 ee ldi r24, 0xE7 ; 231 6be: 93 e0 ldi r25, 0x03 ; 3 6c0: 01 97 sbiw r24, 0x01 ; 1 6c2: f1 f7 brne .-4 ; 0x6c0 <main+0x28> 6c4: 00 c0 rjmp .+0 ; 0x6c6 <main+0x2e> 6c6: 00 00 nop 6c8: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <check> _delay_ms(4); } while ((bit_get(Trigger,Pintrigger)) && (check<200)); 6cc: b1 9b sbis 0x16, 1 ; 22 6ce: 02 c0 rjmp .+4 ; 0x6d4 <main+0x3c> 6d0: 88 3c cpi r24, 0xC8 ; 200 6d2: 78 f3 brcs .-34 ; 0x6b2 <main+0x1a> if (check<200) 6d4: 88 3c cpi r24, 0xC8 ; 200 6d6: 88 f4 brcc .+34 ; 0x6fa <main+0x62> { tiros=eeprom_read_byte((uint8_t*)10);//lê a quantidade de tiros configuradas 6d8: 8a e0 ldi r24, 0x0A ; 10 6da: 90 e0 ldi r25, 0x00 ; 0 6dc: 02 d2 rcall .+1028 ; 0xae2 <eeprom_read_byte> 6de: 80 93 66 00 sts 0x0066, r24 ; 0x800066 <tiros> timeon=eeprom_read_byte((uint8_t*)11);//carrega o tempo de tiro da memória 6e2: 8b e0 ldi r24, 0x0B ; 11 6e4: 90 e0 ldi r25, 0x00 ; 0 6e6: fd d1 rcall .+1018 ; 0xae2 <eeprom_read_byte> 6e8: 80 93 67 00 sts 0x0067, r24 ; 0x800067 <timeon> firemode=eeprom_read_byte((uint8_t*)12);//lê a quantidade de tiros configuradas 6ec: 8c e0 ldi r24, 0x0C ; 12 6ee: 90 e0 ldi r25, 0x00 ; 0 6f0: f8 d1 rcall .+1008 ; 0xae2 <eeprom_read_byte> 6f2: 80 93 65 00 sts 0x0065, r24 ; 0x800065 <firemode> normal();//funcionamento normal 6f6: a4 dc rcall .-1720 ; 0x40 <normal> 6f8: da cf rjmp .-76 ; 0x6ae <main+0x16> }else { conf();//entra no modo de configuração 6fa: bd de rcall .-646 ; 0x476 <conf> 6fc: d8 cf rjmp .-80 ; 0x6ae <main+0x16> 000006fe <__subsf3>: 6fe: 50 58 subi r21, 0x80 ; 128 00000700 <__addsf3>: 700: bb 27 eor r27, r27 702: aa 27 eor r26, r26 704: 0e d0 rcall .+28 ; 0x722 <__addsf3x> 706: 44 c1 rjmp .+648 ; 0x990 <__fp_round> 708: 35 d1 rcall .+618 ; 0x974 <__fp_pscA> 70a: 30 f0 brcs .+12 ; 0x718 <__addsf3+0x18> 70c: 3a d1 rcall .+628 ; 0x982 <__fp_pscB> 70e: 20 f0 brcs .+8 ; 0x718 <__addsf3+0x18> 710: 31 f4 brne .+12 ; 0x71e <__addsf3+0x1e> 712: 9f 3f cpi r25, 0xFF ; 255 714: 11 f4 brne .+4 ; 0x71a <__addsf3+0x1a> 716: 1e f4 brtc .+6 ; 0x71e <__addsf3+0x1e> 718: 2a c1 rjmp .+596 ; 0x96e <__fp_nan> 71a: 0e f4 brtc .+2 ; 0x71e <__addsf3+0x1e> 71c: e0 95 com r30 71e: e7 fb bst r30, 7 720: 20 c1 rjmp .+576 ; 0x962 <__fp_inf> 00000722 <__addsf3x>: 722: e9 2f mov r30, r25 724: 46 d1 rcall .+652 ; 0x9b2 <__fp_split3> 726: 80 f3 brcs .-32 ; 0x708 <__addsf3+0x8> 728: ba 17 cp r27, r26 72a: 62 07 cpc r22, r18 72c: 73 07 cpc r23, r19 72e: 84 07 cpc r24, r20 730: 95 07 cpc r25, r21 732: 18 f0 brcs .+6 ; 0x73a <__addsf3x+0x18> 734: 71 f4 brne .+28 ; 0x752 <__addsf3x+0x30> 736: 9e f5 brtc .+102 ; 0x79e <__addsf3x+0x7c> 738: 5e c1 rjmp .+700 ; 0x9f6 <__fp_zero> 73a: 0e f4 brtc .+2 ; 0x73e <__addsf3x+0x1c> 73c: e0 95 com r30 73e: 0b 2e mov r0, r27 740: ba 2f mov r27, r26 742: a0 2d mov r26, r0 744: 0b 01 movw r0, r22 746: b9 01 movw r22, r18 748: 90 01 movw r18, r0 74a: 0c 01 movw r0, r24 74c: ca 01 movw r24, r20 74e: a0 01 movw r20, r0 750: 11 24 eor r1, r1 752: ff 27 eor r31, r31 754: 59 1b sub r21, r25 756: 99 f0 breq .+38 ; 0x77e <__addsf3x+0x5c> 758: 59 3f cpi r21, 0xF9 ; 249 75a: 50 f4 brcc .+20 ; 0x770 <__addsf3x+0x4e> 75c: 50 3e cpi r21, 0xE0 ; 224 75e: 68 f1 brcs .+90 ; 0x7ba <__addsf3x+0x98> 760: 1a 16 cp r1, r26 762: f0 40 sbci r31, 0x00 ; 0 764: a2 2f mov r26, r18 766: 23 2f mov r18, r19 768: 34 2f mov r19, r20 76a: 44 27 eor r20, r20 76c: 58 5f subi r21, 0xF8 ; 248 76e: f3 cf rjmp .-26 ; 0x756 <__addsf3x+0x34> 770: 46 95 lsr r20 772: 37 95 ror r19 774: 27 95 ror r18 776: a7 95 ror r26 778: f0 40 sbci r31, 0x00 ; 0 77a: 53 95 inc r21 77c: c9 f7 brne .-14 ; 0x770 <__addsf3x+0x4e> 77e: 7e f4 brtc .+30 ; 0x79e <__addsf3x+0x7c> 780: 1f 16 cp r1, r31 782: ba 0b sbc r27, r26 784: 62 0b sbc r22, r18 786: 73 0b sbc r23, r19 788: 84 0b sbc r24, r20 78a: ba f0 brmi .+46 ; 0x7ba <__addsf3x+0x98> 78c: 91 50 subi r25, 0x01 ; 1 78e: a1 f0 breq .+40 ; 0x7b8 <__addsf3x+0x96> 790: ff 0f add r31, r31 792: bb 1f adc r27, r27 794: 66 1f adc r22, r22 796: 77 1f adc r23, r23 798: 88 1f adc r24, r24 79a: c2 f7 brpl .-16 ; 0x78c <__addsf3x+0x6a> 79c: 0e c0 rjmp .+28 ; 0x7ba <__addsf3x+0x98> 79e: ba 0f add r27, r26 7a0: 62 1f adc r22, r18 7a2: 73 1f adc r23, r19 7a4: 84 1f adc r24, r20 7a6: 48 f4 brcc .+18 ; 0x7ba <__addsf3x+0x98> 7a8: 87 95 ror r24 7aa: 77 95 ror r23 7ac: 67 95 ror r22 7ae: b7 95 ror r27 7b0: f7 95 ror r31 7b2: 9e 3f cpi r25, 0xFE ; 254 7b4: 08 f0 brcs .+2 ; 0x7b8 <__addsf3x+0x96> 7b6: b3 cf rjmp .-154 ; 0x71e <__addsf3+0x1e> 7b8: 93 95 inc r25 7ba: 88 0f add r24, r24 7bc: 08 f0 brcs .+2 ; 0x7c0 <__addsf3x+0x9e> 7be: 99 27 eor r25, r25 7c0: ee 0f add r30, r30 7c2: 97 95 ror r25 7c4: 87 95 ror r24 7c6: 08 95 ret 000007c8 <__cmpsf2>: 7c8: a8 d0 rcall .+336 ; 0x91a <__fp_cmp> 7ca: 08 f4 brcc .+2 ; 0x7ce <__cmpsf2+0x6> 7cc: 81 e0 ldi r24, 0x01 ; 1 7ce: 08 95 ret 000007d0 <__divsf3>: 7d0: 0c d0 rcall .+24 ; 0x7ea <__divsf3x> 7d2: de c0 rjmp .+444 ; 0x990 <__fp_round> 7d4: d6 d0 rcall .+428 ; 0x982 <__fp_pscB> 7d6: 40 f0 brcs .+16 ; 0x7e8 <__divsf3+0x18> 7d8: cd d0 rcall .+410 ; 0x974 <__fp_pscA> 7da: 30 f0 brcs .+12 ; 0x7e8 <__divsf3+0x18> 7dc: 21 f4 brne .+8 ; 0x7e6 <__divsf3+0x16> 7de: 5f 3f cpi r21, 0xFF ; 255 7e0: 19 f0 breq .+6 ; 0x7e8 <__divsf3+0x18> 7e2: bf c0 rjmp .+382 ; 0x962 <__fp_inf> 7e4: 51 11 cpse r21, r1 7e6: 08 c1 rjmp .+528 ; 0x9f8 <__fp_szero> 7e8: c2 c0 rjmp .+388 ; 0x96e <__fp_nan> 000007ea <__divsf3x>: 7ea: e3 d0 rcall .+454 ; 0x9b2 <__fp_split3> 7ec: 98 f3 brcs .-26 ; 0x7d4 <__divsf3+0x4> 000007ee <__divsf3_pse>: 7ee: 99 23 and r25, r25 7f0: c9 f3 breq .-14 ; 0x7e4 <__divsf3+0x14> 7f2: 55 23 and r21, r21 7f4: b1 f3 breq .-20 ; 0x7e2 <__divsf3+0x12> 7f6: 95 1b sub r25, r21 7f8: 55 0b sbc r21, r21 7fa: bb 27 eor r27, r27 7fc: aa 27 eor r26, r26 7fe: 62 17 cp r22, r18 800: 73 07 cpc r23, r19 802: 84 07 cpc r24, r20 804: 38 f0 brcs .+14 ; 0x814 <__divsf3_pse+0x26> 806: 9f 5f subi r25, 0xFF ; 255 808: 5f 4f sbci r21, 0xFF ; 255 80a: 22 0f add r18, r18 80c: 33 1f adc r19, r19 80e: 44 1f adc r20, r20 810: aa 1f adc r26, r26 812: a9 f3 breq .-22 ; 0x7fe <__divsf3_pse+0x10> 814: 33 d0 rcall .+102 ; 0x87c <__divsf3_pse+0x8e> 816: 0e 2e mov r0, r30 818: 3a f0 brmi .+14 ; 0x828 <__divsf3_pse+0x3a> 81a: e0 e8 ldi r30, 0x80 ; 128 81c: 30 d0 rcall .+96 ; 0x87e <__divsf3_pse+0x90> 81e: 91 50 subi r25, 0x01 ; 1 820: 50 40 sbci r21, 0x00 ; 0 822: e6 95 lsr r30 824: 00 1c adc r0, r0 826: ca f7 brpl .-14 ; 0x81a <__divsf3_pse+0x2c> 828: 29 d0 rcall .+82 ; 0x87c <__divsf3_pse+0x8e> 82a: fe 2f mov r31, r30 82c: 27 d0 rcall .+78 ; 0x87c <__divsf3_pse+0x8e> 82e: 66 0f add r22, r22 830: 77 1f adc r23, r23 832: 88 1f adc r24, r24 834: bb 1f adc r27, r27 836: 26 17 cp r18, r22 838: 37 07 cpc r19, r23 83a: 48 07 cpc r20, r24 83c: ab 07 cpc r26, r27 83e: b0 e8 ldi r27, 0x80 ; 128 840: 09 f0 breq .+2 ; 0x844 <__divsf3_pse+0x56> 842: bb 0b sbc r27, r27 844: 80 2d mov r24, r0 846: bf 01 movw r22, r30 848: ff 27 eor r31, r31 84a: 93 58 subi r25, 0x83 ; 131 84c: 5f 4f sbci r21, 0xFF ; 255 84e: 2a f0 brmi .+10 ; 0x85a <__divsf3_pse+0x6c> 850: 9e 3f cpi r25, 0xFE ; 254 852: 51 05 cpc r21, r1 854: 68 f0 brcs .+26 ; 0x870 <__divsf3_pse+0x82> 856: 85 c0 rjmp .+266 ; 0x962 <__fp_inf> 858: cf c0 rjmp .+414 ; 0x9f8 <__fp_szero> 85a: 5f 3f cpi r21, 0xFF ; 255 85c: ec f3 brlt .-6 ; 0x858 <__divsf3_pse+0x6a> 85e: 98 3e cpi r25, 0xE8 ; 232 860: dc f3 brlt .-10 ; 0x858 <__divsf3_pse+0x6a> 862: 86 95 lsr r24 864: 77 95 ror r23 866: 67 95 ror r22 868: b7 95 ror r27 86a: f7 95 ror r31 86c: 9f 5f subi r25, 0xFF ; 255 86e: c9 f7 brne .-14 ; 0x862 <__divsf3_pse+0x74> 870: 88 0f add r24, r24 872: 91 1d adc r25, r1 874: 96 95 lsr r25 876: 87 95 ror r24 878: 97 f9 bld r25, 7 87a: 08 95 ret 87c: e1 e0 ldi r30, 0x01 ; 1 87e: 66 0f add r22, r22 880: 77 1f adc r23, r23 882: 88 1f adc r24, r24 884: bb 1f adc r27, r27 886: 62 17 cp r22, r18 888: 73 07 cpc r23, r19 88a: 84 07 cpc r24, r20 88c: ba 07 cpc r27, r26 88e: 20 f0 brcs .+8 ; 0x898 <__divsf3_pse+0xaa> 890: 62 1b sub r22, r18 892: 73 0b sbc r23, r19 894: 84 0b sbc r24, r20 896: ba 0b sbc r27, r26 898: ee 1f adc r30, r30 89a: 88 f7 brcc .-30 ; 0x87e <__divsf3_pse+0x90> 89c: e0 95 com r30 89e: 08 95 ret 000008a0 <__floatunsisf>: 8a0: e8 94 clt 8a2: 09 c0 rjmp .+18 ; 0x8b6 <__floatsisf+0x12> 000008a4 <__floatsisf>: 8a4: 97 fb bst r25, 7 8a6: 3e f4 brtc .+14 ; 0x8b6 <__floatsisf+0x12> 8a8: 90 95 com r25 8aa: 80 95 com r24 8ac: 70 95 com r23 8ae: 61 95 neg r22 8b0: 7f 4f sbci r23, 0xFF ; 255 8b2: 8f 4f sbci r24, 0xFF ; 255 8b4: 9f 4f sbci r25, 0xFF ; 255 8b6: 99 23 and r25, r25 8b8: a9 f0 breq .+42 ; 0x8e4 <__floatsisf+0x40> 8ba: f9 2f mov r31, r25 8bc: 96 e9 ldi r25, 0x96 ; 150 8be: bb 27 eor r27, r27 8c0: 93 95 inc r25 8c2: f6 95 lsr r31 8c4: 87 95 ror r24 8c6: 77 95 ror r23 8c8: 67 95 ror r22 8ca: b7 95 ror r27 8cc: f1 11 cpse r31, r1 8ce: f8 cf rjmp .-16 ; 0x8c0 <__floatsisf+0x1c> 8d0: fa f4 brpl .+62 ; 0x910 <__floatsisf+0x6c> 8d2: bb 0f add r27, r27 8d4: 11 f4 brne .+4 ; 0x8da <__floatsisf+0x36> 8d6: 60 ff sbrs r22, 0 8d8: 1b c0 rjmp .+54 ; 0x910 <__floatsisf+0x6c> 8da: 6f 5f subi r22, 0xFF ; 255 8dc: 7f 4f sbci r23, 0xFF ; 255 8de: 8f 4f sbci r24, 0xFF ; 255 8e0: 9f 4f sbci r25, 0xFF ; 255 8e2: 16 c0 rjmp .+44 ; 0x910 <__floatsisf+0x6c> 8e4: 88 23 and r24, r24 8e6: 11 f0 breq .+4 ; 0x8ec <__floatsisf+0x48> 8e8: 96 e9 ldi r25, 0x96 ; 150 8ea: 11 c0 rjmp .+34 ; 0x90e <__floatsisf+0x6a> 8ec: 77 23 and r23, r23 8ee: 21 f0 breq .+8 ; 0x8f8 <__floatsisf+0x54> 8f0: 9e e8 ldi r25, 0x8E ; 142 8f2: 87 2f mov r24, r23 8f4: 76 2f mov r23, r22 8f6: 05 c0 rjmp .+10 ; 0x902 <__floatsisf+0x5e> 8f8: 66 23 and r22, r22 8fa: 71 f0 breq .+28 ; 0x918 <__floatsisf+0x74> 8fc: 96 e8 ldi r25, 0x86 ; 134 8fe: 86 2f mov r24, r22 900: 70 e0 ldi r23, 0x00 ; 0 902: 60 e0 ldi r22, 0x00 ; 0 904: 2a f0 brmi .+10 ; 0x910 <__floatsisf+0x6c> 906: 9a 95 dec r25 908: 66 0f add r22, r22 90a: 77 1f adc r23, r23 90c: 88 1f adc r24, r24 90e: da f7 brpl .-10 ; 0x906 <__floatsisf+0x62> 910: 88 0f add r24, r24 912: 96 95 lsr r25 914: 87 95 ror r24 916: 97 f9 bld r25, 7 918: 08 95 ret 0000091a <__fp_cmp>: 91a: 99 0f add r25, r25 91c: 00 08 sbc r0, r0 91e: 55 0f add r21, r21 920: aa 0b sbc r26, r26 922: e0 e8 ldi r30, 0x80 ; 128 924: fe ef ldi r31, 0xFE ; 254 926: 16 16 cp r1, r22 928: 17 06 cpc r1, r23 92a: e8 07 cpc r30, r24 92c: f9 07 cpc r31, r25 92e: c0 f0 brcs .+48 ; 0x960 <__fp_cmp+0x46> 930: 12 16 cp r1, r18 932: 13 06 cpc r1, r19 934: e4 07 cpc r30, r20 936: f5 07 cpc r31, r21 938: 98 f0 brcs .+38 ; 0x960 <__fp_cmp+0x46> 93a: 62 1b sub r22, r18 93c: 73 0b sbc r23, r19 93e: 84 0b sbc r24, r20 940: 95 0b sbc r25, r21 942: 39 f4 brne .+14 ; 0x952 <__fp_cmp+0x38> 944: 0a 26 eor r0, r26 946: 61 f0 breq .+24 ; 0x960 <__fp_cmp+0x46> 948: 23 2b or r18, r19 94a: 24 2b or r18, r20 94c: 25 2b or r18, r21 94e: 21 f4 brne .+8 ; 0x958 <__fp_cmp+0x3e> 950: 08 95 ret 952: 0a 26 eor r0, r26 954: 09 f4 brne .+2 ; 0x958 <__fp_cmp+0x3e> 956: a1 40 sbci r26, 0x01 ; 1 958: a6 95 lsr r26 95a: 8f ef ldi r24, 0xFF ; 255 95c: 81 1d adc r24, r1 95e: 81 1d adc r24, r1 960: 08 95 ret 00000962 <__fp_inf>: 962: 97 f9 bld r25, 7 964: 9f 67 ori r25, 0x7F ; 127 966: 80 e8 ldi r24, 0x80 ; 128 968: 70 e0 ldi r23, 0x00 ; 0 96a: 60 e0 ldi r22, 0x00 ; 0 96c: 08 95 ret 0000096e <__fp_nan>: 96e: 9f ef ldi r25, 0xFF ; 255 970: 80 ec ldi r24, 0xC0 ; 192 972: 08 95 ret 00000974 <__fp_pscA>: 974: 00 24 eor r0, r0 976: 0a 94 dec r0 978: 16 16 cp r1, r22 97a: 17 06 cpc r1, r23 97c: 18 06 cpc r1, r24 97e: 09 06 cpc r0, r25 980: 08 95 ret 00000982 <__fp_pscB>: 982: 00 24 eor r0, r0 984: 0a 94 dec r0 986: 12 16 cp r1, r18 988: 13 06 cpc r1, r19 98a: 14 06 cpc r1, r20 98c: 05 06 cpc r0, r21 98e: 08 95 ret 00000990 <__fp_round>: 990: 09 2e mov r0, r25 992: 03 94 inc r0 994: 00 0c add r0, r0 996: 11 f4 brne .+4 ; 0x99c <__fp_round+0xc> 998: 88 23 and r24, r24 99a: 52 f0 brmi .+20 ; 0x9b0 <__fp_round+0x20> 99c: bb 0f add r27, r27 99e: 40 f4 brcc .+16 ; 0x9b0 <__fp_round+0x20> 9a0: bf 2b or r27, r31 9a2: 11 f4 brne .+4 ; 0x9a8 <__fp_round+0x18> 9a4: 60 ff sbrs r22, 0 9a6: 04 c0 rjmp .+8 ; 0x9b0 <__fp_round+0x20> 9a8: 6f 5f subi r22, 0xFF ; 255 9aa: 7f 4f sbci r23, 0xFF ; 255 9ac: 8f 4f sbci r24, 0xFF ; 255 9ae: 9f 4f sbci r25, 0xFF ; 255 9b0: 08 95 ret 000009b2 <__fp_split3>: 9b2: 57 fd sbrc r21, 7 9b4: 90 58 subi r25, 0x80 ; 128 9b6: 44 0f add r20, r20 9b8: 55 1f adc r21, r21 9ba: 59 f0 breq .+22 ; 0x9d2 <__fp_splitA+0x10> 9bc: 5f 3f cpi r21, 0xFF ; 255 9be: 71 f0 breq .+28 ; 0x9dc <__fp_splitA+0x1a> 9c0: 47 95 ror r20 000009c2 <__fp_splitA>: 9c2: 88 0f add r24, r24 9c4: 97 fb bst r25, 7 9c6: 99 1f adc r25, r25 9c8: 61 f0 breq .+24 ; 0x9e2 <__fp_splitA+0x20> 9ca: 9f 3f cpi r25, 0xFF ; 255 9cc: 79 f0 breq .+30 ; 0x9ec <__fp_splitA+0x2a> 9ce: 87 95 ror r24 9d0: 08 95 ret 9d2: 12 16 cp r1, r18 9d4: 13 06 cpc r1, r19 9d6: 14 06 cpc r1, r20 9d8: 55 1f adc r21, r21 9da: f2 cf rjmp .-28 ; 0x9c0 <__fp_split3+0xe> 9dc: 46 95 lsr r20 9de: f1 df rcall .-30 ; 0x9c2 <__fp_splitA> 9e0: 08 c0 rjmp .+16 ; 0x9f2 <__fp_splitA+0x30> 9e2: 16 16 cp r1, r22 9e4: 17 06 cpc r1, r23 9e6: 18 06 cpc r1, r24 9e8: 99 1f adc r25, r25 9ea: f1 cf rjmp .-30 ; 0x9ce <__fp_splitA+0xc> 9ec: 86 95 lsr r24 9ee: 71 05 cpc r23, r1 9f0: 61 05 cpc r22, r1 9f2: 08 94 sec 9f4: 08 95 ret 000009f6 <__fp_zero>: 9f6: e8 94 clt 000009f8 <__fp_szero>: 9f8: bb 27 eor r27, r27 9fa: 66 27 eor r22, r22 9fc: 77 27 eor r23, r23 9fe: cb 01 movw r24, r22 a00: 97 f9 bld r25, 7 a02: 08 95 ret 00000a04 <__gesf2>: a04: 8a df rcall .-236 ; 0x91a <__fp_cmp> a06: 08 f4 brcc .+2 ; 0xa0a <__gesf2+0x6> a08: 8f ef ldi r24, 0xFF ; 255 a0a: 08 95 ret 00000a0c <__mulsf3>: a0c: 0a d0 rcall .+20 ; 0xa22 <__mulsf3x> a0e: c0 cf rjmp .-128 ; 0x990 <__fp_round> a10: b1 df rcall .-158 ; 0x974 <__fp_pscA> a12: 28 f0 brcs .+10 ; 0xa1e <__mulsf3+0x12> a14: b6 df rcall .-148 ; 0x982 <__fp_pscB> a16: 18 f0 brcs .+6 ; 0xa1e <__mulsf3+0x12> a18: 95 23 and r25, r21 a1a: 09 f0 breq .+2 ; 0xa1e <__mulsf3+0x12> a1c: a2 cf rjmp .-188 ; 0x962 <__fp_inf> a1e: a7 cf rjmp .-178 ; 0x96e <__fp_nan> a20: eb cf rjmp .-42 ; 0x9f8 <__fp_szero> 00000a22 <__mulsf3x>: a22: c7 df rcall .-114 ; 0x9b2 <__fp_split3> a24: a8 f3 brcs .-22 ; 0xa10 <__mulsf3+0x4> 00000a26 <__mulsf3_pse>: a26: 99 23 and r25, r25 a28: d9 f3 breq .-10 ; 0xa20 <__mulsf3+0x14> a2a: 55 23 and r21, r21 a2c: c9 f3 breq .-14 ; 0xa20 <__mulsf3+0x14> a2e: 95 0f add r25, r21 a30: 50 e0 ldi r21, 0x00 ; 0 a32: 55 1f adc r21, r21 a34: aa 27 eor r26, r26 a36: ee 27 eor r30, r30 a38: ff 27 eor r31, r31 a3a: bb 27 eor r27, r27 a3c: 00 24 eor r0, r0 a3e: 08 94 sec a40: 67 95 ror r22 a42: 20 f4 brcc .+8 ; 0xa4c <__mulsf3_pse+0x26> a44: e2 0f add r30, r18 a46: f3 1f adc r31, r19 a48: b4 1f adc r27, r20 a4a: 0a 1e adc r0, r26 a4c: 22 0f add r18, r18 a4e: 33 1f adc r19, r19 a50: 44 1f adc r20, r20 a52: aa 1f adc r26, r26 a54: 66 95 lsr r22 a56: a9 f7 brne .-22 ; 0xa42 <__mulsf3_pse+0x1c> a58: 77 95 ror r23 a5a: 30 f4 brcc .+12 ; 0xa68 <__mulsf3_pse+0x42> a5c: f3 0f add r31, r19 a5e: b4 1f adc r27, r20 a60: 0a 1e adc r0, r26 a62: 12 1e adc r1, r18 a64: 08 f4 brcc .+2 ; 0xa68 <__mulsf3_pse+0x42> a66: 63 95 inc r22 a68: 33 0f add r19, r19 a6a: 44 1f adc r20, r20 a6c: aa 1f adc r26, r26 a6e: 22 1f adc r18, r18 a70: 76 95 lsr r23 a72: 99 f7 brne .-26 ; 0xa5a <__mulsf3_pse+0x34> a74: 87 95 ror r24 a76: 20 f4 brcc .+8 ; 0xa80 <__mulsf3_pse+0x5a> a78: b4 0f add r27, r20 a7a: 0a 1e adc r0, r26 a7c: 12 1e adc r1, r18 a7e: 63 1f adc r22, r19 a80: 44 0f add r20, r20 a82: aa 1f adc r26, r26 a84: 22 1f adc r18, r18 a86: 33 1f adc r19, r19 a88: 86 95 lsr r24 a8a: a9 f7 brne .-22 ; 0xa76 <__mulsf3_pse+0x50> a8c: 86 2f mov r24, r22 a8e: 71 2d mov r23, r1 a90: 60 2d mov r22, r0 a92: 11 24 eor r1, r1 a94: 9f 57 subi r25, 0x7F ; 127 a96: 50 40 sbci r21, 0x00 ; 0 a98: 8a f0 brmi .+34 ; 0xabc <__mulsf3_pse+0x96> a9a: e1 f0 breq .+56 ; 0xad4 <__mulsf3_pse+0xae> a9c: 88 23 and r24, r24 a9e: 4a f0 brmi .+18 ; 0xab2 <__mulsf3_pse+0x8c> aa0: ee 0f add r30, r30 aa2: ff 1f adc r31, r31 aa4: bb 1f adc r27, r27 aa6: 66 1f adc r22, r22 aa8: 77 1f adc r23, r23 aaa: 88 1f adc r24, r24 aac: 91 50 subi r25, 0x01 ; 1 aae: 50 40 sbci r21, 0x00 ; 0 ab0: a9 f7 brne .-22 ; 0xa9c <__mulsf3_pse+0x76> ab2: 9e 3f cpi r25, 0xFE ; 254 ab4: 51 05 cpc r21, r1 ab6: 70 f0 brcs .+28 ; 0xad4 <__mulsf3_pse+0xae> ab8: 54 cf rjmp .-344 ; 0x962 <__fp_inf> aba: 9e cf rjmp .-196 ; 0x9f8 <__fp_szero> abc: 5f 3f cpi r21, 0xFF ; 255 abe: ec f3 brlt .-6 ; 0xaba <__mulsf3_pse+0x94> ac0: 98 3e cpi r25, 0xE8 ; 232 ac2: dc f3 brlt .-10 ; 0xaba <__mulsf3_pse+0x94> ac4: 86 95 lsr r24 ac6: 77 95 ror r23 ac8: 67 95 ror r22 aca: b7 95 ror r27 acc: f7 95 ror r31 ace: e7 95 ror r30 ad0: 9f 5f subi r25, 0xFF ; 255 ad2: c1 f7 brne .-16 ; 0xac4 <__mulsf3_pse+0x9e> ad4: fe 2b or r31, r30 ad6: 88 0f add r24, r24 ad8: 91 1d adc r25, r1 ada: 96 95 lsr r25 adc: 87 95 ror r24 ade: 97 f9 bld r25, 7 ae0: 08 95 ret 00000ae2 <eeprom_read_byte>: ae2: e1 99 sbic 0x1c, 1 ; 28 ae4: fe cf rjmp .-4 ; 0xae2 <eeprom_read_byte> ae6: 9f bb out 0x1f, r25 ; 31 ae8: 8e bb out 0x1e, r24 ; 30 aea: e0 9a sbi 0x1c, 0 ; 28 aec: 99 27 eor r25, r25 aee: 8d b3 in r24, 0x1d ; 29 af0: 08 95 ret 00000af2 <eeprom_write_byte>: af2: 26 2f mov r18, r22 00000af4 <eeprom_write_r18>: af4: e1 99 sbic 0x1c, 1 ; 28 af6: fe cf rjmp .-4 ; 0xaf4 <eeprom_write_r18> af8: 1c ba out 0x1c, r1 ; 28 afa: 9f bb out 0x1f, r25 ; 31 afc: 8e bb out 0x1e, r24 ; 30 afe: 2d bb out 0x1d, r18 ; 29 b00: 0f b6 in r0, 0x3f ; 63 b02: f8 94 cli b04: e2 9a sbi 0x1c, 2 ; 28 b06: e1 9a sbi 0x1c, 1 ; 28 b08: 0f be out 0x3f, r0 ; 63 b0a: 01 96 adiw r24, 0x01 ; 1 b0c: 08 95 ret 00000b0e <_exit>: b0e: f8 94 cli 00000b10 <__stop_program>: b10: ff cf rjmp .-2 ; 0xb10 <__stop_program>