Files
Last update 6 years 11 months
by
Jefferson Pimenta Melo
Gatilho.lssGatilho.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000073e 00000000 00000000 00000074 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00800060 00800060 000007b2 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000005 00800060 00800060 000007b2 2**0 ALLOC 3 .comment 00000030 00000000 00000000 000007b2 2**0 CONTENTS, READONLY 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000007e4 2**2 CONTENTS, READONLY 5 .debug_aranges 00000078 00000000 00000000 00000820 2**3 CONTENTS, READONLY, DEBUGGING 6 .debug_info 00000f19 00000000 00000000 00000898 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_abbrev 0000064a 00000000 00000000 000017b1 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_line 00000814 00000000 00000000 00001dfb 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_frame 00000080 00000000 00000000 00002610 2**2 CONTENTS, READONLY, DEBUGGING 10 .debug_str 00000363 00000000 00000000 00002690 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 00000779 00000000 00000000 000029f3 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_ranges 00000040 00000000 00000000 0000316c 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: a5 36 cpi r26, 0x65 ; 101 36: b2 07 cpc r27, r18 38: e1 f7 brne .-8 ; 0x32 <.do_clear_bss_loop> 3a: 15 d2 rcall .+1066 ; 0x466 <main> 3c: 7e c3 rjmp .+1788 ; 0x73a <_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 61 00 lds r24, 0x0061 ; 0x800061 <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: 5e c0 rjmp .+188 ; 0x122 <normal+0xe2> #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); 66: 89 ef ldi r24, 0xF9 ; 249 68: 90 e0 ldi r25, 0x00 ; 0 6a: 01 97 sbiw r24, 0x01 ; 1 6c: f1 f7 brne .-4 ; 0x6a <normal+0x2a> 6e: 00 c0 rjmp .+0 ; 0x70 <normal+0x30> 70: 00 00 nop while(1){ i=0; 72: c0 e0 ldi r28, 0x00 ; 0 _delay_ms(1); while(!bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 74: b1 99 sbic 0x16, 1 ; 22 76: f7 cf rjmp .-18 ; 0x66 <normal+0x26> i++; 78: cf 5f subi r28, 0xFF ; 255 7a: e9 ef ldi r30, 0xF9 ; 249 7c: f0 e0 ldi r31, 0x00 ; 0 7e: 31 97 sbiw r30, 0x01 ; 1 80: f1 f7 brne .-4 ; 0x7e <normal+0x3e> 82: 00 c0 rjmp .+0 ; 0x84 <normal+0x44> 84: 00 00 nop _delay_ms(1); if (i>debouncedelay) 86: c6 30 cpi r28, 0x06 ; 6 88: 08 f4 brcc .+2 ; 0x8c <normal+0x4c> 8a: 49 c0 rjmp .+146 ; 0x11e <normal+0xde> { bit_set(Motor,Pinmotor);//liga motor 8c: c0 9a sbi 0x18, 0 ; 24 if ((!bit_get(Trigger,Pintrigger))){ 8e: b1 99 sbic 0x16, 1 ; 22 90: f1 cf rjmp .-30 ; 0x74 <normal+0x34> 92: c0 e0 ldi r28, 0x00 ; 0 for (i=0;i<tiros;i++)//quantidade de tiros menos o efetuado 94: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <tiros> 98: c8 17 cp r28, r24 9a: 88 f4 brcc .+34 ; 0xbe <normal+0x7e> { if (i==0) 9c: c1 11 cpse r28, r1 9e: 0d c0 rjmp .+26 ; 0xba <normal+0x7a> a0: 80 e0 ldi r24, 0x00 ; 0 {//primeiro tiro, de aceleração for (j=0;j<timeon;j++) a2: 90 91 63 00 lds r25, 0x0063 ; 0x800063 <timeon> a6: 89 17 cp r24, r25 a8: 78 f5 brcc .+94 ; 0x108 <normal+0xc8> aa: e9 ef ldi r30, 0xF9 ; 249 ac: f0 e0 ldi r31, 0x00 ; 0 ae: 31 97 sbiw r30, 0x01 ; 1 b0: f1 f7 brne .-4 ; 0xae <normal+0x6e> b2: 00 c0 rjmp .+0 ; 0xb4 <normal+0x74> b4: 00 00 nop b6: 8f 5f subi r24, 0xFF ; 255 b8: f4 cf rjmp .-24 ; 0xa2 <normal+0x62> { _delay_ms(1); }//tempo que cada ciclo leva pra se completar }else{ if (bit_get(Trigger,Pintrigger)) break;//para se o usuário parar os tiros ba: b1 9b sbis 0x16, 1 ; 22 bc: 02 c0 rjmp .+4 ; 0xc2 <normal+0x82> _delay_ms(1); }//tempo que cada ciclo leva pra se completar }//segundo tiro, motor acelerado } bit_clear(Motor,Pinmotor);//desliga motor, pois os tiros configurados foram efetuados be: c0 98 cbi 0x18, 0 ; 24 c0: 25 c0 rjmp .+74 ; 0x10c <normal+0xcc> c2: d0 e0 ldi r29, 0x00 ; 0 }//tempo que cada ciclo leva pra se completar }else{ if (bit_get(Trigger,Pintrigger)) break;//para se o usuário parar os tiros for (j=0;j<(timeon*atraso);j++) c4: 6d 2f mov r22, r29 c6: 70 e0 ldi r23, 0x00 ; 0 c8: 80 e0 ldi r24, 0x00 ; 0 ca: 90 e0 ldi r25, 0x00 ; 0 cc: 05 d2 rcall .+1034 ; 0x4d8 <__floatsisf> ce: 6b 01 movw r12, r22 d0: 7c 01 movw r14, r24 d2: 80 91 63 00 lds r24, 0x0063 ; 0x800063 <timeon> d6: 68 2f mov r22, r24 d8: 70 e0 ldi r23, 0x00 ; 0 da: 80 e0 ldi r24, 0x00 ; 0 dc: 90 e0 ldi r25, 0x00 ; 0 de: fc d1 rcall .+1016 ; 0x4d8 <__floatsisf> e0: 26 e6 ldi r18, 0x66 ; 102 e2: 36 e6 ldi r19, 0x66 ; 102 e4: 46 e6 ldi r20, 0x66 ; 102 e6: 5f e3 ldi r21, 0x3F ; 63 e8: 56 d2 rcall .+1196 ; 0x596 <__mulsf3> ea: 9b 01 movw r18, r22 ec: ac 01 movw r20, r24 ee: c7 01 movw r24, r14 f0: b6 01 movw r22, r12 f2: ec d1 rcall .+984 ; 0x4cc <__cmpsf2> f4: 87 ff sbrs r24, 7 f6: 08 c0 rjmp .+16 ; 0x108 <normal+0xc8> f8: 89 ef ldi r24, 0xF9 ; 249 fa: 90 e0 ldi r25, 0x00 ; 0 fc: 01 97 sbiw r24, 0x01 ; 1 fe: f1 f7 brne .-4 ; 0xfc <normal+0xbc> 100: 00 c0 rjmp .+0 ; 0x102 <normal+0xc2> 102: 00 00 nop 104: df 5f subi r29, 0xFF ; 255 106: de cf rjmp .-68 ; 0xc4 <normal+0x84> 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 108: cf 5f subi r28, 0xFF ; 255 10a: c4 cf rjmp .-120 ; 0x94 <normal+0x54> 10c: e9 ef ldi r30, 0xF9 ; 249 10e: f0 e0 ldi r31, 0x00 ; 0 110: 31 97 sbiw r30, 0x01 ; 1 112: f1 f7 brne .-4 ; 0x110 <normal+0xd0> 114: 00 c0 rjmp .+0 ; 0x116 <normal+0xd6> 116: 00 00 nop bit_clear(Motor,Pinmotor);//desliga motor, pois os tiros configurados foram efetuados do { _delay_ms(1); } while (!bit_get(Trigger,Pintrigger));//espera o gatilho ser liberado 118: b1 9b sbis 0x16, 1 ; 22 11a: f8 cf rjmp .-16 ; 0x10c <normal+0xcc> 11c: ab cf rjmp .-170 ; 0x74 <normal+0x34> } }else bit_clear(Motor,Pinmotor);//desliga motor 11e: c0 98 cbi 0x18, 0 ; 24 120: a9 cf rjmp .-174 ; 0x74 <normal+0x34> } } } if (firemode==3)//modo rambo 122: 83 30 cpi r24, 0x03 ; 3 124: 09 f0 breq .+2 ; 0x128 <normal+0xe8> 126: 77 c0 rjmp .+238 ; 0x216 <normal+0x1d6> 128: 89 ef ldi r24, 0xF9 ; 249 12a: 90 e0 ldi r25, 0x00 ; 0 12c: 01 97 sbiw r24, 0x01 ; 1 12e: f1 f7 brne .-4 ; 0x12c <normal+0xec> 130: 00 c0 rjmp .+0 ; 0x132 <normal+0xf2> 132: 00 00 nop { while(1){ i=0; 134: c0 e0 ldi r28, 0x00 ; 0 _delay_ms(1); while(!bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 136: b1 99 sbic 0x16, 1 ; 22 138: f7 cf rjmp .-18 ; 0x128 <normal+0xe8> i++; 13a: cf 5f subi r28, 0xFF ; 255 13c: e9 ef ldi r30, 0xF9 ; 249 13e: f0 e0 ldi r31, 0x00 ; 0 140: 31 97 sbiw r30, 0x01 ; 1 142: f1 f7 brne .-4 ; 0x140 <normal+0x100> 144: 00 c0 rjmp .+0 ; 0x146 <normal+0x106> 146: 00 00 nop _delay_ms(1); if (i>debouncedelay) 148: c6 30 cpi r28, 0x06 ; 6 14a: 08 f4 brcc .+2 ; 0x14e <normal+0x10e> 14c: 62 c0 rjmp .+196 ; 0x212 <normal+0x1d2> { bit_set(Motor,Pinmotor);//liga motor 14e: c0 9a sbi 0x18, 0 ; 24 if ((!bit_get(Trigger,Pintrigger))){ 150: b1 99 sbic 0x16, 1 ; 22 152: f1 cf rjmp .-30 ; 0x136 <normal+0xf6> 154: c0 e0 ldi r28, 0x00 ; 0 for (i=0;i<tiros;i++)//quantidade de tiros efetuado 156: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <tiros> 15a: c8 17 cp r28, r24 15c: a8 f5 brcc .+106 ; 0x1c8 <normal+0x188> { if (i==0) 15e: cc 23 and r28, r28 160: 11 f0 breq .+4 ; 0x166 <normal+0x126> 162: d0 e0 ldi r29, 0x00 ; 0 164: 0d c0 rjmp .+26 ; 0x180 <normal+0x140> 166: 80 e0 ldi r24, 0x00 ; 0 {//primeiro tiro, de aceleração for (j=0;j<timeon;j++) 168: 90 91 63 00 lds r25, 0x0063 ; 0x800063 <timeon> 16c: 89 17 cp r24, r25 16e: 50 f5 brcc .+84 ; 0x1c4 <normal+0x184> 170: e9 ef ldi r30, 0xF9 ; 249 172: f0 e0 ldi r31, 0x00 ; 0 174: 31 97 sbiw r30, 0x01 ; 1 176: f1 f7 brne .-4 ; 0x174 <normal+0x134> 178: 00 c0 rjmp .+0 ; 0x17a <normal+0x13a> 17a: 00 00 nop 17c: 8f 5f subi r24, 0xFF ; 255 17e: f4 cf rjmp .-24 ; 0x168 <normal+0x128> { _delay_ms(1); }//tempo que cada ciclo leva pra se completar }else{ for (j=0;j<(timeon*atraso);j++) 180: 6d 2f mov r22, r29 182: 70 e0 ldi r23, 0x00 ; 0 184: 80 e0 ldi r24, 0x00 ; 0 186: 90 e0 ldi r25, 0x00 ; 0 188: a7 d1 rcall .+846 ; 0x4d8 <__floatsisf> 18a: 6b 01 movw r12, r22 18c: 7c 01 movw r14, r24 18e: 80 91 63 00 lds r24, 0x0063 ; 0x800063 <timeon> 192: 68 2f mov r22, r24 194: 70 e0 ldi r23, 0x00 ; 0 196: 80 e0 ldi r24, 0x00 ; 0 198: 90 e0 ldi r25, 0x00 ; 0 19a: 9e d1 rcall .+828 ; 0x4d8 <__floatsisf> 19c: 26 e6 ldi r18, 0x66 ; 102 19e: 36 e6 ldi r19, 0x66 ; 102 1a0: 46 e6 ldi r20, 0x66 ; 102 1a2: 5f e3 ldi r21, 0x3F ; 63 1a4: f8 d1 rcall .+1008 ; 0x596 <__mulsf3> 1a6: 9b 01 movw r18, r22 1a8: ac 01 movw r20, r24 1aa: c7 01 movw r24, r14 1ac: b6 01 movw r22, r12 1ae: 8e d1 rcall .+796 ; 0x4cc <__cmpsf2> 1b0: 87 ff sbrs r24, 7 1b2: 08 c0 rjmp .+16 ; 0x1c4 <normal+0x184> 1b4: 89 ef ldi r24, 0xF9 ; 249 1b6: 90 e0 ldi r25, 0x00 ; 0 1b8: 01 97 sbiw r24, 0x01 ; 1 1ba: f1 f7 brne .-4 ; 0x1b8 <normal+0x178> 1bc: 00 c0 rjmp .+0 ; 0x1be <normal+0x17e> 1be: 00 00 nop 1c0: df 5f subi r29, 0xFF ; 255 1c2: de cf rjmp .-68 ; 0x180 <normal+0x140> if (i>debouncedelay) { bit_set(Motor,Pinmotor);//liga motor if ((!bit_get(Trigger,Pintrigger))){ for (i=0;i<tiros;i++)//quantidade de tiros efetuado 1c4: cf 5f subi r28, 0xFF ; 255 1c6: c7 cf rjmp .-114 ; 0x156 <normal+0x116> _delay_ms(1); }//tempo que cada ciclo leva pra se completar }//segundo tiro, motor acelerado } while(!bit_get(Trigger,Pintrigger)){ 1c8: b1 99 sbic 0x16, 1 ; 22 1ca: 23 c0 rjmp .+70 ; 0x212 <normal+0x1d2> 1cc: d0 e0 ldi r29, 0x00 ; 0 for (j=0;j<(timeon*atraso);j++) 1ce: 6d 2f mov r22, r29 1d0: 70 e0 ldi r23, 0x00 ; 0 1d2: 80 e0 ldi r24, 0x00 ; 0 1d4: 90 e0 ldi r25, 0x00 ; 0 1d6: 80 d1 rcall .+768 ; 0x4d8 <__floatsisf> 1d8: 6b 01 movw r12, r22 1da: 7c 01 movw r14, r24 1dc: 80 91 63 00 lds r24, 0x0063 ; 0x800063 <timeon> 1e0: 68 2f mov r22, r24 1e2: 70 e0 ldi r23, 0x00 ; 0 1e4: 80 e0 ldi r24, 0x00 ; 0 1e6: 90 e0 ldi r25, 0x00 ; 0 1e8: 77 d1 rcall .+750 ; 0x4d8 <__floatsisf> 1ea: 26 e6 ldi r18, 0x66 ; 102 1ec: 36 e6 ldi r19, 0x66 ; 102 1ee: 46 e6 ldi r20, 0x66 ; 102 1f0: 5f e3 ldi r21, 0x3F ; 63 1f2: d1 d1 rcall .+930 ; 0x596 <__mulsf3> 1f4: 9b 01 movw r18, r22 1f6: ac 01 movw r20, r24 1f8: c7 01 movw r24, r14 1fa: b6 01 movw r22, r12 1fc: 67 d1 rcall .+718 ; 0x4cc <__cmpsf2> 1fe: 87 ff sbrs r24, 7 200: e3 cf rjmp .-58 ; 0x1c8 <normal+0x188> 202: e9 ef ldi r30, 0xF9 ; 249 204: f0 e0 ldi r31, 0x00 ; 0 206: 31 97 sbiw r30, 0x01 ; 1 208: f1 f7 brne .-4 ; 0x206 <normal+0x1c6> 20a: 00 c0 rjmp .+0 ; 0x20c <normal+0x1cc> 20c: 00 00 nop 20e: df 5f subi r29, 0xFF ; 255 210: de cf rjmp .-68 ; 0x1ce <normal+0x18e> }//tempo que cada ciclo leva pra se completar } bit_clear(Motor,Pinmotor);//desliga motor } }else bit_clear(Motor,Pinmotor);//desliga motor 212: c0 98 cbi 0x18, 0 ; 24 214: 90 cf rjmp .-224 ; 0x136 <normal+0xf6> } } } } 216: df 91 pop r29 218: cf 91 pop r28 21a: ff 90 pop r15 21c: ef 90 pop r14 21e: df 90 pop r13 220: cf 90 pop r12 222: 08 95 ret 00000224 <barulho>: } while (!bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado } } void barulho(){ 224: 82 e3 ldi r24, 0x32 ; 50 for (uint8_t k=0;k<50;k++) { bit_set(Motor,Pinmotor); 226: 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); 228: 91 e2 ldi r25, 0x21 ; 33 22a: 9a 95 dec r25 22c: f1 f7 brne .-4 ; 0x22a <barulho+0x6> 22e: 00 00 nop _delay_us(100); bit_clear(Motor,Pinmotor); 230: 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); 232: e9 ef ldi r30, 0xF9 ; 249 234: f0 e0 ldi r31, 0x00 ; 0 236: 31 97 sbiw r30, 0x01 ; 1 238: f1 f7 brne .-4 ; 0x236 <barulho+0x12> 23a: 00 c0 rjmp .+0 ; 0x23c <barulho+0x18> 23c: 00 00 nop 23e: 81 50 subi r24, 0x01 ; 1 } } void barulho(){ for (uint8_t k=0;k<50;k++) 240: 91 f7 brne .-28 ; 0x226 <barulho+0x2> bit_set(Motor,Pinmotor); _delay_us(100); bit_clear(Motor,Pinmotor); _delay_ms(1); }//faz barulho 242: 08 95 ret 00000244 <conf>: } } void conf(){ 244: cf 93 push r28 246: df 93 push r29 uint8_t flag=1; firemode=0;//limpa firemode 248: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <firemode> flag=1;//reseta flag do { barulho(); 24c: eb df rcall .-42 ; 0x224 <barulho> } while (!bit_get(Trigger,Pintrigger)); //espera usuário parar de apertar pra entrar no menu 24e: b1 9b sbis 0x16, 1 ; 22 250: fd cf rjmp .-6 ; 0x24c <conf+0x8> 252: d1 e0 ldi r29, 0x01 ; 1 do { i=0;//reseta variavel 254: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> while(!bit_get(Trigger,Pintrigger)){ 258: b1 99 sbic 0x16, 1 ; 22 25a: 23 c0 rjmp .+70 ; 0x2a2 <__stack+0x43> i++; 25c: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 260: 8f 5f subi r24, 0xFF ; 255 262: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 266: 87 ea ldi r24, 0xA7 ; 167 268: 91 e6 ldi r25, 0x61 ; 97 26a: 01 97 sbiw r24, 0x01 ; 1 26c: f1 f7 brne .-4 ; 0x26a <__stack+0xb> 26e: 00 c0 rjmp .+0 ; 0x270 <__stack+0x11> 270: 00 00 nop _delay_ms(100); if (i>30)//quebra o loop se o gatilho for pressionado 272: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 276: 8f 31 cpi r24, 0x1F ; 31 278: 78 f3 brcs .-34 ; 0x258 <conf+0x14> { flag=0;//sinaliza final da função if (firemode>3) firemode=1; 27a: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <firemode> 27e: 84 30 cpi r24, 0x04 ; 4 280: 10 f0 brcs .+4 ; 0x286 <__stack+0x27> 282: d0 93 61 00 sts 0x0061, r29 ; 0x800061 <firemode> if (firemode==0) firemode=1;//evita treta 286: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <firemode> 28a: 81 11 cpse r24, r1 28c: 02 c0 rjmp .+4 ; 0x292 <__stack+0x33> 28e: d0 93 61 00 sts 0x0061, r29 ; 0x800061 <firemode> eeprom_write_byte((uint8_t*) 12, firemode);//grava na memo 292: 60 91 61 00 lds r22, 0x0061 ; 0x800061 <firemode> 296: 70 e0 ldi r23, 0x00 ; 0 298: 8c e0 ldi r24, 0x0C ; 12 29a: 90 e0 ldi r25, 0x00 ; 0 29c: 40 d2 rcall .+1152 ; 0x71e <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 29e: 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; 2a0: 01 c0 rjmp .+2 ; 0x2a4 <__stack+0x45> 2a2: c1 e0 ldi r28, 0x01 ; 1 } }//conta o tempo que o gatilho foi apertado if (i>2)//debounce 2a4: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 2a8: 83 30 cpi r24, 0x03 ; 3 2aa: f8 f0 brcs .+62 ; 0x2ea <__stack+0x8b> { if (i>30)//maior que 4 segundos 2ac: 8f 31 cpi r24, 0x1F ; 31 2ae: c0 f0 brcs .+48 ; 0x2e0 <__stack+0x81> { for (i=0;i<firemode;i++) 2b0: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> 2b4: 90 91 64 00 lds r25, 0x0064 ; 0x800064 <i> 2b8: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <firemode> 2bc: 98 17 cp r25, r24 2be: a8 f4 brcc .+42 ; 0x2ea <__stack+0x8b> { barulho(); 2c0: b1 df rcall .-158 ; 0x224 <barulho> 2c2: 9f e9 ldi r25, 0x9F ; 159 2c4: e6 e8 ldi r30, 0x86 ; 134 2c6: f1 e0 ldi r31, 0x01 ; 1 2c8: 91 50 subi r25, 0x01 ; 1 2ca: e0 40 sbci r30, 0x00 ; 0 2cc: f0 40 sbci r31, 0x00 ; 0 2ce: e1 f7 brne .-8 ; 0x2c8 <__stack+0x69> 2d0: 00 c0 rjmp .+0 ; 0x2d2 <__stack+0x73> 2d2: 00 00 nop if (i>2)//debounce { if (i>30)//maior que 4 segundos { for (i=0;i<firemode;i++) 2d4: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 2d8: 8f 5f subi r24, 0xFF ; 255 2da: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 2de: ea cf rjmp .-44 ; 0x2b4 <__stack+0x55> barulho(); _delay_ms(500);//indica o modo configurado } }else{ firemode++; 2e0: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <firemode> 2e4: 8f 5f subi r24, 0xFF ; 255 2e6: 80 93 61 00 sts 0x0061, r24 ; 0x800061 <firemode> } } } while (flag);//loop de configuração do modo 2ea: c1 11 cpse r28, r1 2ec: b3 cf rjmp .-154 ; 0x254 <conf+0x10> do { barulho(); 2ee: 9a df rcall .-204 ; 0x224 <barulho> } while (!bit_get(Trigger,Pintrigger)); //espera usuário parar de apertar pra sair do menu 2f0: b1 9b sbis 0x16, 1 ; 22 2f2: fd cf rjmp .-6 ; 0x2ee <__stack+0x8f> if (firemode!=1) 2f4: 80 91 61 00 lds r24, 0x0061 ; 0x800061 <firemode> 2f8: 81 30 cpi r24, 0x01 ; 1 2fa: 09 f4 brne .+2 ; 0x2fe <__stack+0x9f> 2fc: b1 c0 rjmp .+354 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> flag=1;//seta flag do loop do{ i=0; 2fe: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> while(!bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 302: 91 e0 ldi r25, 0x01 ; 1 304: b1 99 sbic 0x16, 1 ; 22 306: 20 c0 rjmp .+64 ; 0x348 <__stack+0xe9> i++; 308: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 30c: 8f 5f subi r24, 0xFF ; 255 30e: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 312: e9 ef ldi r30, 0xF9 ; 249 314: f0 e0 ldi r31, 0x00 ; 0 316: 31 97 sbiw r30, 0x01 ; 1 318: f1 f7 brne .-4 ; 0x316 <__stack+0xb7> 31a: 00 c0 rjmp .+0 ; 0x31c <__stack+0xbd> 31c: 00 00 nop _delay_ms(1); if (i>debouncedelay) 31e: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 322: 86 30 cpi r24, 0x06 ; 6 324: 78 f3 brcs .-34 ; 0x304 <__stack+0xa5> { bit_set(Motor,Pinmotor);//liga motor 326: c0 9a sbi 0x18, 0 ; 24 do { i++; 328: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 32c: 8f 5f subi r24, 0xFF ; 255 32e: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 332: 89 ef ldi r24, 0xF9 ; 249 334: 90 e0 ldi r25, 0x00 ; 0 336: 01 97 sbiw r24, 0x01 ; 1 338: f1 f7 brne .-4 ; 0x336 <__stack+0xd7> 33a: 00 c0 rjmp .+0 ; 0x33c <__stack+0xdd> 33c: 00 00 nop _delay_ms(1); } while (!bit_get(Trigger,Pintrigger)); 33e: b1 9b sbis 0x16, 1 ; 22 340: f3 cf rjmp .-26 ; 0x328 <__stack+0xc9> bit_clear(Motor,Pinmotor);//desliga motor 342: c0 98 cbi 0x18, 0 ; 24 flag=0; 344: 90 e0 ldi r25, 0x00 ; 0 346: de cf rjmp .-68 ; 0x304 <__stack+0xa5> } }//dois tiros pra configurar o tempo de tiro }while(flag); 348: 91 11 cpse r25, r1 34a: d9 cf rjmp .-78 ; 0x2fe <__stack+0x9f> flag=1;//seta flag do loop do { i=0; 34c: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> while(!bit_get(Trigger,Pintrigger)){//detecta gatilho pressionado 350: 91 e0 ldi r25, 0x01 ; 1 352: b1 99 sbic 0x16, 1 ; 22 354: 2a c0 rjmp .+84 ; 0x3aa <__stack+0x14b> i++; 356: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 35a: 8f 5f subi r24, 0xFF ; 255 35c: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 360: e9 ef ldi r30, 0xF9 ; 249 362: f0 e0 ldi r31, 0x00 ; 0 364: 31 97 sbiw r30, 0x01 ; 1 366: f1 f7 brne .-4 ; 0x364 <__stack+0x105> 368: 00 c0 rjmp .+0 ; 0x36a <__stack+0x10b> 36a: 00 00 nop _delay_ms(1); if (i>debouncedelay) 36c: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 370: 86 30 cpi r24, 0x06 ; 6 372: 78 f3 brcs .-34 ; 0x352 <__stack+0xf3> { bit_set(Motor,Pinmotor);//liga motor 374: c0 9a sbi 0x18, 0 ; 24 do { i++; 376: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 37a: 8f 5f subi r24, 0xFF ; 255 37c: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 380: 89 ef ldi r24, 0xF9 ; 249 382: 90 e0 ldi r25, 0x00 ; 0 384: 01 97 sbiw r24, 0x01 ; 1 386: f1 f7 brne .-4 ; 0x384 <__stack+0x125> 388: 00 c0 rjmp .+0 ; 0x38a <__stack+0x12b> 38a: 00 00 nop _delay_ms(1); } while (!bit_get(Trigger,Pintrigger)); 38c: b1 9b sbis 0x16, 1 ; 22 38e: f3 cf rjmp .-26 ; 0x376 <__stack+0x117> bit_clear(Motor,Pinmotor);//desliga motor 390: 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 392: 60 91 64 00 lds r22, 0x0064 ; 0x800064 <i> 396: 70 e0 ldi r23, 0x00 ; 0 398: 8b e0 ldi r24, 0x0B ; 11 39a: 90 e0 ldi r25, 0x00 ; 0 39c: c0 d1 rcall .+896 ; 0x71e <eeprom_write_byte> timeon=i;//atualiza variável 39e: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 3a2: 80 93 63 00 sts 0x0063, r24 ; 0x800063 <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 3a6: 90 e0 ldi r25, 0x00 ; 0 3a8: d4 cf rjmp .-88 ; 0x352 <__stack+0xf3> 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 3aa: 91 11 cpse r25, r1 3ac: cf cf rjmp .-98 ; 0x34c <__stack+0xed> 3ae: 9f e3 ldi r25, 0x3F ; 63 3b0: ed e0 ldi r30, 0x0D ; 13 3b2: f3 e0 ldi r31, 0x03 ; 3 3b4: 91 50 subi r25, 0x01 ; 1 3b6: e0 40 sbci r30, 0x00 ; 0 3b8: f0 40 sbci r31, 0x00 ; 0 3ba: e1 f7 brne .-8 ; 0x3b4 <__stack+0x155> 3bc: 00 c0 rjmp .+0 ; 0x3be <__stack+0x15f> 3be: 00 00 nop _delay_ms(1000); do { barulho(); 3c0: 31 df rcall .-414 ; 0x224 <barulho> } while (!bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado 3c2: b1 9b sbis 0x16, 1 ; 22 3c4: fd cf rjmp .-6 ; 0x3c0 <__stack+0x161> flag=1;//reseta flag tiros=0; 3c6: 10 92 62 00 sts 0x0062, r1 ; 0x800062 <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 3ca: d3 e0 ldi r29, 0x03 ; 3 flag=1;//reseta flag tiros=0; do { i=0;//reseta variavel 3cc: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> while(!bit_get(Trigger,Pintrigger)){ 3d0: b1 99 sbic 0x16, 1 ; 22 3d2: 1d c0 rjmp .+58 ; 0x40e <__LOCK_REGION_LENGTH__+0xe> i++; 3d4: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 3d8: 8f 5f subi r24, 0xFF ; 255 3da: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 3de: 87 ea ldi r24, 0xA7 ; 167 3e0: 91 e6 ldi r25, 0x61 ; 97 3e2: 01 97 sbiw r24, 0x01 ; 1 3e4: f1 f7 brne .-4 ; 0x3e2 <__stack+0x183> 3e6: 00 c0 rjmp .+0 ; 0x3e8 <__stack+0x189> 3e8: 00 00 nop _delay_ms(100); if (i>30) 3ea: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 3ee: 8f 31 cpi r24, 0x1F ; 31 3f0: 78 f3 brcs .-34 ; 0x3d0 <__stack+0x171> { if (tiros==0) tiros=3;//evita que nenhuma info inválida passe à frente 3f2: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <tiros> 3f6: 81 11 cpse r24, r1 3f8: 02 c0 rjmp .+4 ; 0x3fe <__stack+0x19f> 3fa: d0 93 62 00 sts 0x0062, r29 ; 0x800062 <tiros> flag=0;//sinaliza final da função eeprom_write_byte((uint8_t*) 10, tiros);//grava na memo 3fe: 60 91 62 00 lds r22, 0x0062 ; 0x800062 <tiros> 402: 70 e0 ldi r23, 0x00 ; 0 404: 8a e0 ldi r24, 0x0A ; 10 406: 90 e0 ldi r25, 0x00 ; 0 408: 8a d1 rcall .+788 ; 0x71e <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 40a: c0 e0 ldi r28, 0x00 ; 0 eeprom_write_byte((uint8_t*) 10, tiros);//grava na memo break; 40c: 01 c0 rjmp .+2 ; 0x410 <__LOCK_REGION_LENGTH__+0x10> 40e: 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 410: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 414: 83 30 cpi r24, 0x03 ; 3 416: f8 f0 brcs .+62 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> { if (i>30)//maior que 4 segundos 418: 8f 31 cpi r24, 0x1F ; 31 41a: c0 f0 brcs .+48 ; 0x44c <__LOCK_REGION_LENGTH__+0x4c> { for (i=0;i<tiros;i++) 41c: 10 92 64 00 sts 0x0064, r1 ; 0x800064 <i> 420: 90 91 64 00 lds r25, 0x0064 ; 0x800064 <i> 424: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <tiros> 428: 98 17 cp r25, r24 42a: a8 f4 brcc .+42 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> { barulho(); 42c: fb de rcall .-522 ; 0x224 <barulho> 42e: 9f e9 ldi r25, 0x9F ; 159 430: e6 e8 ldi r30, 0x86 ; 134 432: f1 e0 ldi r31, 0x01 ; 1 434: 91 50 subi r25, 0x01 ; 1 436: e0 40 sbci r30, 0x00 ; 0 438: f0 40 sbci r31, 0x00 ; 0 43a: e1 f7 brne .-8 ; 0x434 <__LOCK_REGION_LENGTH__+0x34> 43c: 00 c0 rjmp .+0 ; 0x43e <__LOCK_REGION_LENGTH__+0x3e> 43e: 00 00 nop if (i>2)//debounce { if (i>30)//maior que 4 segundos { for (i=0;i<tiros;i++) 440: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <i> 444: 8f 5f subi r24, 0xFF ; 255 446: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <i> 44a: ea cf rjmp .-44 ; 0x420 <__LOCK_REGION_LENGTH__+0x20> { barulho(); _delay_ms(500);//indica a quantidade de tiros configuradas } }else tiros++; 44c: 80 91 62 00 lds r24, 0x0062 ; 0x800062 <tiros> 450: 8f 5f subi r24, 0xFF ; 255 452: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <tiros> } } while (flag);//loop de configuração de quantidade de disparos 456: c1 11 cpse r28, r1 458: b9 cf rjmp .-142 ; 0x3cc <__stack+0x16d> do { barulho(); 45a: e4 de rcall .-568 ; 0x224 <barulho> } while (!bit_get(Trigger,Pintrigger));//não sai da função até que o gatilho seja liberado 45c: b1 9b sbis 0x16, 1 ; 22 45e: fd cf rjmp .-6 ; 0x45a <__LOCK_REGION_LENGTH__+0x5a> } } 460: df 91 pop r29 462: cf 91 pop r28 464: 08 95 ret 00000466 <main>: uint8_t i,check=0;//seta variáveis int main(void) { bit_clear(Ptrigger,Pintrigger);//seta ddr do gatilho como entrada 466: b9 98 cbi 0x17, 1 ; 23 bit_set(Omotor,Pinmotor);//seta ddr do motor como saída 468: b8 9a sbi 0x17, 0 ; 23 bit_clear(Motor,Pinmotor);//garante que o motor ficará desligado 46a: c0 98 cbi 0x18, 0 ; 24 barulho(); 46c: db de rcall .-586 ; 0x224 <barulho> 46e: 8f e4 ldi r24, 0x4F ; 79 470: 93 ec ldi r25, 0xC3 ; 195 472: 01 97 sbiw r24, 0x01 ; 1 474: f1 f7 brne .-4 ; 0x472 <main+0xc> 476: 00 c0 rjmp .+0 ; 0x478 <main+0x12> 478: 00 00 nop _delay_ms(200); barulho(); 47a: d4 de rcall .-600 ; 0x224 <barulho> while(1){ check=0; 47c: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <_edata> do { check++; 480: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <_edata> 484: 8f 5f subi r24, 0xFF ; 255 486: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <_edata> 48a: 87 ee ldi r24, 0xE7 ; 231 48c: 93 e0 ldi r25, 0x03 ; 3 48e: 01 97 sbiw r24, 0x01 ; 1 490: f1 f7 brne .-4 ; 0x48e <main+0x28> 492: 00 c0 rjmp .+0 ; 0x494 <main+0x2e> 494: 00 00 nop 496: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <_edata> _delay_ms(4); } while (!bit_get(Trigger,Pintrigger) && (check<200)); 49a: b1 99 sbic 0x16, 1 ; 22 49c: 02 c0 rjmp .+4 ; 0x4a2 <main+0x3c> 49e: 88 3c cpi r24, 0xC8 ; 200 4a0: 78 f3 brcs .-34 ; 0x480 <main+0x1a> if (check<200) 4a2: 88 3c cpi r24, 0xC8 ; 200 4a4: 88 f4 brcc .+34 ; 0x4c8 <main+0x62> { tiros=eeprom_read_byte((uint8_t*)10);//lê a quantidade de tiros configuradas 4a6: 8a e0 ldi r24, 0x0A ; 10 4a8: 90 e0 ldi r25, 0x00 ; 0 4aa: 31 d1 rcall .+610 ; 0x70e <eeprom_read_byte> 4ac: 80 93 62 00 sts 0x0062, r24 ; 0x800062 <tiros> timeon=eeprom_read_byte((uint8_t*)11);//carrega o tempo de tiro da memória 4b0: 8b e0 ldi r24, 0x0B ; 11 4b2: 90 e0 ldi r25, 0x00 ; 0 4b4: 2c d1 rcall .+600 ; 0x70e <eeprom_read_byte> 4b6: 80 93 63 00 sts 0x0063, r24 ; 0x800063 <timeon> firemode=eeprom_read_byte((uint8_t*)12);//lê a quantidade de tiros configuradas 4ba: 8c e0 ldi r24, 0x0C ; 12 4bc: 90 e0 ldi r25, 0x00 ; 0 4be: 27 d1 rcall .+590 ; 0x70e <eeprom_read_byte> 4c0: 80 93 61 00 sts 0x0061, r24 ; 0x800061 <firemode> normal();//funcionamento normal 4c4: bd dd rcall .-1158 ; 0x40 <normal> 4c6: da cf rjmp .-76 ; 0x47c <main+0x16> }else { conf();//entra no modo de configuração 4c8: bd de rcall .-646 ; 0x244 <conf> 4ca: d8 cf rjmp .-80 ; 0x47c <main+0x16> 000004cc <__cmpsf2>: 4cc: 40 d0 rcall .+128 ; 0x54e <__fp_cmp> 4ce: 08 f4 brcc .+2 ; 0x4d2 <__cmpsf2+0x6> 4d0: 81 e0 ldi r24, 0x01 ; 1 4d2: 08 95 ret 000004d4 <__floatunsisf>: 4d4: e8 94 clt 4d6: 09 c0 rjmp .+18 ; 0x4ea <__floatsisf+0x12> 000004d8 <__floatsisf>: 4d8: 97 fb bst r25, 7 4da: 3e f4 brtc .+14 ; 0x4ea <__floatsisf+0x12> 4dc: 90 95 com r25 4de: 80 95 com r24 4e0: 70 95 com r23 4e2: 61 95 neg r22 4e4: 7f 4f sbci r23, 0xFF ; 255 4e6: 8f 4f sbci r24, 0xFF ; 255 4e8: 9f 4f sbci r25, 0xFF ; 255 4ea: 99 23 and r25, r25 4ec: a9 f0 breq .+42 ; 0x518 <__floatsisf+0x40> 4ee: f9 2f mov r31, r25 4f0: 96 e9 ldi r25, 0x96 ; 150 4f2: bb 27 eor r27, r27 4f4: 93 95 inc r25 4f6: f6 95 lsr r31 4f8: 87 95 ror r24 4fa: 77 95 ror r23 4fc: 67 95 ror r22 4fe: b7 95 ror r27 500: f1 11 cpse r31, r1 502: f8 cf rjmp .-16 ; 0x4f4 <__floatsisf+0x1c> 504: fa f4 brpl .+62 ; 0x544 <__floatsisf+0x6c> 506: bb 0f add r27, r27 508: 11 f4 brne .+4 ; 0x50e <__floatsisf+0x36> 50a: 60 ff sbrs r22, 0 50c: 1b c0 rjmp .+54 ; 0x544 <__floatsisf+0x6c> 50e: 6f 5f subi r22, 0xFF ; 255 510: 7f 4f sbci r23, 0xFF ; 255 512: 8f 4f sbci r24, 0xFF ; 255 514: 9f 4f sbci r25, 0xFF ; 255 516: 16 c0 rjmp .+44 ; 0x544 <__floatsisf+0x6c> 518: 88 23 and r24, r24 51a: 11 f0 breq .+4 ; 0x520 <__floatsisf+0x48> 51c: 96 e9 ldi r25, 0x96 ; 150 51e: 11 c0 rjmp .+34 ; 0x542 <__floatsisf+0x6a> 520: 77 23 and r23, r23 522: 21 f0 breq .+8 ; 0x52c <__floatsisf+0x54> 524: 9e e8 ldi r25, 0x8E ; 142 526: 87 2f mov r24, r23 528: 76 2f mov r23, r22 52a: 05 c0 rjmp .+10 ; 0x536 <__floatsisf+0x5e> 52c: 66 23 and r22, r22 52e: 71 f0 breq .+28 ; 0x54c <__floatsisf+0x74> 530: 96 e8 ldi r25, 0x86 ; 134 532: 86 2f mov r24, r22 534: 70 e0 ldi r23, 0x00 ; 0 536: 60 e0 ldi r22, 0x00 ; 0 538: 2a f0 brmi .+10 ; 0x544 <__floatsisf+0x6c> 53a: 9a 95 dec r25 53c: 66 0f add r22, r22 53e: 77 1f adc r23, r23 540: 88 1f adc r24, r24 542: da f7 brpl .-10 ; 0x53a <__floatsisf+0x62> 544: 88 0f add r24, r24 546: 96 95 lsr r25 548: 87 95 ror r24 54a: 97 f9 bld r25, 7 54c: 08 95 ret 0000054e <__fp_cmp>: 54e: 99 0f add r25, r25 550: 00 08 sbc r0, r0 552: 55 0f add r21, r21 554: aa 0b sbc r26, r26 556: e0 e8 ldi r30, 0x80 ; 128 558: fe ef ldi r31, 0xFE ; 254 55a: 16 16 cp r1, r22 55c: 17 06 cpc r1, r23 55e: e8 07 cpc r30, r24 560: f9 07 cpc r31, r25 562: c0 f0 brcs .+48 ; 0x594 <__fp_cmp+0x46> 564: 12 16 cp r1, r18 566: 13 06 cpc r1, r19 568: e4 07 cpc r30, r20 56a: f5 07 cpc r31, r21 56c: 98 f0 brcs .+38 ; 0x594 <__fp_cmp+0x46> 56e: 62 1b sub r22, r18 570: 73 0b sbc r23, r19 572: 84 0b sbc r24, r20 574: 95 0b sbc r25, r21 576: 39 f4 brne .+14 ; 0x586 <__fp_cmp+0x38> 578: 0a 26 eor r0, r26 57a: 61 f0 breq .+24 ; 0x594 <__fp_cmp+0x46> 57c: 23 2b or r18, r19 57e: 24 2b or r18, r20 580: 25 2b or r18, r21 582: 21 f4 brne .+8 ; 0x58c <__fp_cmp+0x3e> 584: 08 95 ret 586: 0a 26 eor r0, r26 588: 09 f4 brne .+2 ; 0x58c <__fp_cmp+0x3e> 58a: a1 40 sbci r26, 0x01 ; 1 58c: a6 95 lsr r26 58e: 8f ef ldi r24, 0xFF ; 255 590: 81 1d adc r24, r1 592: 81 1d adc r24, r1 594: 08 95 ret 00000596 <__mulsf3>: 596: 0a d0 rcall .+20 ; 0x5ac <__mulsf3x> 598: 80 c0 rjmp .+256 ; 0x69a <__fp_round> 59a: 71 d0 rcall .+226 ; 0x67e <__fp_pscA> 59c: 28 f0 brcs .+10 ; 0x5a8 <__mulsf3+0x12> 59e: 76 d0 rcall .+236 ; 0x68c <__fp_pscB> 5a0: 18 f0 brcs .+6 ; 0x5a8 <__mulsf3+0x12> 5a2: 95 23 and r25, r21 5a4: 09 f0 breq .+2 ; 0x5a8 <__mulsf3+0x12> 5a6: 62 c0 rjmp .+196 ; 0x66c <__fp_inf> 5a8: 67 c0 rjmp .+206 ; 0x678 <__fp_nan> 5aa: ab c0 rjmp .+342 ; 0x702 <__fp_szero> 000005ac <__mulsf3x>: 5ac: 87 d0 rcall .+270 ; 0x6bc <__fp_split3> 5ae: a8 f3 brcs .-22 ; 0x59a <__mulsf3+0x4> 000005b0 <__mulsf3_pse>: 5b0: 99 23 and r25, r25 5b2: d9 f3 breq .-10 ; 0x5aa <__mulsf3+0x14> 5b4: 55 23 and r21, r21 5b6: c9 f3 breq .-14 ; 0x5aa <__mulsf3+0x14> 5b8: 95 0f add r25, r21 5ba: 50 e0 ldi r21, 0x00 ; 0 5bc: 55 1f adc r21, r21 5be: aa 27 eor r26, r26 5c0: ee 27 eor r30, r30 5c2: ff 27 eor r31, r31 5c4: bb 27 eor r27, r27 5c6: 00 24 eor r0, r0 5c8: 08 94 sec 5ca: 67 95 ror r22 5cc: 20 f4 brcc .+8 ; 0x5d6 <__mulsf3_pse+0x26> 5ce: e2 0f add r30, r18 5d0: f3 1f adc r31, r19 5d2: b4 1f adc r27, r20 5d4: 0a 1e adc r0, r26 5d6: 22 0f add r18, r18 5d8: 33 1f adc r19, r19 5da: 44 1f adc r20, r20 5dc: aa 1f adc r26, r26 5de: 66 95 lsr r22 5e0: a9 f7 brne .-22 ; 0x5cc <__mulsf3_pse+0x1c> 5e2: 77 95 ror r23 5e4: 30 f4 brcc .+12 ; 0x5f2 <__mulsf3_pse+0x42> 5e6: f3 0f add r31, r19 5e8: b4 1f adc r27, r20 5ea: 0a 1e adc r0, r26 5ec: 12 1e adc r1, r18 5ee: 08 f4 brcc .+2 ; 0x5f2 <__mulsf3_pse+0x42> 5f0: 63 95 inc r22 5f2: 33 0f add r19, r19 5f4: 44 1f adc r20, r20 5f6: aa 1f adc r26, r26 5f8: 22 1f adc r18, r18 5fa: 76 95 lsr r23 5fc: 99 f7 brne .-26 ; 0x5e4 <__mulsf3_pse+0x34> 5fe: 87 95 ror r24 600: 20 f4 brcc .+8 ; 0x60a <__mulsf3_pse+0x5a> 602: b4 0f add r27, r20 604: 0a 1e adc r0, r26 606: 12 1e adc r1, r18 608: 63 1f adc r22, r19 60a: 44 0f add r20, r20 60c: aa 1f adc r26, r26 60e: 22 1f adc r18, r18 610: 33 1f adc r19, r19 612: 86 95 lsr r24 614: a9 f7 brne .-22 ; 0x600 <__mulsf3_pse+0x50> 616: 86 2f mov r24, r22 618: 71 2d mov r23, r1 61a: 60 2d mov r22, r0 61c: 11 24 eor r1, r1 61e: 9f 57 subi r25, 0x7F ; 127 620: 50 40 sbci r21, 0x00 ; 0 622: 8a f0 brmi .+34 ; 0x646 <__mulsf3_pse+0x96> 624: e1 f0 breq .+56 ; 0x65e <__mulsf3_pse+0xae> 626: 88 23 and r24, r24 628: 4a f0 brmi .+18 ; 0x63c <__mulsf3_pse+0x8c> 62a: ee 0f add r30, r30 62c: ff 1f adc r31, r31 62e: bb 1f adc r27, r27 630: 66 1f adc r22, r22 632: 77 1f adc r23, r23 634: 88 1f adc r24, r24 636: 91 50 subi r25, 0x01 ; 1 638: 50 40 sbci r21, 0x00 ; 0 63a: a9 f7 brne .-22 ; 0x626 <__mulsf3_pse+0x76> 63c: 9e 3f cpi r25, 0xFE ; 254 63e: 51 05 cpc r21, r1 640: 70 f0 brcs .+28 ; 0x65e <__mulsf3_pse+0xae> 642: 14 c0 rjmp .+40 ; 0x66c <__fp_inf> 644: 5e c0 rjmp .+188 ; 0x702 <__fp_szero> 646: 5f 3f cpi r21, 0xFF ; 255 648: ec f3 brlt .-6 ; 0x644 <__mulsf3_pse+0x94> 64a: 98 3e cpi r25, 0xE8 ; 232 64c: dc f3 brlt .-10 ; 0x644 <__mulsf3_pse+0x94> 64e: 86 95 lsr r24 650: 77 95 ror r23 652: 67 95 ror r22 654: b7 95 ror r27 656: f7 95 ror r31 658: e7 95 ror r30 65a: 9f 5f subi r25, 0xFF ; 255 65c: c1 f7 brne .-16 ; 0x64e <__mulsf3_pse+0x9e> 65e: fe 2b or r31, r30 660: 88 0f add r24, r24 662: 91 1d adc r25, r1 664: 96 95 lsr r25 666: 87 95 ror r24 668: 97 f9 bld r25, 7 66a: 08 95 ret 0000066c <__fp_inf>: 66c: 97 f9 bld r25, 7 66e: 9f 67 ori r25, 0x7F ; 127 670: 80 e8 ldi r24, 0x80 ; 128 672: 70 e0 ldi r23, 0x00 ; 0 674: 60 e0 ldi r22, 0x00 ; 0 676: 08 95 ret 00000678 <__fp_nan>: 678: 9f ef ldi r25, 0xFF ; 255 67a: 80 ec ldi r24, 0xC0 ; 192 67c: 08 95 ret 0000067e <__fp_pscA>: 67e: 00 24 eor r0, r0 680: 0a 94 dec r0 682: 16 16 cp r1, r22 684: 17 06 cpc r1, r23 686: 18 06 cpc r1, r24 688: 09 06 cpc r0, r25 68a: 08 95 ret 0000068c <__fp_pscB>: 68c: 00 24 eor r0, r0 68e: 0a 94 dec r0 690: 12 16 cp r1, r18 692: 13 06 cpc r1, r19 694: 14 06 cpc r1, r20 696: 05 06 cpc r0, r21 698: 08 95 ret 0000069a <__fp_round>: 69a: 09 2e mov r0, r25 69c: 03 94 inc r0 69e: 00 0c add r0, r0 6a0: 11 f4 brne .+4 ; 0x6a6 <__fp_round+0xc> 6a2: 88 23 and r24, r24 6a4: 52 f0 brmi .+20 ; 0x6ba <__fp_round+0x20> 6a6: bb 0f add r27, r27 6a8: 40 f4 brcc .+16 ; 0x6ba <__fp_round+0x20> 6aa: bf 2b or r27, r31 6ac: 11 f4 brne .+4 ; 0x6b2 <__fp_round+0x18> 6ae: 60 ff sbrs r22, 0 6b0: 04 c0 rjmp .+8 ; 0x6ba <__fp_round+0x20> 6b2: 6f 5f subi r22, 0xFF ; 255 6b4: 7f 4f sbci r23, 0xFF ; 255 6b6: 8f 4f sbci r24, 0xFF ; 255 6b8: 9f 4f sbci r25, 0xFF ; 255 6ba: 08 95 ret 000006bc <__fp_split3>: 6bc: 57 fd sbrc r21, 7 6be: 90 58 subi r25, 0x80 ; 128 6c0: 44 0f add r20, r20 6c2: 55 1f adc r21, r21 6c4: 59 f0 breq .+22 ; 0x6dc <__fp_splitA+0x10> 6c6: 5f 3f cpi r21, 0xFF ; 255 6c8: 71 f0 breq .+28 ; 0x6e6 <__fp_splitA+0x1a> 6ca: 47 95 ror r20 000006cc <__fp_splitA>: 6cc: 88 0f add r24, r24 6ce: 97 fb bst r25, 7 6d0: 99 1f adc r25, r25 6d2: 61 f0 breq .+24 ; 0x6ec <__fp_splitA+0x20> 6d4: 9f 3f cpi r25, 0xFF ; 255 6d6: 79 f0 breq .+30 ; 0x6f6 <__fp_splitA+0x2a> 6d8: 87 95 ror r24 6da: 08 95 ret 6dc: 12 16 cp r1, r18 6de: 13 06 cpc r1, r19 6e0: 14 06 cpc r1, r20 6e2: 55 1f adc r21, r21 6e4: f2 cf rjmp .-28 ; 0x6ca <__fp_split3+0xe> 6e6: 46 95 lsr r20 6e8: f1 df rcall .-30 ; 0x6cc <__fp_splitA> 6ea: 08 c0 rjmp .+16 ; 0x6fc <__fp_splitA+0x30> 6ec: 16 16 cp r1, r22 6ee: 17 06 cpc r1, r23 6f0: 18 06 cpc r1, r24 6f2: 99 1f adc r25, r25 6f4: f1 cf rjmp .-30 ; 0x6d8 <__fp_splitA+0xc> 6f6: 86 95 lsr r24 6f8: 71 05 cpc r23, r1 6fa: 61 05 cpc r22, r1 6fc: 08 94 sec 6fe: 08 95 ret 00000700 <__fp_zero>: 700: e8 94 clt 00000702 <__fp_szero>: 702: bb 27 eor r27, r27 704: 66 27 eor r22, r22 706: 77 27 eor r23, r23 708: cb 01 movw r24, r22 70a: 97 f9 bld r25, 7 70c: 08 95 ret 0000070e <eeprom_read_byte>: 70e: e1 99 sbic 0x1c, 1 ; 28 710: fe cf rjmp .-4 ; 0x70e <eeprom_read_byte> 712: 9f bb out 0x1f, r25 ; 31 714: 8e bb out 0x1e, r24 ; 30 716: e0 9a sbi 0x1c, 0 ; 28 718: 99 27 eor r25, r25 71a: 8d b3 in r24, 0x1d ; 29 71c: 08 95 ret 0000071e <eeprom_write_byte>: 71e: 26 2f mov r18, r22 00000720 <eeprom_write_r18>: 720: e1 99 sbic 0x1c, 1 ; 28 722: fe cf rjmp .-4 ; 0x720 <eeprom_write_r18> 724: 1c ba out 0x1c, r1 ; 28 726: 9f bb out 0x1f, r25 ; 31 728: 8e bb out 0x1e, r24 ; 30 72a: 2d bb out 0x1d, r18 ; 29 72c: 0f b6 in r0, 0x3f ; 63 72e: f8 94 cli 730: e2 9a sbi 0x1c, 2 ; 28 732: e1 9a sbi 0x1c, 1 ; 28 734: 0f be out 0x3f, r0 ; 63 736: 01 96 adiw r24, 0x01 ; 1 738: 08 95 ret 0000073a <_exit>: 73a: f8 94 cli 0000073c <__stop_program>: 73c: ff cf rjmp .-2 ; 0x73c <__stop_program>