char pgmInitSirfMode[] PROGMEM = "\x1b" "$PSRF100,0,38400,8,1,0*3C\r\n"; void gps_enable (void) { 5e2: 80 91 64 00 lds r24, 0x0064 5e6: 8d 7f andi r24, 0xFD ; 253 5e8: 80 93 64 00 sts 0x0064, r24 PRR &= ~(1 << PRUSART0); UBRR0 = GPS_UBRRVAL; 5ec: 8c e0 ldi r24, 0x0C ; 12 5ee: 90 e0 ldi r25, 0x00 ; 0 5f0: 90 93 c5 00 sts 0x00C5, r25 5f4: 80 93 c4 00 sts 0x00C4, r24 UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); 5f8: 86 e0 ldi r24, 0x06 ; 6 5fa: 80 93 c2 00 sts 0x00C2, r24 FETPORT &= ~(1 << GPS_FET); 5fe: 5b 98 cbi 0x0b, 3 ; 11 UCSR0B = (1 << RXEN0) | (1 << TXEN0); 600: 88 e1 ldi r24, 0x18 ; 24 602: 80 93 c1 00 sts 0x00C1, r24 UDR0 = byte; } void gps_transmit_p (PGM_P address) { uint8_t count = pgm_read_byte(address++); 606: e4 e3 ldi r30, 0x34 ; 52 608: f0 e0 ldi r31, 0x00 ; 0 60a: 94 91 lpm r25, Z+ 60c: 31 96 adiw r30, 0x01 ; 1 60e: 09 c0 rjmp .+18 ; 0x622 while(count--) { gps_transmit(pgm_read_byte(address++)); 610: 24 91 lpm r18, Z+ PRR |= (1 << PRUSART0); } void gps_transmit (uint8_t byte) { while (! (UCSR0A & (1 << UDRE0))); 612: 80 91 c0 00 lds r24, 0x00C0 616: 85 ff sbrs r24, 5 618: fc cf rjmp .-8 ; 0x612 void gps_transmit_p (PGM_P address) { uint8_t count = pgm_read_byte(address++); while(count--) { gps_transmit(pgm_read_byte(address++)); 61a: 31 96 adiw r30, 0x01 ; 1 } void gps_transmit (uint8_t byte) { while (! (UCSR0A & (1 << UDRE0))); UDR0 = byte; 61c: 20 93 c6 00 sts 0x00C6, r18 620: 91 50 subi r25, 0x01 ; 1 } void gps_transmit_p (PGM_P address) { uint8_t count = pgm_read_byte(address++); while(count--) 622: 99 23 and r25, r25 624: a9 f7 brne .-22 ; 0x610 } 626: 08 95 ret [... entfernte funktion] 0000063a : void gps_transmit (uint8_t byte) { 63a: 98 2f mov r25, r24 while (! (UCSR0A & (1 << UDRE0))); 63c: 80 91 c0 00 lds r24, 0x00C0 640: 85 ff sbrs r24, 5 642: fc cf rjmp .-8 ; 0x63c UDR0 = byte; 644: 90 93 c6 00 sts 0x00C6, r25 } 648: 08 95 ret 0000064a : void gps_transmit_p (PGM_P address) { 64a: fc 01 movw r30, r24 uint8_t count = pgm_read_byte(address++); 64c: 9c 01 movw r18, r24 64e: 2f 5f subi r18, 0xFF ; 255 650: 3f 4f sbci r19, 0xFF ; 255 652: 94 91 lpm r25, Z+ 654: 0b c0 rjmp .+22 ; 0x66c while(count--) { gps_transmit(pgm_read_byte(address++)); 656: f9 01 movw r30, r18 658: 44 91 lpm r20, Z+ PRR |= (1 << PRUSART0); } void gps_transmit (uint8_t byte) { while (! (UCSR0A & (1 << UDRE0))); 65a: 80 91 c0 00 lds r24, 0x00C0 65e: 85 ff sbrs r24, 5 660: fc cf rjmp .-8 ; 0x65a void gps_transmit_p (PGM_P address) { uint8_t count = pgm_read_byte(address++); while(count--) { gps_transmit(pgm_read_byte(address++)); 662: 2f 5f subi r18, 0xFF ; 255 664: 3f 4f sbci r19, 0xFF ; 255 } void gps_transmit (uint8_t byte) { while (! (UCSR0A & (1 << UDRE0))); UDR0 = byte; 666: 40 93 c6 00 sts 0x00C6, r20 66a: 91 50 subi r25, 0x01 ; 1 } void gps_transmit_p (PGM_P address) { uint8_t count = pgm_read_byte(address++); while(count--) 66c: 99 23 and r25, r25 66e: 99 f7 brne .-26 ; 0x656 { gps_transmit(pgm_read_byte(address++)); } } 670: 08 95 ret