2052 lines
72 KiB
Plaintext
2052 lines
72 KiB
Plaintext
|
|
|||
|
main.elf: file format elf32-avr
|
|||
|
|
|||
|
Sections:
|
|||
|
Idx Name Size VMA LMA File off Algn
|
|||
|
0 .data 00000050 00800100 00000e7a 00000f0e 2**0
|
|||
|
CONTENTS, ALLOC, LOAD, DATA
|
|||
|
1 .text 00000e7a 00000000 00000000 00000094 2**1
|
|||
|
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
|||
|
2 .bss 00000256 00800150 00800150 00000f5e 2**0
|
|||
|
ALLOC
|
|||
|
3 .stab 00000c84 00000000 00000000 00000f60 2**2
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
4 .stabstr 0000019d 00000000 00000000 00001be4 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
5 .debug_aranges 000001c8 00000000 00000000 00001d88 2**3
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
6 .debug_info 0000145e 00000000 00000000 00001f50 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
7 .debug_abbrev 00000983 00000000 00000000 000033ae 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
8 .debug_line 00000953 00000000 00000000 00003d31 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
9 .debug_frame 0000035c 00000000 00000000 00004684 2**2
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
10 .debug_str 00000421 00000000 00000000 000049e0 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
11 .debug_loc 00000cc7 00000000 00000000 00004e01 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
12 .debug_ranges 00000048 00000000 00000000 00005ac8 2**0
|
|||
|
CONTENTS, READONLY, DEBUGGING
|
|||
|
|
|||
|
Disassembly of section .text:
|
|||
|
|
|||
|
00000000 <__vectors>:
|
|||
|
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
|
|||
|
4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
38: 0c 94 7b 02 jmp 0x4f6 ; 0x4f6 <__vector_14>
|
|||
|
3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
48: 0c 94 d7 00 jmp 0x1ae ; 0x1ae <__vector_18>
|
|||
|
4c: 0c 94 17 01 jmp 0x22e ; 0x22e <__vector_19>
|
|||
|
50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
|
|||
|
|
|||
|
00000068 <__ctors_end>:
|
|||
|
68: 11 24 eor r1, r1
|
|||
|
6a: 1f be out 0x3f, r1 ; 63
|
|||
|
6c: cf ef ldi r28, 0xFF ; 255
|
|||
|
6e: d8 e0 ldi r29, 0x08 ; 8
|
|||
|
70: de bf out 0x3e, r29 ; 62
|
|||
|
72: cd bf out 0x3d, r28 ; 61
|
|||
|
|
|||
|
00000074 <__do_copy_data>:
|
|||
|
74: 11 e0 ldi r17, 0x01 ; 1
|
|||
|
76: a0 e0 ldi r26, 0x00 ; 0
|
|||
|
78: b1 e0 ldi r27, 0x01 ; 1
|
|||
|
7a: ea e7 ldi r30, 0x7A ; 122
|
|||
|
7c: fe e0 ldi r31, 0x0E ; 14
|
|||
|
7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10>
|
|||
|
80: 05 90 lpm r0, Z+
|
|||
|
82: 0d 92 st X+, r0
|
|||
|
84: a0 35 cpi r26, 0x50 ; 80
|
|||
|
86: b1 07 cpc r27, r17
|
|||
|
88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc>
|
|||
|
|
|||
|
0000008a <__do_clear_bss>:
|
|||
|
8a: 13 e0 ldi r17, 0x03 ; 3
|
|||
|
8c: a0 e5 ldi r26, 0x50 ; 80
|
|||
|
8e: b1 e0 ldi r27, 0x01 ; 1
|
|||
|
90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start>
|
|||
|
|
|||
|
00000092 <.do_clear_bss_loop>:
|
|||
|
92: 1d 92 st X+, r1
|
|||
|
|
|||
|
00000094 <.do_clear_bss_start>:
|
|||
|
94: a6 3a cpi r26, 0xA6 ; 166
|
|||
|
96: b1 07 cpc r27, r17
|
|||
|
98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop>
|
|||
|
9a: 0e 94 5b 03 call 0x6b6 ; 0x6b6 <main>
|
|||
|
9e: 0c 94 3b 07 jmp 0xe76 ; 0xe76 <_exit>
|
|||
|
|
|||
|
000000a2 <__bad_interrupt>:
|
|||
|
a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
|
|||
|
|
|||
|
000000a6 <digital_read>:
|
|||
|
/* Make PORTB5 (Arduino digital 13) an output by setting bit in DDR. */
|
|||
|
DDRB |= _BV(PORTB5);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
uint8_t digital_read(int input_register, int pin) {
|
|||
|
a6: cf 93 push r28
|
|||
|
a8: df 93 push r29
|
|||
|
aa: 00 d0 rcall .+0 ; 0xac <digital_read+0x6>
|
|||
|
ac: cd b7 in r28, 0x3d ; 61
|
|||
|
ae: de b7 in r29, 0x3e ; 62
|
|||
|
b0: 9a 83 std Y+2, r25 ; 0x02
|
|||
|
b2: 89 83 std Y+1, r24 ; 0x01
|
|||
|
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
|
|||
|
b4: 89 81 ldd r24, Y+1 ; 0x01
|
|||
|
b6: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
b8: 02 c0 rjmp .+4 ; 0xbe <digital_read+0x18>
|
|||
|
ba: 95 95 asr r25
|
|||
|
bc: 87 95 ror r24
|
|||
|
be: 6a 95 dec r22
|
|||
|
c0: e2 f7 brpl .-8 ; 0xba <digital_read+0x14>
|
|||
|
}
|
|||
|
c2: 81 70 andi r24, 0x01 ; 1
|
|||
|
c4: 0f 90 pop r0
|
|||
|
c6: 0f 90 pop r0
|
|||
|
c8: df 91 pop r29
|
|||
|
ca: cf 91 pop r28
|
|||
|
cc: 08 95 ret
|
|||
|
|
|||
|
000000ce <digital_write>:
|
|||
|
|
|||
|
/* You could use cbi ie &= ~ or sbi ie |= but this makes code more readable. */
|
|||
|
void digital_write(volatile uint8_t *data_port, uint8_t pin, uint8_t value) {
|
|||
|
ce: fc 01 movw r30, r24
|
|||
|
if (0 == value) {
|
|||
|
*data_port &= ~(_BV(pin));
|
|||
|
d0: 20 81 ld r18, Z
|
|||
|
d2: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
d4: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
d6: 02 c0 rjmp .+4 ; 0xdc <digital_write+0xe>
|
|||
|
d8: 88 0f add r24, r24
|
|||
|
da: 99 1f adc r25, r25
|
|||
|
dc: 6a 95 dec r22
|
|||
|
de: e2 f7 brpl .-8 ; 0xd8 <digital_write+0xa>
|
|||
|
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
|
|||
|
}
|
|||
|
|
|||
|
/* You could use cbi ie &= ~ or sbi ie |= but this makes code more readable. */
|
|||
|
void digital_write(volatile uint8_t *data_port, uint8_t pin, uint8_t value) {
|
|||
|
if (0 == value) {
|
|||
|
e0: 44 23 and r20, r20
|
|||
|
e2: 21 f4 brne .+8 ; 0xec <digital_write+0x1e>
|
|||
|
*data_port &= ~(_BV(pin));
|
|||
|
e4: 80 95 com r24
|
|||
|
e6: 82 23 and r24, r18
|
|||
|
e8: 80 83 st Z, r24
|
|||
|
ea: 08 95 ret
|
|||
|
} else {
|
|||
|
*data_port |= _BV(pin);
|
|||
|
ec: 28 2b or r18, r24
|
|||
|
ee: 20 83 st Z, r18
|
|||
|
f0: 08 95 ret
|
|||
|
|
|||
|
000000f2 <uart_init>:
|
|||
|
|
|||
|
/* http://www.cs.mun.ca/~rod/Winter2007/4723/notes/serial/serial.html */
|
|||
|
|
|||
|
void uart_init(void) {
|
|||
|
|
|||
|
tx_buffer.start = 0;
|
|||
|
f2: 10 92 51 03 sts 0x0351, r1
|
|||
|
f6: 10 92 50 03 sts 0x0350, r1
|
|||
|
tx_buffer.end = 0;
|
|||
|
fa: 10 92 53 03 sts 0x0353, r1
|
|||
|
fe: 10 92 52 03 sts 0x0352, r1
|
|||
|
|
|||
|
rx_buffer.start = 0;
|
|||
|
102: 10 92 95 03 sts 0x0395, r1
|
|||
|
106: 10 92 94 03 sts 0x0394, r1
|
|||
|
rx_buffer.end = 0;
|
|||
|
10a: 10 92 97 03 sts 0x0397, r1
|
|||
|
10e: 10 92 96 03 sts 0x0396, r1
|
|||
|
|
|||
|
UBRR0H = UBRRH_VALUE;
|
|||
|
112: 10 92 c5 00 sts 0x00C5, r1
|
|||
|
UBRR0L = UBRRL_VALUE;
|
|||
|
116: 87 e6 ldi r24, 0x67 ; 103
|
|||
|
118: 80 93 c4 00 sts 0x00C4, r24
|
|||
|
|
|||
|
UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
|
|||
|
11c: 86 e0 ldi r24, 0x06 ; 6
|
|||
|
11e: 80 93 c2 00 sts 0x00C2, r24
|
|||
|
UCSR0B = _BV(RXEN0) | _BV(TXEN0); /* Enable RX and TX */
|
|||
|
122: 88 e1 ldi r24, 0x18 ; 24
|
|||
|
124: 80 93 c1 00 sts 0x00C1, r24
|
|||
|
|
|||
|
sei();
|
|||
|
128: 78 94 sei
|
|||
|
}
|
|||
|
12a: 08 95 ret
|
|||
|
|
|||
|
0000012c <uart_putchar>:
|
|||
|
|
|||
|
int uart_putchar(char c, FILE *stream) {
|
|||
|
12c: 1f 93 push r17
|
|||
|
12e: 18 2f mov r17, r24
|
|||
|
if (c == '\n') {
|
|||
|
130: 8a 30 cpi r24, 0x0A ; 10
|
|||
|
132: 19 f4 brne .+6 ; 0x13a <uart_putchar+0xe>
|
|||
|
uart_putchar('\r', stream);
|
|||
|
134: 8d e0 ldi r24, 0x0D ; 13
|
|||
|
136: 0e 94 96 00 call 0x12c ; 0x12c <uart_putchar>
|
|||
|
}
|
|||
|
|
|||
|
int write_pointer = (tx_buffer.end + 1) % UART_TX_BUFFER_SIZE;
|
|||
|
13a: 20 91 52 03 lds r18, 0x0352
|
|||
|
13e: 30 91 53 03 lds r19, 0x0353
|
|||
|
142: c9 01 movw r24, r18
|
|||
|
144: 01 96 adiw r24, 0x01 ; 1
|
|||
|
146: 60 e0 ldi r22, 0x00 ; 0
|
|||
|
148: 71 e0 ldi r23, 0x01 ; 1
|
|||
|
14a: 0e 94 48 04 call 0x890 ; 0x890 <__divmodhi4>
|
|||
|
|
|||
|
if (write_pointer != tx_buffer.start){
|
|||
|
14e: 40 91 50 03 lds r20, 0x0350
|
|||
|
152: 50 91 51 03 lds r21, 0x0351
|
|||
|
156: 84 17 cp r24, r20
|
|||
|
158: 95 07 cpc r25, r21
|
|||
|
15a: 81 f0 breq .+32 ; 0x17c <uart_putchar+0x50>
|
|||
|
tx_buffer.buffer[tx_buffer.end] = c;
|
|||
|
15c: f9 01 movw r30, r18
|
|||
|
15e: ee 0f add r30, r30
|
|||
|
160: ff 1f adc r31, r31
|
|||
|
162: e0 5b subi r30, 0xB0 ; 176
|
|||
|
164: fe 4f sbci r31, 0xFE ; 254
|
|||
|
166: 10 83 st Z, r17
|
|||
|
168: 11 82 std Z+1, r1 ; 0x01
|
|||
|
tx_buffer.end = write_pointer;
|
|||
|
16a: 90 93 53 03 sts 0x0353, r25
|
|||
|
16e: 80 93 52 03 sts 0x0352, r24
|
|||
|
|
|||
|
/* Data available. Enable the transmit interrupt for serial port 0. */
|
|||
|
UCSR0B |= _BV(UDRIE0);
|
|||
|
172: 80 91 c1 00 lds r24, 0x00C1
|
|||
|
176: 80 62 ori r24, 0x20 ; 32
|
|||
|
178: 80 93 c1 00 sts 0x00C1, r24
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
17c: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
17e: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
180: 1f 91 pop r17
|
|||
|
182: 08 95 ret
|
|||
|
|
|||
|
00000184 <uart_getchar>:
|
|||
|
|
|||
|
int uart_getchar(FILE *stream) {
|
|||
|
int read_pointer = (rx_buffer.start + 1) % UART_RX_BUFFER_SIZE;
|
|||
|
184: 80 91 94 03 lds r24, 0x0394
|
|||
|
188: 90 91 95 03 lds r25, 0x0395
|
|||
|
18c: 01 96 adiw r24, 0x01 ; 1
|
|||
|
18e: 60 e2 ldi r22, 0x20 ; 32
|
|||
|
190: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
192: 0e 94 48 04 call 0x890 ; 0x890 <__divmodhi4>
|
|||
|
|
|||
|
rx_buffer.start = read_pointer;
|
|||
|
196: 90 93 95 03 sts 0x0395, r25
|
|||
|
19a: 80 93 94 03 sts 0x0394, r24
|
|||
|
return rx_buffer.buffer[read_pointer];
|
|||
|
19e: fc 01 movw r30, r24
|
|||
|
1a0: ee 0f add r30, r30
|
|||
|
1a2: ff 1f adc r31, r31
|
|||
|
1a4: ec 5a subi r30, 0xAC ; 172
|
|||
|
1a6: fc 4f sbci r31, 0xFC ; 252
|
|||
|
}
|
|||
|
1a8: 80 81 ld r24, Z
|
|||
|
1aa: 91 81 ldd r25, Z+1 ; 0x01
|
|||
|
1ac: 08 95 ret
|
|||
|
|
|||
|
000001ae <__vector_18>:
|
|||
|
|
|||
|
ISR(USART_RX_vect) {
|
|||
|
1ae: 1f 92 push r1
|
|||
|
1b0: 0f 92 push r0
|
|||
|
1b2: 0f b6 in r0, 0x3f ; 63
|
|||
|
1b4: 0f 92 push r0
|
|||
|
1b6: 11 24 eor r1, r1
|
|||
|
1b8: 2f 93 push r18
|
|||
|
1ba: 3f 93 push r19
|
|||
|
1bc: 4f 93 push r20
|
|||
|
1be: 5f 93 push r21
|
|||
|
1c0: 6f 93 push r22
|
|||
|
1c2: 7f 93 push r23
|
|||
|
1c4: 8f 93 push r24
|
|||
|
1c6: 9f 93 push r25
|
|||
|
1c8: af 93 push r26
|
|||
|
1ca: bf 93 push r27
|
|||
|
1cc: ef 93 push r30
|
|||
|
1ce: ff 93 push r31
|
|||
|
int write_pointer = (rx_buffer.end + 1) % UART_RX_BUFFER_SIZE;
|
|||
|
1d0: 20 91 96 03 lds r18, 0x0396
|
|||
|
1d4: 30 91 97 03 lds r19, 0x0397
|
|||
|
1d8: c9 01 movw r24, r18
|
|||
|
1da: 01 96 adiw r24, 0x01 ; 1
|
|||
|
1dc: 60 e2 ldi r22, 0x20 ; 32
|
|||
|
1de: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
1e0: 0e 94 48 04 call 0x890 ; 0x890 <__divmodhi4>
|
|||
|
|
|||
|
/* Add next byte to ringbuffer if it has space available. */
|
|||
|
if (write_pointer != rx_buffer.start){
|
|||
|
1e4: 40 91 94 03 lds r20, 0x0394
|
|||
|
1e8: 50 91 95 03 lds r21, 0x0395
|
|||
|
1ec: 84 17 cp r24, r20
|
|||
|
1ee: 95 07 cpc r25, r21
|
|||
|
1f0: 69 f0 breq .+26 ; 0x20c <__vector_18+0x5e>
|
|||
|
rx_buffer.buffer[rx_buffer.end] = UDR0;
|
|||
|
1f2: 40 91 c6 00 lds r20, 0x00C6
|
|||
|
1f6: f9 01 movw r30, r18
|
|||
|
1f8: ee 0f add r30, r30
|
|||
|
1fa: ff 1f adc r31, r31
|
|||
|
1fc: ec 5a subi r30, 0xAC ; 172
|
|||
|
1fe: fc 4f sbci r31, 0xFC ; 252
|
|||
|
200: 40 83 st Z, r20
|
|||
|
202: 11 82 std Z+1, r1 ; 0x01
|
|||
|
rx_buffer.end = write_pointer;
|
|||
|
204: 90 93 97 03 sts 0x0397, r25
|
|||
|
208: 80 93 96 03 sts 0x0396, r24
|
|||
|
}
|
|||
|
}
|
|||
|
20c: ff 91 pop r31
|
|||
|
20e: ef 91 pop r30
|
|||
|
210: bf 91 pop r27
|
|||
|
212: af 91 pop r26
|
|||
|
214: 9f 91 pop r25
|
|||
|
216: 8f 91 pop r24
|
|||
|
218: 7f 91 pop r23
|
|||
|
21a: 6f 91 pop r22
|
|||
|
21c: 5f 91 pop r21
|
|||
|
21e: 4f 91 pop r20
|
|||
|
220: 3f 91 pop r19
|
|||
|
222: 2f 91 pop r18
|
|||
|
224: 0f 90 pop r0
|
|||
|
226: 0f be out 0x3f, r0 ; 63
|
|||
|
228: 0f 90 pop r0
|
|||
|
22a: 1f 90 pop r1
|
|||
|
22c: 18 95 reti
|
|||
|
|
|||
|
0000022e <__vector_19>:
|
|||
|
|
|||
|
ISR(USART_UDRE_vect){
|
|||
|
22e: 1f 92 push r1
|
|||
|
230: 0f 92 push r0
|
|||
|
232: 0f b6 in r0, 0x3f ; 63
|
|||
|
234: 0f 92 push r0
|
|||
|
236: 11 24 eor r1, r1
|
|||
|
238: 2f 93 push r18
|
|||
|
23a: 3f 93 push r19
|
|||
|
23c: 5f 93 push r21
|
|||
|
23e: 6f 93 push r22
|
|||
|
240: 7f 93 push r23
|
|||
|
242: 8f 93 push r24
|
|||
|
244: 9f 93 push r25
|
|||
|
246: af 93 push r26
|
|||
|
248: bf 93 push r27
|
|||
|
24a: ef 93 push r30
|
|||
|
24c: ff 93 push r31
|
|||
|
int read_pointer = (tx_buffer.start + 1) % UART_TX_BUFFER_SIZE;
|
|||
|
24e: 80 91 50 03 lds r24, 0x0350
|
|||
|
252: 90 91 51 03 lds r25, 0x0351
|
|||
|
256: 01 96 adiw r24, 0x01 ; 1
|
|||
|
258: 60 e0 ldi r22, 0x00 ; 0
|
|||
|
25a: 71 e0 ldi r23, 0x01 ; 1
|
|||
|
25c: 0e 94 48 04 call 0x890 ; 0x890 <__divmodhi4>
|
|||
|
|
|||
|
/* Transmit next byte if data available in ringbuffer. */
|
|||
|
if (read_pointer != tx_buffer.end) {
|
|||
|
260: 20 91 52 03 lds r18, 0x0352
|
|||
|
264: 30 91 53 03 lds r19, 0x0353
|
|||
|
268: 82 17 cp r24, r18
|
|||
|
26a: 93 07 cpc r25, r19
|
|||
|
26c: 69 f0 breq .+26 ; 0x288 <__vector_19+0x5a>
|
|||
|
UDR0 = tx_buffer.buffer[read_pointer];
|
|||
|
26e: fc 01 movw r30, r24
|
|||
|
270: ee 0f add r30, r30
|
|||
|
272: ff 1f adc r31, r31
|
|||
|
274: e0 5b subi r30, 0xB0 ; 176
|
|||
|
276: fe 4f sbci r31, 0xFE ; 254
|
|||
|
278: 20 81 ld r18, Z
|
|||
|
27a: 20 93 c6 00 sts 0x00C6, r18
|
|||
|
tx_buffer.start = read_pointer;
|
|||
|
27e: 90 93 51 03 sts 0x0351, r25
|
|||
|
282: 80 93 50 03 sts 0x0350, r24
|
|||
|
286: 05 c0 rjmp .+10 ; 0x292 <__vector_19+0x64>
|
|||
|
} else {
|
|||
|
/* Nothing to send. Disable the transmit interrupt for serial port 0. */
|
|||
|
UCSR0B &= ~_BV(UDRIE0);
|
|||
|
288: 80 91 c1 00 lds r24, 0x00C1
|
|||
|
28c: 8f 7d andi r24, 0xDF ; 223
|
|||
|
28e: 80 93 c1 00 sts 0x00C1, r24
|
|||
|
}
|
|||
|
}
|
|||
|
292: ff 91 pop r31
|
|||
|
294: ef 91 pop r30
|
|||
|
296: bf 91 pop r27
|
|||
|
298: af 91 pop r26
|
|||
|
29a: 9f 91 pop r25
|
|||
|
29c: 8f 91 pop r24
|
|||
|
29e: 7f 91 pop r23
|
|||
|
2a0: 6f 91 pop r22
|
|||
|
2a2: 5f 91 pop r21
|
|||
|
2a4: 3f 91 pop r19
|
|||
|
2a6: 2f 91 pop r18
|
|||
|
2a8: 0f 90 pop r0
|
|||
|
2aa: 0f be out 0x3f, r0 ; 63
|
|||
|
2ac: 0f 90 pop r0
|
|||
|
2ae: 1f 90 pop r1
|
|||
|
2b0: 18 95 reti
|
|||
|
|
|||
|
000002b2 <timer_init>:
|
|||
|
* Initializes the timer, and resets the timer count to 0. Sets up the ISRs
|
|||
|
* linked with timer0.
|
|||
|
*/
|
|||
|
void timer_init(){
|
|||
|
//Set up the timer to run at F_CPU / 256, in normal mode (we reset TCNT0 in the ISR)
|
|||
|
TCCR0A = 0x0;
|
|||
|
2b2: 14 bc out 0x24, r1 ; 36
|
|||
|
TCCR0B |= _BV(CS02);
|
|||
|
2b4: 85 b5 in r24, 0x25 ; 37
|
|||
|
2b6: 84 60 ori r24, 0x04 ; 4
|
|||
|
2b8: 85 bd out 0x25, r24 ; 37
|
|||
|
|
|||
|
//Set compare value to be F_CPU / 1000 -- fire interrupt every millisecond
|
|||
|
OCR0A = F_CPU / 256 / 1000;
|
|||
|
2ba: 8e e3 ldi r24, 0x3E ; 62
|
|||
|
2bc: 87 bd out 0x27, r24 ; 39
|
|||
|
|
|||
|
//Enable compare interrupt
|
|||
|
TIMSK0 = _BV(OCIE0A);
|
|||
|
2be: 82 e0 ldi r24, 0x02 ; 2
|
|||
|
2c0: 80 93 6e 00 sts 0x006E, r24
|
|||
|
|
|||
|
//Reset count variables
|
|||
|
_timer_millis = 0;
|
|||
|
2c4: 10 92 98 03 sts 0x0398, r1
|
|||
|
2c8: 10 92 99 03 sts 0x0399, r1
|
|||
|
2cc: 10 92 9a 03 sts 0x039A, r1
|
|||
|
2d0: 10 92 9b 03 sts 0x039B, r1
|
|||
|
2d4: 10 92 9c 03 sts 0x039C, r1
|
|||
|
2d8: 10 92 9d 03 sts 0x039D, r1
|
|||
|
2dc: 10 92 9e 03 sts 0x039E, r1
|
|||
|
2e0: 10 92 9f 03 sts 0x039F, r1
|
|||
|
|
|||
|
//Enable interrupts if the NO_INTERRUPT_ENABLE define is not set. If it is, you need to call sei() elsewhere.
|
|||
|
#ifndef NO_INTERRUPT_ENABLE
|
|||
|
sei();
|
|||
|
2e4: 78 94 sei
|
|||
|
#endif
|
|||
|
|
|||
|
DDRB = 0xFF;
|
|||
|
2e6: 8f ef ldi r24, 0xFF ; 255
|
|||
|
2e8: 84 b9 out 0x04, r24 ; 4
|
|||
|
}
|
|||
|
2ea: 08 95 ret
|
|||
|
|
|||
|
000002ec <timer_millis>:
|
|||
|
/*
|
|||
|
* Returns the number of milliseconds which have elapsed since the
|
|||
|
* last time timer_init() was called. Overflows after about 49 days.
|
|||
|
*/
|
|||
|
uint64_t timer_millis(){
|
|||
|
return _timer_millis;
|
|||
|
2ec: 20 91 98 03 lds r18, 0x0398
|
|||
|
2f0: 30 91 99 03 lds r19, 0x0399
|
|||
|
2f4: 40 91 9a 03 lds r20, 0x039A
|
|||
|
2f8: 50 91 9b 03 lds r21, 0x039B
|
|||
|
2fc: 60 91 9c 03 lds r22, 0x039C
|
|||
|
300: 70 91 9d 03 lds r23, 0x039D
|
|||
|
304: 80 91 9e 03 lds r24, 0x039E
|
|||
|
308: 90 91 9f 03 lds r25, 0x039F
|
|||
|
}
|
|||
|
30c: 08 95 ret
|
|||
|
|
|||
|
0000030e <timer_micros>:
|
|||
|
|
|||
|
/*
|
|||
|
* Returns the number of microseconds which have elapsed since the
|
|||
|
* last time timer_init() was called. Overflows after about 71 minutes.
|
|||
|
*/
|
|||
|
uint64_t timer_micros(){
|
|||
|
30e: 2f 92 push r2
|
|||
|
310: 3f 92 push r3
|
|||
|
312: 4f 92 push r4
|
|||
|
314: 5f 92 push r5
|
|||
|
316: 6f 92 push r6
|
|||
|
318: 7f 92 push r7
|
|||
|
31a: 8f 92 push r8
|
|||
|
31c: 9f 92 push r9
|
|||
|
31e: af 92 push r10
|
|||
|
320: bf 92 push r11
|
|||
|
322: cf 92 push r12
|
|||
|
324: df 92 push r13
|
|||
|
326: ef 92 push r14
|
|||
|
328: ff 92 push r15
|
|||
|
32a: 0f 93 push r16
|
|||
|
32c: 1f 93 push r17
|
|||
|
32e: cf 93 push r28
|
|||
|
330: df 93 push r29
|
|||
|
332: 0f 92 push r0
|
|||
|
334: cd b7 in r28, 0x3d ; 61
|
|||
|
336: de b7 in r29, 0x3e ; 62
|
|||
|
return (_timer_millis * 1000);
|
|||
|
338: 80 90 98 03 lds r8, 0x0398
|
|||
|
33c: 70 90 99 03 lds r7, 0x0399
|
|||
|
340: 60 90 9a 03 lds r6, 0x039A
|
|||
|
344: 50 90 9b 03 lds r5, 0x039B
|
|||
|
348: 40 90 9c 03 lds r4, 0x039C
|
|||
|
34c: 30 90 9d 03 lds r3, 0x039D
|
|||
|
350: 20 90 9e 03 lds r2, 0x039E
|
|||
|
354: 80 91 9f 03 lds r24, 0x039F
|
|||
|
358: 89 83 std Y+1, r24 ; 0x01
|
|||
|
35a: 28 2d mov r18, r8
|
|||
|
35c: 37 2d mov r19, r7
|
|||
|
35e: 46 2d mov r20, r6
|
|||
|
360: 55 2d mov r21, r5
|
|||
|
362: 64 2d mov r22, r4
|
|||
|
364: 73 2d mov r23, r3
|
|||
|
366: 82 2d mov r24, r2
|
|||
|
368: 99 81 ldd r25, Y+1 ; 0x01
|
|||
|
36a: 02 e0 ldi r16, 0x02 ; 2
|
|||
|
36c: 0e 94 e1 02 call 0x5c2 ; 0x5c2 <__ashldi3>
|
|||
|
370: f2 2e mov r15, r18
|
|||
|
372: 13 2f mov r17, r19
|
|||
|
374: e4 2e mov r14, r20
|
|||
|
376: d5 2e mov r13, r21
|
|||
|
378: c6 2e mov r12, r22
|
|||
|
37a: b7 2e mov r11, r23
|
|||
|
37c: a8 2e mov r10, r24
|
|||
|
37e: 99 2e mov r9, r25
|
|||
|
380: 05 e0 ldi r16, 0x05 ; 5
|
|||
|
382: 0e 94 e1 02 call 0x5c2 ; 0x5c2 <__ashldi3>
|
|||
|
386: b2 2f mov r27, r18
|
|||
|
388: bf 19 sub r27, r15
|
|||
|
38a: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
38c: 2b 17 cp r18, r27
|
|||
|
38e: 08 f0 brcs .+2 ; 0x392 <timer_micros+0x84>
|
|||
|
390: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
392: 23 2f mov r18, r19
|
|||
|
394: 21 1b sub r18, r17
|
|||
|
396: e1 e0 ldi r30, 0x01 ; 1
|
|||
|
398: 32 17 cp r19, r18
|
|||
|
39a: 08 f0 brcs .+2 ; 0x39e <timer_micros+0x90>
|
|||
|
39c: e0 e0 ldi r30, 0x00 ; 0
|
|||
|
39e: 02 2f mov r16, r18
|
|||
|
3a0: 0f 1b sub r16, r31
|
|||
|
3a2: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
3a4: 20 17 cp r18, r16
|
|||
|
3a6: 08 f0 brcs .+2 ; 0x3aa <timer_micros+0x9c>
|
|||
|
3a8: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
3aa: e3 2b or r30, r19
|
|||
|
3ac: 34 2f mov r19, r20
|
|||
|
3ae: 3e 19 sub r19, r14
|
|||
|
3b0: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
3b2: 43 17 cp r20, r19
|
|||
|
3b4: 08 f0 brcs .+2 ; 0x3b8 <timer_micros+0xaa>
|
|||
|
3b6: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
3b8: f3 2e mov r15, r19
|
|||
|
3ba: fe 1a sub r15, r30
|
|||
|
3bc: 41 e0 ldi r20, 0x01 ; 1
|
|||
|
3be: 3f 15 cp r19, r15
|
|||
|
3c0: 08 f0 brcs .+2 ; 0x3c4 <timer_micros+0xb6>
|
|||
|
3c2: 40 e0 ldi r20, 0x00 ; 0
|
|||
|
3c4: 24 2b or r18, r20
|
|||
|
3c6: 45 2f mov r20, r21
|
|||
|
3c8: 4d 19 sub r20, r13
|
|||
|
3ca: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
3cc: 54 17 cp r21, r20
|
|||
|
3ce: 08 f0 brcs .+2 ; 0x3d2 <timer_micros+0xc4>
|
|||
|
3d0: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
3d2: 14 2f mov r17, r20
|
|||
|
3d4: 12 1b sub r17, r18
|
|||
|
3d6: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
3d8: 41 17 cp r20, r17
|
|||
|
3da: 08 f0 brcs .+2 ; 0x3de <timer_micros+0xd0>
|
|||
|
3dc: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
3de: 32 2b or r19, r18
|
|||
|
3e0: 46 2f mov r20, r22
|
|||
|
3e2: 4c 19 sub r20, r12
|
|||
|
3e4: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
3e6: 64 17 cp r22, r20
|
|||
|
3e8: 08 f0 brcs .+2 ; 0x3ec <timer_micros+0xde>
|
|||
|
3ea: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
3ec: a4 2f mov r26, r20
|
|||
|
3ee: a3 1b sub r26, r19
|
|||
|
3f0: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
3f2: 4a 17 cp r20, r26
|
|||
|
3f4: 08 f0 brcs .+2 ; 0x3f8 <timer_micros+0xea>
|
|||
|
3f6: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
3f8: 23 2b or r18, r19
|
|||
|
3fa: 47 2f mov r20, r23
|
|||
|
3fc: 4b 19 sub r20, r11
|
|||
|
3fe: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
400: 74 17 cp r23, r20
|
|||
|
402: 08 f0 brcs .+2 ; 0x406 <timer_micros+0xf8>
|
|||
|
404: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
406: e4 2f mov r30, r20
|
|||
|
408: e2 1b sub r30, r18
|
|||
|
40a: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
40c: 4e 17 cp r20, r30
|
|||
|
40e: 08 f0 brcs .+2 ; 0x412 <timer_micros+0x104>
|
|||
|
410: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
412: 32 2b or r19, r18
|
|||
|
414: 48 2f mov r20, r24
|
|||
|
416: 4a 19 sub r20, r10
|
|||
|
418: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
41a: 84 17 cp r24, r20
|
|||
|
41c: 08 f0 brcs .+2 ; 0x420 <timer_micros+0x112>
|
|||
|
41e: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
420: f4 2f mov r31, r20
|
|||
|
422: f3 1b sub r31, r19
|
|||
|
424: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
426: 4f 17 cp r20, r31
|
|||
|
428: 08 f0 brcs .+2 ; 0x42c <timer_micros+0x11e>
|
|||
|
42a: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
42c: 28 2b or r18, r24
|
|||
|
42e: 99 19 sub r25, r9
|
|||
|
430: 92 1b sub r25, r18
|
|||
|
432: 2b 2f mov r18, r27
|
|||
|
434: 28 0d add r18, r8
|
|||
|
436: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
438: 2b 17 cp r18, r27
|
|||
|
43a: 08 f0 brcs .+2 ; 0x43e <timer_micros+0x130>
|
|||
|
43c: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
43e: 70 0e add r7, r16
|
|||
|
440: 41 e0 ldi r20, 0x01 ; 1
|
|||
|
442: 70 16 cp r7, r16
|
|||
|
444: 08 f0 brcs .+2 ; 0x448 <timer_micros+0x13a>
|
|||
|
446: 40 e0 ldi r20, 0x00 ; 0
|
|||
|
448: 37 0d add r19, r7
|
|||
|
44a: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
44c: 37 15 cp r19, r7
|
|||
|
44e: 08 f0 brcs .+2 ; 0x452 <timer_micros+0x144>
|
|||
|
450: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
452: 48 2b or r20, r24
|
|||
|
454: 6f 0c add r6, r15
|
|||
|
456: 51 e0 ldi r21, 0x01 ; 1
|
|||
|
458: 6f 14 cp r6, r15
|
|||
|
45a: 08 f0 brcs .+2 ; 0x45e <timer_micros+0x150>
|
|||
|
45c: 50 e0 ldi r21, 0x00 ; 0
|
|||
|
45e: 46 0d add r20, r6
|
|||
|
460: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
462: 46 15 cp r20, r6
|
|||
|
464: 08 f0 brcs .+2 ; 0x468 <timer_micros+0x15a>
|
|||
|
466: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
468: 58 2b or r21, r24
|
|||
|
46a: 51 0e add r5, r17
|
|||
|
46c: 61 e0 ldi r22, 0x01 ; 1
|
|||
|
46e: 51 16 cp r5, r17
|
|||
|
470: 08 f0 brcs .+2 ; 0x474 <timer_micros+0x166>
|
|||
|
472: 60 e0 ldi r22, 0x00 ; 0
|
|||
|
474: 55 0d add r21, r5
|
|||
|
476: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
478: 55 15 cp r21, r5
|
|||
|
47a: 08 f0 brcs .+2 ; 0x47e <timer_micros+0x170>
|
|||
|
47c: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
47e: 68 2b or r22, r24
|
|||
|
480: 4a 0e add r4, r26
|
|||
|
482: 71 e0 ldi r23, 0x01 ; 1
|
|||
|
484: 4a 16 cp r4, r26
|
|||
|
486: 08 f0 brcs .+2 ; 0x48a <timer_micros+0x17c>
|
|||
|
488: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
48a: 64 0d add r22, r4
|
|||
|
48c: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
48e: 64 15 cp r22, r4
|
|||
|
490: 08 f0 brcs .+2 ; 0x494 <timer_micros+0x186>
|
|||
|
492: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
494: 78 2b or r23, r24
|
|||
|
496: 3e 0e add r3, r30
|
|||
|
498: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
49a: 3e 16 cp r3, r30
|
|||
|
49c: 08 f0 brcs .+2 ; 0x4a0 <timer_micros+0x192>
|
|||
|
49e: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
4a0: 73 0d add r23, r3
|
|||
|
4a2: e1 e0 ldi r30, 0x01 ; 1
|
|||
|
4a4: 73 15 cp r23, r3
|
|||
|
4a6: 08 f0 brcs .+2 ; 0x4aa <timer_micros+0x19c>
|
|||
|
4a8: e0 e0 ldi r30, 0x00 ; 0
|
|||
|
4aa: 8e 2b or r24, r30
|
|||
|
4ac: 2f 0e add r2, r31
|
|||
|
4ae: e1 e0 ldi r30, 0x01 ; 1
|
|||
|
4b0: 2f 16 cp r2, r31
|
|||
|
4b2: 08 f0 brcs .+2 ; 0x4b6 <timer_micros+0x1a8>
|
|||
|
4b4: e0 e0 ldi r30, 0x00 ; 0
|
|||
|
4b6: 82 0d add r24, r2
|
|||
|
4b8: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
4ba: 82 15 cp r24, r2
|
|||
|
4bc: 08 f0 brcs .+2 ; 0x4c0 <timer_micros+0x1b2>
|
|||
|
4be: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
4c0: ef 2b or r30, r31
|
|||
|
4c2: a9 81 ldd r26, Y+1 ; 0x01
|
|||
|
4c4: 9a 0f add r25, r26
|
|||
|
4c6: 9e 0f add r25, r30
|
|||
|
4c8: 03 e0 ldi r16, 0x03 ; 3
|
|||
|
4ca: 0e 94 e1 02 call 0x5c2 ; 0x5c2 <__ashldi3>
|
|||
|
}
|
|||
|
4ce: 0f 90 pop r0
|
|||
|
4d0: df 91 pop r29
|
|||
|
4d2: cf 91 pop r28
|
|||
|
4d4: 1f 91 pop r17
|
|||
|
4d6: 0f 91 pop r16
|
|||
|
4d8: ff 90 pop r15
|
|||
|
4da: ef 90 pop r14
|
|||
|
4dc: df 90 pop r13
|
|||
|
4de: cf 90 pop r12
|
|||
|
4e0: bf 90 pop r11
|
|||
|
4e2: af 90 pop r10
|
|||
|
4e4: 9f 90 pop r9
|
|||
|
4e6: 8f 90 pop r8
|
|||
|
4e8: 7f 90 pop r7
|
|||
|
4ea: 6f 90 pop r6
|
|||
|
4ec: 5f 90 pop r5
|
|||
|
4ee: 4f 90 pop r4
|
|||
|
4f0: 3f 90 pop r3
|
|||
|
4f2: 2f 90 pop r2
|
|||
|
4f4: 08 95 ret
|
|||
|
|
|||
|
000004f6 <__vector_14>:
|
|||
|
|
|||
|
/*
|
|||
|
* The ISR for timer0 overflow. Increment the _timer_count here, and do the calculcations
|
|||
|
* to increment _timer_millis as needed.
|
|||
|
*/
|
|||
|
ISR(TIMER0_COMPA_vect){
|
|||
|
4f6: 1f 92 push r1
|
|||
|
4f8: 0f 92 push r0
|
|||
|
4fa: 0f b6 in r0, 0x3f ; 63
|
|||
|
4fc: 0f 92 push r0
|
|||
|
4fe: 11 24 eor r1, r1
|
|||
|
500: 2f 93 push r18
|
|||
|
502: 3f 93 push r19
|
|||
|
504: 4f 93 push r20
|
|||
|
506: 5f 93 push r21
|
|||
|
508: 6f 93 push r22
|
|||
|
50a: 7f 93 push r23
|
|||
|
50c: 8f 93 push r24
|
|||
|
50e: 9f 93 push r25
|
|||
|
510: af 93 push r26
|
|||
|
512: ef 93 push r30
|
|||
|
514: ff 93 push r31
|
|||
|
TCNT0 = 0;
|
|||
|
516: 16 bc out 0x26, r1 ; 38
|
|||
|
_timer_millis++;
|
|||
|
518: 40 91 98 03 lds r20, 0x0398
|
|||
|
51c: 30 91 99 03 lds r19, 0x0399
|
|||
|
520: 20 91 9a 03 lds r18, 0x039A
|
|||
|
524: 90 91 9b 03 lds r25, 0x039B
|
|||
|
528: 80 91 9c 03 lds r24, 0x039C
|
|||
|
52c: f0 91 9d 03 lds r31, 0x039D
|
|||
|
530: e0 91 9e 03 lds r30, 0x039E
|
|||
|
534: a0 91 9f 03 lds r26, 0x039F
|
|||
|
538: 64 2f mov r22, r20
|
|||
|
53a: 6f 5f subi r22, 0xFF ; 255
|
|||
|
53c: 51 e0 ldi r21, 0x01 ; 1
|
|||
|
53e: 64 17 cp r22, r20
|
|||
|
540: 08 f0 brcs .+2 ; 0x544 <__vector_14+0x4e>
|
|||
|
542: 50 e0 ldi r21, 0x00 ; 0
|
|||
|
544: 53 0f add r21, r19
|
|||
|
546: 41 e0 ldi r20, 0x01 ; 1
|
|||
|
548: 53 17 cp r21, r19
|
|||
|
54a: 08 f0 brcs .+2 ; 0x54e <__vector_14+0x58>
|
|||
|
54c: 40 e0 ldi r20, 0x00 ; 0
|
|||
|
54e: 42 0f add r20, r18
|
|||
|
550: 31 e0 ldi r19, 0x01 ; 1
|
|||
|
552: 42 17 cp r20, r18
|
|||
|
554: 08 f0 brcs .+2 ; 0x558 <__vector_14+0x62>
|
|||
|
556: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
558: 39 0f add r19, r25
|
|||
|
55a: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
55c: 39 17 cp r19, r25
|
|||
|
55e: 08 f0 brcs .+2 ; 0x562 <__vector_14+0x6c>
|
|||
|
560: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
562: 28 0f add r18, r24
|
|||
|
564: 91 e0 ldi r25, 0x01 ; 1
|
|||
|
566: 28 17 cp r18, r24
|
|||
|
568: 08 f0 brcs .+2 ; 0x56c <__vector_14+0x76>
|
|||
|
56a: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
56c: 9f 0f add r25, r31
|
|||
|
56e: 81 e0 ldi r24, 0x01 ; 1
|
|||
|
570: 9f 17 cp r25, r31
|
|||
|
572: 08 f0 brcs .+2 ; 0x576 <__vector_14+0x80>
|
|||
|
574: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
576: 8e 0f add r24, r30
|
|||
|
578: 71 e0 ldi r23, 0x01 ; 1
|
|||
|
57a: 8e 17 cp r24, r30
|
|||
|
57c: 08 f0 brcs .+2 ; 0x580 <__vector_14+0x8a>
|
|||
|
57e: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
580: 7a 0f add r23, r26
|
|||
|
582: 60 93 98 03 sts 0x0398, r22
|
|||
|
586: 50 93 99 03 sts 0x0399, r21
|
|||
|
58a: 40 93 9a 03 sts 0x039A, r20
|
|||
|
58e: 30 93 9b 03 sts 0x039B, r19
|
|||
|
592: 20 93 9c 03 sts 0x039C, r18
|
|||
|
596: 90 93 9d 03 sts 0x039D, r25
|
|||
|
59a: 80 93 9e 03 sts 0x039E, r24
|
|||
|
59e: 70 93 9f 03 sts 0x039F, r23
|
|||
|
}
|
|||
|
5a2: ff 91 pop r31
|
|||
|
5a4: ef 91 pop r30
|
|||
|
5a6: af 91 pop r26
|
|||
|
5a8: 9f 91 pop r25
|
|||
|
5aa: 8f 91 pop r24
|
|||
|
5ac: 7f 91 pop r23
|
|||
|
5ae: 6f 91 pop r22
|
|||
|
5b0: 5f 91 pop r21
|
|||
|
5b2: 4f 91 pop r20
|
|||
|
5b4: 3f 91 pop r19
|
|||
|
5b6: 2f 91 pop r18
|
|||
|
5b8: 0f 90 pop r0
|
|||
|
5ba: 0f be out 0x3f, r0 ; 63
|
|||
|
5bc: 0f 90 pop r0
|
|||
|
5be: 1f 90 pop r1
|
|||
|
5c0: 18 95 reti
|
|||
|
|
|||
|
000005c2 <__ashldi3>:
|
|||
|
5c2: cf 92 push r12
|
|||
|
5c4: df 92 push r13
|
|||
|
5c6: ef 92 push r14
|
|||
|
5c8: ff 92 push r15
|
|||
|
5ca: 0f 93 push r16
|
|||
|
5cc: cf 93 push r28
|
|||
|
5ce: df 93 push r29
|
|||
|
5d0: cd b7 in r28, 0x3d ; 61
|
|||
|
5d2: de b7 in r29, 0x3e ; 62
|
|||
|
5d4: 60 97 sbiw r28, 0x10 ; 16
|
|||
|
5d6: 0f b6 in r0, 0x3f ; 63
|
|||
|
5d8: f8 94 cli
|
|||
|
5da: de bf out 0x3e, r29 ; 62
|
|||
|
5dc: 0f be out 0x3f, r0 ; 63
|
|||
|
5de: cd bf out 0x3d, r28 ; 61
|
|||
|
5e0: 00 23 and r16, r16
|
|||
|
5e2: 09 f4 brne .+2 ; 0x5e6 <__ashldi3+0x24>
|
|||
|
5e4: 5a c0 rjmp .+180 ; 0x69a <__ashldi3+0xd8>
|
|||
|
5e6: 29 87 std Y+9, r18 ; 0x09
|
|||
|
5e8: 3a 87 std Y+10, r19 ; 0x0a
|
|||
|
5ea: 4b 87 std Y+11, r20 ; 0x0b
|
|||
|
5ec: 5c 87 std Y+12, r21 ; 0x0c
|
|||
|
5ee: 6d 87 std Y+13, r22 ; 0x0d
|
|||
|
5f0: 7e 87 std Y+14, r23 ; 0x0e
|
|||
|
5f2: 8f 87 std Y+15, r24 ; 0x0f
|
|||
|
5f4: 98 8b std Y+16, r25 ; 0x10
|
|||
|
5f6: 80 e2 ldi r24, 0x20 ; 32
|
|||
|
5f8: 80 1b sub r24, r16
|
|||
|
5fa: 49 85 ldd r20, Y+9 ; 0x09
|
|||
|
5fc: 5a 85 ldd r21, Y+10 ; 0x0a
|
|||
|
5fe: 6b 85 ldd r22, Y+11 ; 0x0b
|
|||
|
600: 7c 85 ldd r23, Y+12 ; 0x0c
|
|||
|
602: 18 16 cp r1, r24
|
|||
|
604: b4 f0 brlt .+44 ; 0x632 <__ashldi3+0x70>
|
|||
|
606: 19 82 std Y+1, r1 ; 0x01
|
|||
|
608: 1a 82 std Y+2, r1 ; 0x02
|
|||
|
60a: 1b 82 std Y+3, r1 ; 0x03
|
|||
|
60c: 1c 82 std Y+4, r1 ; 0x04
|
|||
|
60e: 99 27 eor r25, r25
|
|||
|
610: 87 fd sbrc r24, 7
|
|||
|
612: 90 95 com r25
|
|||
|
614: 90 95 com r25
|
|||
|
616: 81 95 neg r24
|
|||
|
618: 9f 4f sbci r25, 0xFF ; 255
|
|||
|
61a: 04 c0 rjmp .+8 ; 0x624 <__ashldi3+0x62>
|
|||
|
61c: 44 0f add r20, r20
|
|||
|
61e: 55 1f adc r21, r21
|
|||
|
620: 66 1f adc r22, r22
|
|||
|
622: 77 1f adc r23, r23
|
|||
|
624: 8a 95 dec r24
|
|||
|
626: d2 f7 brpl .-12 ; 0x61c <__ashldi3+0x5a>
|
|||
|
628: 4d 83 std Y+5, r20 ; 0x05
|
|||
|
62a: 5e 83 std Y+6, r21 ; 0x06
|
|||
|
62c: 6f 83 std Y+7, r22 ; 0x07
|
|||
|
62e: 78 87 std Y+8, r23 ; 0x08
|
|||
|
630: 2c c0 rjmp .+88 ; 0x68a <__ashldi3+0xc8>
|
|||
|
632: 6a 01 movw r12, r20
|
|||
|
634: 7b 01 movw r14, r22
|
|||
|
636: 00 2e mov r0, r16
|
|||
|
638: 04 c0 rjmp .+8 ; 0x642 <__ashldi3+0x80>
|
|||
|
63a: cc 0c add r12, r12
|
|||
|
63c: dd 1c adc r13, r13
|
|||
|
63e: ee 1c adc r14, r14
|
|||
|
640: ff 1c adc r15, r15
|
|||
|
642: 0a 94 dec r0
|
|||
|
644: d2 f7 brpl .-12 ; 0x63a <__ashldi3+0x78>
|
|||
|
646: c9 82 std Y+1, r12 ; 0x01
|
|||
|
648: da 82 std Y+2, r13 ; 0x02
|
|||
|
64a: eb 82 std Y+3, r14 ; 0x03
|
|||
|
64c: fc 82 std Y+4, r15 ; 0x04
|
|||
|
64e: 6a 01 movw r12, r20
|
|||
|
650: 7b 01 movw r14, r22
|
|||
|
652: 04 c0 rjmp .+8 ; 0x65c <__ashldi3+0x9a>
|
|||
|
654: f6 94 lsr r15
|
|||
|
656: e7 94 ror r14
|
|||
|
658: d7 94 ror r13
|
|||
|
65a: c7 94 ror r12
|
|||
|
65c: 8a 95 dec r24
|
|||
|
65e: d2 f7 brpl .-12 ; 0x654 <__ashldi3+0x92>
|
|||
|
660: d7 01 movw r26, r14
|
|||
|
662: c6 01 movw r24, r12
|
|||
|
664: 4d 85 ldd r20, Y+13 ; 0x0d
|
|||
|
666: 5e 85 ldd r21, Y+14 ; 0x0e
|
|||
|
668: 6f 85 ldd r22, Y+15 ; 0x0f
|
|||
|
66a: 78 89 ldd r23, Y+16 ; 0x10
|
|||
|
66c: 04 c0 rjmp .+8 ; 0x676 <__ashldi3+0xb4>
|
|||
|
66e: 44 0f add r20, r20
|
|||
|
670: 55 1f adc r21, r21
|
|||
|
672: 66 1f adc r22, r22
|
|||
|
674: 77 1f adc r23, r23
|
|||
|
676: 0a 95 dec r16
|
|||
|
678: d2 f7 brpl .-12 ; 0x66e <__ashldi3+0xac>
|
|||
|
67a: 84 2b or r24, r20
|
|||
|
67c: 95 2b or r25, r21
|
|||
|
67e: a6 2b or r26, r22
|
|||
|
680: b7 2b or r27, r23
|
|||
|
682: 8d 83 std Y+5, r24 ; 0x05
|
|||
|
684: 9e 83 std Y+6, r25 ; 0x06
|
|||
|
686: af 83 std Y+7, r26 ; 0x07
|
|||
|
688: b8 87 std Y+8, r27 ; 0x08
|
|||
|
68a: 29 81 ldd r18, Y+1 ; 0x01
|
|||
|
68c: 3a 81 ldd r19, Y+2 ; 0x02
|
|||
|
68e: 4b 81 ldd r20, Y+3 ; 0x03
|
|||
|
690: 5c 81 ldd r21, Y+4 ; 0x04
|
|||
|
692: 6d 81 ldd r22, Y+5 ; 0x05
|
|||
|
694: 7e 81 ldd r23, Y+6 ; 0x06
|
|||
|
696: 8f 81 ldd r24, Y+7 ; 0x07
|
|||
|
698: 98 85 ldd r25, Y+8 ; 0x08
|
|||
|
69a: 60 96 adiw r28, 0x10 ; 16
|
|||
|
69c: 0f b6 in r0, 0x3f ; 63
|
|||
|
69e: f8 94 cli
|
|||
|
6a0: de bf out 0x3e, r29 ; 62
|
|||
|
6a2: 0f be out 0x3f, r0 ; 63
|
|||
|
6a4: cd bf out 0x3d, r28 ; 61
|
|||
|
6a6: df 91 pop r29
|
|||
|
6a8: cf 91 pop r28
|
|||
|
6aa: 0f 91 pop r16
|
|||
|
6ac: ff 90 pop r15
|
|||
|
6ae: ef 90 pop r14
|
|||
|
6b0: df 90 pop r13
|
|||
|
6b2: cf 90 pop r12
|
|||
|
6b4: 08 95 ret
|
|||
|
|
|||
|
000006b6 <main>:
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int main(void) {
|
|||
|
6b6: cf 93 push r28
|
|||
|
6b8: df 93 push r29
|
|||
|
6ba: 00 d0 rcall .+0 ; 0x6bc <main+0x6>
|
|||
|
6bc: cd b7 in r28, 0x3d ; 61
|
|||
|
6be: de b7 in r29, 0x3e ; 62
|
|||
|
#include "timer.h"
|
|||
|
|
|||
|
void init(void) {
|
|||
|
|
|||
|
/* Make PORTD2 (Arduino digital 2) input by clearing bit in DDR */
|
|||
|
DDRD &= ~(_BV(PORTD2));
|
|||
|
6c0: 52 98 cbi 0x0a, 2 ; 10
|
|||
|
/* you don’t connect anything to pin and if you try to read it, it will read as 1. Now, */
|
|||
|
/* when you externally drive that pin to zero(i.e. connect to ground / or pull-down), */
|
|||
|
/* only then it will be read as 0. */
|
|||
|
|
|||
|
/* Enable pullups by setting bits in PORT. Default state is now high. */
|
|||
|
PORTD |= (_BV(PORTD2));
|
|||
|
6c2: 5a 9a sbi 0x0b, 2 ; 11
|
|||
|
|
|||
|
/* Make PORTB5 (Arduino digital 13) an output by setting bit in DDR. */
|
|||
|
DDRB |= _BV(PORTB5);
|
|||
|
6c4: 25 9a sbi 0x04, 5 ; 4
|
|||
|
}
|
|||
|
|
|||
|
int main(void) {
|
|||
|
|
|||
|
init();
|
|||
|
timer_init();
|
|||
|
6c6: 0e 94 59 01 call 0x2b2 ; 0x2b2 <timer_init>
|
|||
|
uart_init();
|
|||
|
6ca: 0e 94 79 00 call 0xf2 ; 0xf2 <uart_init>
|
|||
|
stdout = &uart_output;
|
|||
|
6ce: 82 e4 ldi r24, 0x42 ; 66
|
|||
|
6d0: 91 e0 ldi r25, 0x01 ; 1
|
|||
|
6d2: 90 93 a3 03 sts 0x03A3, r25
|
|||
|
6d6: 80 93 a2 03 sts 0x03A2, r24
|
|||
|
stdin = &uart_input;
|
|||
|
6da: 84 e3 ldi r24, 0x34 ; 52
|
|||
|
6dc: 91 e0 ldi r25, 0x01 ; 1
|
|||
|
6de: 90 93 a1 03 sts 0x03A1, r25
|
|||
|
6e2: 80 93 a0 03 sts 0x03A0, r24
|
|||
|
|
|||
|
uint8_t current_reading;
|
|||
|
uint8_t previous_reading = 0;
|
|||
|
uint8_t current_state = 0;
|
|||
|
uint8_t previous_state = 0;
|
|||
|
6e6: 77 24 eor r7, r7
|
|||
|
stdout = &uart_output;
|
|||
|
stdin = &uart_input;
|
|||
|
|
|||
|
uint8_t current_reading;
|
|||
|
uint8_t previous_reading = 0;
|
|||
|
uint8_t current_state = 0;
|
|||
|
6e8: 00 e0 ldi r16, 0x00 ; 0
|
|||
|
uart_init();
|
|||
|
stdout = &uart_output;
|
|||
|
stdin = &uart_input;
|
|||
|
|
|||
|
uint8_t current_reading;
|
|||
|
uint8_t previous_reading = 0;
|
|||
|
6ea: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
|
|||
|
current_reading = digital_read(PIND, PIND2);
|
|||
|
if (current_reading != previous_reading) {
|
|||
|
/* Note the time in millis of last change of button state. */
|
|||
|
last_toggle_time = timer_millis();
|
|||
|
printf("- Reading toggled %d (%d)\n", current_reading, last_toggle_time);
|
|||
|
6ec: 40 e0 ldi r20, 0x00 ; 0
|
|||
|
6ee: 44 2e mov r4, r20
|
|||
|
6f0: 41 e0 ldi r20, 0x01 ; 1
|
|||
|
6f2: 54 2e mov r5, r20
|
|||
|
current_state = current_reading;
|
|||
|
}
|
|||
|
|
|||
|
/* Just for debugging purposes. */
|
|||
|
if (current_state != previous_state) {
|
|||
|
printf("+ State toggled %d (%d)\n", current_state, last_toggle_time);
|
|||
|
6f4: 5b e1 ldi r21, 0x1B ; 27
|
|||
|
6f6: 25 2e mov r2, r21
|
|||
|
6f8: 51 e0 ldi r21, 0x01 ; 1
|
|||
|
6fa: 35 2e mov r3, r21
|
|||
|
6fc: 01 c0 rjmp .+2 ; 0x700 <main+0x4a>
|
|||
|
DDRB |= _BV(PORTB5);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
uint8_t digital_read(int input_register, int pin) {
|
|||
|
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
|
|||
|
6fe: 21 2f mov r18, r17
|
|||
|
|
|||
|
uint64_t last_toggle_time;
|
|||
|
|
|||
|
while (1) {
|
|||
|
|
|||
|
current_reading = digital_read(PIND, PIND2);
|
|||
|
700: 89 b1 in r24, 0x09 ; 9
|
|||
|
702: 89 83 std Y+1, r24 ; 0x01
|
|||
|
704: 1a 82 std Y+2, r1 ; 0x02
|
|||
|
DDRB |= _BV(PORTB5);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
uint8_t digital_read(int input_register, int pin) {
|
|||
|
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
|
|||
|
706: 89 81 ldd r24, Y+1 ; 0x01
|
|||
|
708: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
70a: 95 95 asr r25
|
|||
|
70c: 87 95 ror r24
|
|||
|
70e: 95 95 asr r25
|
|||
|
710: 87 95 ror r24
|
|||
|
712: 18 2f mov r17, r24
|
|||
|
714: 11 70 andi r17, 0x01 ; 1
|
|||
|
uint64_t last_toggle_time;
|
|||
|
|
|||
|
while (1) {
|
|||
|
|
|||
|
current_reading = digital_read(PIND, PIND2);
|
|||
|
if (current_reading != previous_reading) {
|
|||
|
716: 12 17 cp r17, r18
|
|||
|
718: 59 f1 breq .+86 ; 0x770 <main+0xba>
|
|||
|
/* Note the time in millis of last change of button state. */
|
|||
|
last_toggle_time = timer_millis();
|
|||
|
71a: 0e 94 76 01 call 0x2ec ; 0x2ec <timer_millis>
|
|||
|
71e: 49 01 movw r8, r18
|
|||
|
720: 5a 01 movw r10, r20
|
|||
|
722: 6b 01 movw r12, r22
|
|||
|
724: 7c 01 movw r14, r24
|
|||
|
printf("- Reading toggled %d (%d)\n", current_reading, last_toggle_time);
|
|||
|
726: 8d b7 in r24, 0x3d ; 61
|
|||
|
728: 9e b7 in r25, 0x3e ; 62
|
|||
|
72a: 0c 97 sbiw r24, 0x0c ; 12
|
|||
|
72c: 0f b6 in r0, 0x3f ; 63
|
|||
|
72e: f8 94 cli
|
|||
|
730: 9e bf out 0x3e, r25 ; 62
|
|||
|
732: 0f be out 0x3f, r0 ; 63
|
|||
|
734: 8d bf out 0x3d, r24 ; 61
|
|||
|
736: ed b7 in r30, 0x3d ; 61
|
|||
|
738: fe b7 in r31, 0x3e ; 62
|
|||
|
73a: 31 96 adiw r30, 0x01 ; 1
|
|||
|
73c: ad b7 in r26, 0x3d ; 61
|
|||
|
73e: be b7 in r27, 0x3e ; 62
|
|||
|
740: 12 96 adiw r26, 0x02 ; 2
|
|||
|
742: 5c 92 st X, r5
|
|||
|
744: 4e 92 st -X, r4
|
|||
|
746: 11 97 sbiw r26, 0x01 ; 1
|
|||
|
748: 12 83 std Z+2, r17 ; 0x02
|
|||
|
74a: 13 82 std Z+3, r1 ; 0x03
|
|||
|
74c: 84 82 std Z+4, r8 ; 0x04
|
|||
|
74e: 95 82 std Z+5, r9 ; 0x05
|
|||
|
750: a6 82 std Z+6, r10 ; 0x06
|
|||
|
752: b7 82 std Z+7, r11 ; 0x07
|
|||
|
754: c0 86 std Z+8, r12 ; 0x08
|
|||
|
756: d1 86 std Z+9, r13 ; 0x09
|
|||
|
758: e2 86 std Z+10, r14 ; 0x0a
|
|||
|
75a: f3 86 std Z+11, r15 ; 0x0b
|
|||
|
75c: 0e 94 6f 04 call 0x8de ; 0x8de <printf>
|
|||
|
760: 8d b7 in r24, 0x3d ; 61
|
|||
|
762: 9e b7 in r25, 0x3e ; 62
|
|||
|
764: 0c 96 adiw r24, 0x0c ; 12
|
|||
|
766: 0f b6 in r0, 0x3f ; 63
|
|||
|
768: f8 94 cli
|
|||
|
76a: 9e bf out 0x3e, r25 ; 62
|
|||
|
76c: 0f be out 0x3f, r0 ; 63
|
|||
|
76e: 8d bf out 0x3d, r24 ; 61
|
|||
|
}
|
|||
|
|
|||
|
/* If there has been more than 10 millis since last toggling */
|
|||
|
/* of button state, assume it is real and not bouncing noise. */
|
|||
|
if ((timer_millis() - last_toggle_time) > 10) {
|
|||
|
770: 0e 94 76 01 call 0x2ec ; 0x2ec <timer_millis>
|
|||
|
774: e2 2f mov r30, r18
|
|||
|
776: e8 19 sub r30, r8
|
|||
|
778: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
77a: 2e 17 cp r18, r30
|
|||
|
77c: 08 f0 brcs .+2 ; 0x780 <main+0xca>
|
|||
|
77e: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
780: a3 2f mov r26, r19
|
|||
|
782: a9 19 sub r26, r9
|
|||
|
784: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
786: 3a 17 cp r19, r26
|
|||
|
788: 08 f0 brcs .+2 ; 0x78c <main+0xd6>
|
|||
|
78a: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
78c: 3a 2f mov r19, r26
|
|||
|
78e: 3f 1b sub r19, r31
|
|||
|
790: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
792: a3 17 cp r26, r19
|
|||
|
794: 08 f0 brcs .+2 ; 0x798 <main+0xe2>
|
|||
|
796: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
798: 2f 2b or r18, r31
|
|||
|
79a: a4 2f mov r26, r20
|
|||
|
79c: aa 19 sub r26, r10
|
|||
|
79e: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
7a0: 4a 17 cp r20, r26
|
|||
|
7a2: 08 f0 brcs .+2 ; 0x7a6 <main+0xf0>
|
|||
|
7a4: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
7a6: 4a 2f mov r20, r26
|
|||
|
7a8: 42 1b sub r20, r18
|
|||
|
7aa: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
7ac: a4 17 cp r26, r20
|
|||
|
7ae: 08 f0 brcs .+2 ; 0x7b2 <main+0xfc>
|
|||
|
7b0: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
7b2: f2 2b or r31, r18
|
|||
|
7b4: a5 2f mov r26, r21
|
|||
|
7b6: ab 19 sub r26, r11
|
|||
|
7b8: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
7ba: 5a 17 cp r21, r26
|
|||
|
7bc: 08 f0 brcs .+2 ; 0x7c0 <main+0x10a>
|
|||
|
7be: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
7c0: 5a 2f mov r21, r26
|
|||
|
7c2: 5f 1b sub r21, r31
|
|||
|
7c4: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
7c6: a5 17 cp r26, r21
|
|||
|
7c8: 08 f0 brcs .+2 ; 0x7cc <main+0x116>
|
|||
|
7ca: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
7cc: 2f 2b or r18, r31
|
|||
|
7ce: a6 2f mov r26, r22
|
|||
|
7d0: ac 19 sub r26, r12
|
|||
|
7d2: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
7d4: 6a 17 cp r22, r26
|
|||
|
7d6: 08 f0 brcs .+2 ; 0x7da <main+0x124>
|
|||
|
7d8: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
7da: 6a 2f mov r22, r26
|
|||
|
7dc: 62 1b sub r22, r18
|
|||
|
7de: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
7e0: a6 17 cp r26, r22
|
|||
|
7e2: 08 f0 brcs .+2 ; 0x7e6 <main+0x130>
|
|||
|
7e4: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
7e6: f2 2b or r31, r18
|
|||
|
7e8: 27 2f mov r18, r23
|
|||
|
7ea: 2d 19 sub r18, r13
|
|||
|
7ec: a1 e0 ldi r26, 0x01 ; 1
|
|||
|
7ee: 72 17 cp r23, r18
|
|||
|
7f0: 08 f0 brcs .+2 ; 0x7f4 <main+0x13e>
|
|||
|
7f2: a0 e0 ldi r26, 0x00 ; 0
|
|||
|
7f4: 72 2f mov r23, r18
|
|||
|
7f6: 7f 1b sub r23, r31
|
|||
|
7f8: f1 e0 ldi r31, 0x01 ; 1
|
|||
|
7fa: 27 17 cp r18, r23
|
|||
|
7fc: 08 f0 brcs .+2 ; 0x800 <main+0x14a>
|
|||
|
7fe: f0 e0 ldi r31, 0x00 ; 0
|
|||
|
800: af 2b or r26, r31
|
|||
|
802: f8 2f mov r31, r24
|
|||
|
804: fe 19 sub r31, r14
|
|||
|
806: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
808: 8f 17 cp r24, r31
|
|||
|
80a: 08 f0 brcs .+2 ; 0x80e <main+0x158>
|
|||
|
80c: 20 e0 ldi r18, 0x00 ; 0
|
|||
|
80e: 8f 2f mov r24, r31
|
|||
|
810: 8a 1b sub r24, r26
|
|||
|
812: a1 e0 ldi r26, 0x01 ; 1
|
|||
|
814: f8 17 cp r31, r24
|
|||
|
816: 08 f0 brcs .+2 ; 0x81a <main+0x164>
|
|||
|
818: a0 e0 ldi r26, 0x00 ; 0
|
|||
|
81a: 2a 2b or r18, r26
|
|||
|
81c: 9f 19 sub r25, r15
|
|||
|
81e: 92 17 cp r25, r18
|
|||
|
820: 71 f4 brne .+28 ; 0x83e <main+0x188>
|
|||
|
822: 88 23 and r24, r24
|
|||
|
824: 61 f4 brne .+24 ; 0x83e <main+0x188>
|
|||
|
826: 77 23 and r23, r23
|
|||
|
828: 51 f4 brne .+20 ; 0x83e <main+0x188>
|
|||
|
82a: 66 23 and r22, r22
|
|||
|
82c: 41 f4 brne .+16 ; 0x83e <main+0x188>
|
|||
|
82e: 55 23 and r21, r21
|
|||
|
830: 31 f4 brne .+12 ; 0x83e <main+0x188>
|
|||
|
832: 44 23 and r20, r20
|
|||
|
834: 21 f4 brne .+8 ; 0x83e <main+0x188>
|
|||
|
836: 33 23 and r19, r19
|
|||
|
838: 11 f4 brne .+4 ; 0x83e <main+0x188>
|
|||
|
83a: eb 30 cpi r30, 0x0B ; 11
|
|||
|
83c: 08 f0 brcs .+2 ; 0x840 <main+0x18a>
|
|||
|
DDRB |= _BV(PORTB5);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
uint8_t digital_read(int input_register, int pin) {
|
|||
|
return bit_is_set(input_register, pin) != 0 ? 1 : 0;
|
|||
|
83e: 01 2f mov r16, r17
|
|||
|
if ((timer_millis() - last_toggle_time) > 10) {
|
|||
|
current_state = current_reading;
|
|||
|
}
|
|||
|
|
|||
|
/* Just for debugging purposes. */
|
|||
|
if (current_state != previous_state) {
|
|||
|
840: 07 15 cp r16, r7
|
|||
|
842: 09 f4 brne .+2 ; 0x846 <main+0x190>
|
|||
|
844: 5c cf rjmp .-328 ; 0x6fe <main+0x48>
|
|||
|
printf("+ State toggled %d (%d)\n", current_state, last_toggle_time);
|
|||
|
846: ad b7 in r26, 0x3d ; 61
|
|||
|
848: be b7 in r27, 0x3e ; 62
|
|||
|
84a: 1c 97 sbiw r26, 0x0c ; 12
|
|||
|
84c: 0f b6 in r0, 0x3f ; 63
|
|||
|
84e: f8 94 cli
|
|||
|
850: be bf out 0x3e, r27 ; 62
|
|||
|
852: 0f be out 0x3f, r0 ; 63
|
|||
|
854: ad bf out 0x3d, r26 ; 61
|
|||
|
856: ed b7 in r30, 0x3d ; 61
|
|||
|
858: fe b7 in r31, 0x3e ; 62
|
|||
|
85a: 31 96 adiw r30, 0x01 ; 1
|
|||
|
85c: 12 96 adiw r26, 0x02 ; 2
|
|||
|
85e: 3c 92 st X, r3
|
|||
|
860: 2e 92 st -X, r2
|
|||
|
862: 11 97 sbiw r26, 0x01 ; 1
|
|||
|
864: 02 83 std Z+2, r16 ; 0x02
|
|||
|
866: 13 82 std Z+3, r1 ; 0x03
|
|||
|
868: 84 82 std Z+4, r8 ; 0x04
|
|||
|
86a: 95 82 std Z+5, r9 ; 0x05
|
|||
|
86c: a6 82 std Z+6, r10 ; 0x06
|
|||
|
86e: b7 82 std Z+7, r11 ; 0x07
|
|||
|
870: c0 86 std Z+8, r12 ; 0x08
|
|||
|
872: d1 86 std Z+9, r13 ; 0x09
|
|||
|
874: e2 86 std Z+10, r14 ; 0x0a
|
|||
|
876: f3 86 std Z+11, r15 ; 0x0b
|
|||
|
878: 0e 94 6f 04 call 0x8de ; 0x8de <printf>
|
|||
|
87c: 8d b7 in r24, 0x3d ; 61
|
|||
|
87e: 9e b7 in r25, 0x3e ; 62
|
|||
|
880: 0c 96 adiw r24, 0x0c ; 12
|
|||
|
882: 0f b6 in r0, 0x3f ; 63
|
|||
|
884: f8 94 cli
|
|||
|
886: 9e bf out 0x3e, r25 ; 62
|
|||
|
888: 0f be out 0x3f, r0 ; 63
|
|||
|
88a: 8d bf out 0x3d, r24 ; 61
|
|||
|
88c: 70 2e mov r7, r16
|
|||
|
88e: 37 cf rjmp .-402 ; 0x6fe <main+0x48>
|
|||
|
|
|||
|
00000890 <__divmodhi4>:
|
|||
|
890: 97 fb bst r25, 7
|
|||
|
892: 09 2e mov r0, r25
|
|||
|
894: 07 26 eor r0, r23
|
|||
|
896: 0a d0 rcall .+20 ; 0x8ac <__divmodhi4_neg1>
|
|||
|
898: 77 fd sbrc r23, 7
|
|||
|
89a: 04 d0 rcall .+8 ; 0x8a4 <__divmodhi4_neg2>
|
|||
|
89c: 0c d0 rcall .+24 ; 0x8b6 <__udivmodhi4>
|
|||
|
89e: 06 d0 rcall .+12 ; 0x8ac <__divmodhi4_neg1>
|
|||
|
8a0: 00 20 and r0, r0
|
|||
|
8a2: 1a f4 brpl .+6 ; 0x8aa <__divmodhi4_exit>
|
|||
|
|
|||
|
000008a4 <__divmodhi4_neg2>:
|
|||
|
8a4: 70 95 com r23
|
|||
|
8a6: 61 95 neg r22
|
|||
|
8a8: 7f 4f sbci r23, 0xFF ; 255
|
|||
|
|
|||
|
000008aa <__divmodhi4_exit>:
|
|||
|
8aa: 08 95 ret
|
|||
|
|
|||
|
000008ac <__divmodhi4_neg1>:
|
|||
|
8ac: f6 f7 brtc .-4 ; 0x8aa <__divmodhi4_exit>
|
|||
|
8ae: 90 95 com r25
|
|||
|
8b0: 81 95 neg r24
|
|||
|
8b2: 9f 4f sbci r25, 0xFF ; 255
|
|||
|
8b4: 08 95 ret
|
|||
|
|
|||
|
000008b6 <__udivmodhi4>:
|
|||
|
8b6: aa 1b sub r26, r26
|
|||
|
8b8: bb 1b sub r27, r27
|
|||
|
8ba: 51 e1 ldi r21, 0x11 ; 17
|
|||
|
8bc: 07 c0 rjmp .+14 ; 0x8cc <__udivmodhi4_ep>
|
|||
|
|
|||
|
000008be <__udivmodhi4_loop>:
|
|||
|
8be: aa 1f adc r26, r26
|
|||
|
8c0: bb 1f adc r27, r27
|
|||
|
8c2: a6 17 cp r26, r22
|
|||
|
8c4: b7 07 cpc r27, r23
|
|||
|
8c6: 10 f0 brcs .+4 ; 0x8cc <__udivmodhi4_ep>
|
|||
|
8c8: a6 1b sub r26, r22
|
|||
|
8ca: b7 0b sbc r27, r23
|
|||
|
|
|||
|
000008cc <__udivmodhi4_ep>:
|
|||
|
8cc: 88 1f adc r24, r24
|
|||
|
8ce: 99 1f adc r25, r25
|
|||
|
8d0: 5a 95 dec r21
|
|||
|
8d2: a9 f7 brne .-22 ; 0x8be <__udivmodhi4_loop>
|
|||
|
8d4: 80 95 com r24
|
|||
|
8d6: 90 95 com r25
|
|||
|
8d8: bc 01 movw r22, r24
|
|||
|
8da: cd 01 movw r24, r26
|
|||
|
8dc: 08 95 ret
|
|||
|
|
|||
|
000008de <printf>:
|
|||
|
8de: a0 e0 ldi r26, 0x00 ; 0
|
|||
|
8e0: b0 e0 ldi r27, 0x00 ; 0
|
|||
|
8e2: e5 e7 ldi r30, 0x75 ; 117
|
|||
|
8e4: f4 e0 ldi r31, 0x04 ; 4
|
|||
|
8e6: 0c 94 14 07 jmp 0xe28 ; 0xe28 <__prologue_saves__+0x20>
|
|||
|
8ea: fe 01 movw r30, r28
|
|||
|
8ec: 35 96 adiw r30, 0x05 ; 5
|
|||
|
8ee: 61 91 ld r22, Z+
|
|||
|
8f0: 71 91 ld r23, Z+
|
|||
|
8f2: 80 91 a2 03 lds r24, 0x03A2
|
|||
|
8f6: 90 91 a3 03 lds r25, 0x03A3
|
|||
|
8fa: af 01 movw r20, r30
|
|||
|
8fc: 0e 94 84 04 call 0x908 ; 0x908 <vfprintf>
|
|||
|
900: 20 96 adiw r28, 0x00 ; 0
|
|||
|
902: e2 e0 ldi r30, 0x02 ; 2
|
|||
|
904: 0c 94 30 07 jmp 0xe60 ; 0xe60 <__epilogue_restores__+0x20>
|
|||
|
|
|||
|
00000908 <vfprintf>:
|
|||
|
908: ad e0 ldi r26, 0x0D ; 13
|
|||
|
90a: b0 e0 ldi r27, 0x00 ; 0
|
|||
|
90c: ea e8 ldi r30, 0x8A ; 138
|
|||
|
90e: f4 e0 ldi r31, 0x04 ; 4
|
|||
|
910: 0c 94 04 07 jmp 0xe08 ; 0xe08 <__prologue_saves__>
|
|||
|
914: 3c 01 movw r6, r24
|
|||
|
916: 7d 87 std Y+13, r23 ; 0x0d
|
|||
|
918: 6c 87 std Y+12, r22 ; 0x0c
|
|||
|
91a: 5a 01 movw r10, r20
|
|||
|
91c: fc 01 movw r30, r24
|
|||
|
91e: 17 82 std Z+7, r1 ; 0x07
|
|||
|
920: 16 82 std Z+6, r1 ; 0x06
|
|||
|
922: 83 81 ldd r24, Z+3 ; 0x03
|
|||
|
924: 81 ff sbrs r24, 1
|
|||
|
926: ca c1 rjmp .+916 ; 0xcbc <vfprintf+0x3b4>
|
|||
|
928: 3f e3 ldi r19, 0x3F ; 63
|
|||
|
92a: c3 2e mov r12, r19
|
|||
|
92c: 2e 01 movw r4, r28
|
|||
|
92e: 08 94 sec
|
|||
|
930: 41 1c adc r4, r1
|
|||
|
932: 51 1c adc r5, r1
|
|||
|
934: f3 01 movw r30, r6
|
|||
|
936: 93 81 ldd r25, Z+3 ; 0x03
|
|||
|
938: ec 85 ldd r30, Y+12 ; 0x0c
|
|||
|
93a: fd 85 ldd r31, Y+13 ; 0x0d
|
|||
|
93c: 93 fd sbrc r25, 3
|
|||
|
93e: 85 91 lpm r24, Z+
|
|||
|
940: 93 ff sbrs r25, 3
|
|||
|
942: 81 91 ld r24, Z+
|
|||
|
944: fd 87 std Y+13, r31 ; 0x0d
|
|||
|
946: ec 87 std Y+12, r30 ; 0x0c
|
|||
|
948: 88 23 and r24, r24
|
|||
|
94a: 09 f4 brne .+2 ; 0x94e <vfprintf+0x46>
|
|||
|
94c: b3 c1 rjmp .+870 ; 0xcb4 <vfprintf+0x3ac>
|
|||
|
94e: 85 32 cpi r24, 0x25 ; 37
|
|||
|
950: 41 f4 brne .+16 ; 0x962 <vfprintf+0x5a>
|
|||
|
952: 93 fd sbrc r25, 3
|
|||
|
954: 85 91 lpm r24, Z+
|
|||
|
956: 93 ff sbrs r25, 3
|
|||
|
958: 81 91 ld r24, Z+
|
|||
|
95a: fd 87 std Y+13, r31 ; 0x0d
|
|||
|
95c: ec 87 std Y+12, r30 ; 0x0c
|
|||
|
95e: 85 32 cpi r24, 0x25 ; 37
|
|||
|
960: 29 f4 brne .+10 ; 0x96c <vfprintf+0x64>
|
|||
|
962: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
964: b3 01 movw r22, r6
|
|||
|
966: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
96a: e4 cf rjmp .-56 ; 0x934 <vfprintf+0x2c>
|
|||
|
96c: ee 24 eor r14, r14
|
|||
|
96e: dd 24 eor r13, r13
|
|||
|
970: 10 e0 ldi r17, 0x00 ; 0
|
|||
|
972: 10 32 cpi r17, 0x20 ; 32
|
|||
|
974: b0 f4 brcc .+44 ; 0x9a2 <vfprintf+0x9a>
|
|||
|
976: 8b 32 cpi r24, 0x2B ; 43
|
|||
|
978: 69 f0 breq .+26 ; 0x994 <vfprintf+0x8c>
|
|||
|
97a: 8c 32 cpi r24, 0x2C ; 44
|
|||
|
97c: 28 f4 brcc .+10 ; 0x988 <vfprintf+0x80>
|
|||
|
97e: 80 32 cpi r24, 0x20 ; 32
|
|||
|
980: 51 f0 breq .+20 ; 0x996 <vfprintf+0x8e>
|
|||
|
982: 83 32 cpi r24, 0x23 ; 35
|
|||
|
984: 71 f4 brne .+28 ; 0x9a2 <vfprintf+0x9a>
|
|||
|
986: 0b c0 rjmp .+22 ; 0x99e <vfprintf+0x96>
|
|||
|
988: 8d 32 cpi r24, 0x2D ; 45
|
|||
|
98a: 39 f0 breq .+14 ; 0x99a <vfprintf+0x92>
|
|||
|
98c: 80 33 cpi r24, 0x30 ; 48
|
|||
|
98e: 49 f4 brne .+18 ; 0x9a2 <vfprintf+0x9a>
|
|||
|
990: 11 60 ori r17, 0x01 ; 1
|
|||
|
992: 2c c0 rjmp .+88 ; 0x9ec <vfprintf+0xe4>
|
|||
|
994: 12 60 ori r17, 0x02 ; 2
|
|||
|
996: 14 60 ori r17, 0x04 ; 4
|
|||
|
998: 29 c0 rjmp .+82 ; 0x9ec <vfprintf+0xe4>
|
|||
|
99a: 18 60 ori r17, 0x08 ; 8
|
|||
|
99c: 27 c0 rjmp .+78 ; 0x9ec <vfprintf+0xe4>
|
|||
|
99e: 10 61 ori r17, 0x10 ; 16
|
|||
|
9a0: 25 c0 rjmp .+74 ; 0x9ec <vfprintf+0xe4>
|
|||
|
9a2: 17 fd sbrc r17, 7
|
|||
|
9a4: 2e c0 rjmp .+92 ; 0xa02 <vfprintf+0xfa>
|
|||
|
9a6: 28 2f mov r18, r24
|
|||
|
9a8: 20 53 subi r18, 0x30 ; 48
|
|||
|
9aa: 2a 30 cpi r18, 0x0A ; 10
|
|||
|
9ac: 98 f4 brcc .+38 ; 0x9d4 <vfprintf+0xcc>
|
|||
|
9ae: 16 ff sbrs r17, 6
|
|||
|
9b0: 08 c0 rjmp .+16 ; 0x9c2 <vfprintf+0xba>
|
|||
|
9b2: 8e 2d mov r24, r14
|
|||
|
9b4: 88 0f add r24, r24
|
|||
|
9b6: e8 2e mov r14, r24
|
|||
|
9b8: ee 0c add r14, r14
|
|||
|
9ba: ee 0c add r14, r14
|
|||
|
9bc: e8 0e add r14, r24
|
|||
|
9be: e2 0e add r14, r18
|
|||
|
9c0: 15 c0 rjmp .+42 ; 0x9ec <vfprintf+0xe4>
|
|||
|
9c2: 8d 2d mov r24, r13
|
|||
|
9c4: 88 0f add r24, r24
|
|||
|
9c6: d8 2e mov r13, r24
|
|||
|
9c8: dd 0c add r13, r13
|
|||
|
9ca: dd 0c add r13, r13
|
|||
|
9cc: d8 0e add r13, r24
|
|||
|
9ce: d2 0e add r13, r18
|
|||
|
9d0: 10 62 ori r17, 0x20 ; 32
|
|||
|
9d2: 0c c0 rjmp .+24 ; 0x9ec <vfprintf+0xe4>
|
|||
|
9d4: 8e 32 cpi r24, 0x2E ; 46
|
|||
|
9d6: 21 f4 brne .+8 ; 0x9e0 <vfprintf+0xd8>
|
|||
|
9d8: 16 fd sbrc r17, 6
|
|||
|
9da: 6c c1 rjmp .+728 ; 0xcb4 <vfprintf+0x3ac>
|
|||
|
9dc: 10 64 ori r17, 0x40 ; 64
|
|||
|
9de: 06 c0 rjmp .+12 ; 0x9ec <vfprintf+0xe4>
|
|||
|
9e0: 8c 36 cpi r24, 0x6C ; 108
|
|||
|
9e2: 11 f4 brne .+4 ; 0x9e8 <vfprintf+0xe0>
|
|||
|
9e4: 10 68 ori r17, 0x80 ; 128
|
|||
|
9e6: 02 c0 rjmp .+4 ; 0x9ec <vfprintf+0xe4>
|
|||
|
9e8: 88 36 cpi r24, 0x68 ; 104
|
|||
|
9ea: 59 f4 brne .+22 ; 0xa02 <vfprintf+0xfa>
|
|||
|
9ec: ec 85 ldd r30, Y+12 ; 0x0c
|
|||
|
9ee: fd 85 ldd r31, Y+13 ; 0x0d
|
|||
|
9f0: 93 fd sbrc r25, 3
|
|||
|
9f2: 85 91 lpm r24, Z+
|
|||
|
9f4: 93 ff sbrs r25, 3
|
|||
|
9f6: 81 91 ld r24, Z+
|
|||
|
9f8: fd 87 std Y+13, r31 ; 0x0d
|
|||
|
9fa: ec 87 std Y+12, r30 ; 0x0c
|
|||
|
9fc: 88 23 and r24, r24
|
|||
|
9fe: 09 f0 breq .+2 ; 0xa02 <vfprintf+0xfa>
|
|||
|
a00: b8 cf rjmp .-144 ; 0x972 <vfprintf+0x6a>
|
|||
|
a02: 98 2f mov r25, r24
|
|||
|
a04: 95 54 subi r25, 0x45 ; 69
|
|||
|
a06: 93 30 cpi r25, 0x03 ; 3
|
|||
|
a08: 18 f0 brcs .+6 ; 0xa10 <vfprintf+0x108>
|
|||
|
a0a: 90 52 subi r25, 0x20 ; 32
|
|||
|
a0c: 93 30 cpi r25, 0x03 ; 3
|
|||
|
a0e: 30 f4 brcc .+12 ; 0xa1c <vfprintf+0x114>
|
|||
|
a10: 24 e0 ldi r18, 0x04 ; 4
|
|||
|
a12: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
a14: a2 0e add r10, r18
|
|||
|
a16: b3 1e adc r11, r19
|
|||
|
a18: c9 82 std Y+1, r12 ; 0x01
|
|||
|
a1a: 0f c0 rjmp .+30 ; 0xa3a <vfprintf+0x132>
|
|||
|
a1c: 83 36 cpi r24, 0x63 ; 99
|
|||
|
a1e: 31 f0 breq .+12 ; 0xa2c <vfprintf+0x124>
|
|||
|
a20: 83 37 cpi r24, 0x73 ; 115
|
|||
|
a22: 81 f0 breq .+32 ; 0xa44 <vfprintf+0x13c>
|
|||
|
a24: 83 35 cpi r24, 0x53 ; 83
|
|||
|
a26: 09 f0 breq .+2 ; 0xa2a <vfprintf+0x122>
|
|||
|
a28: 5a c0 rjmp .+180 ; 0xade <vfprintf+0x1d6>
|
|||
|
a2a: 22 c0 rjmp .+68 ; 0xa70 <vfprintf+0x168>
|
|||
|
a2c: f5 01 movw r30, r10
|
|||
|
a2e: 80 81 ld r24, Z
|
|||
|
a30: 89 83 std Y+1, r24 ; 0x01
|
|||
|
a32: 22 e0 ldi r18, 0x02 ; 2
|
|||
|
a34: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
a36: a2 0e add r10, r18
|
|||
|
a38: b3 1e adc r11, r19
|
|||
|
a3a: 21 e0 ldi r18, 0x01 ; 1
|
|||
|
a3c: e2 2e mov r14, r18
|
|||
|
a3e: f1 2c mov r15, r1
|
|||
|
a40: 42 01 movw r8, r4
|
|||
|
a42: 14 c0 rjmp .+40 ; 0xa6c <vfprintf+0x164>
|
|||
|
a44: 92 e0 ldi r25, 0x02 ; 2
|
|||
|
a46: 29 2e mov r2, r25
|
|||
|
a48: 31 2c mov r3, r1
|
|||
|
a4a: 2a 0c add r2, r10
|
|||
|
a4c: 3b 1c adc r3, r11
|
|||
|
a4e: f5 01 movw r30, r10
|
|||
|
a50: 80 80 ld r8, Z
|
|||
|
a52: 91 80 ldd r9, Z+1 ; 0x01
|
|||
|
a54: 16 ff sbrs r17, 6
|
|||
|
a56: 03 c0 rjmp .+6 ; 0xa5e <vfprintf+0x156>
|
|||
|
a58: 6e 2d mov r22, r14
|
|||
|
a5a: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
a5c: 02 c0 rjmp .+4 ; 0xa62 <vfprintf+0x15a>
|
|||
|
a5e: 6f ef ldi r22, 0xFF ; 255
|
|||
|
a60: 7f ef ldi r23, 0xFF ; 255
|
|||
|
a62: c4 01 movw r24, r8
|
|||
|
a64: 0e 94 6f 06 call 0xcde ; 0xcde <strnlen>
|
|||
|
a68: 7c 01 movw r14, r24
|
|||
|
a6a: 51 01 movw r10, r2
|
|||
|
a6c: 1f 77 andi r17, 0x7F ; 127
|
|||
|
a6e: 15 c0 rjmp .+42 ; 0xa9a <vfprintf+0x192>
|
|||
|
a70: 82 e0 ldi r24, 0x02 ; 2
|
|||
|
a72: 28 2e mov r2, r24
|
|||
|
a74: 31 2c mov r3, r1
|
|||
|
a76: 2a 0c add r2, r10
|
|||
|
a78: 3b 1c adc r3, r11
|
|||
|
a7a: f5 01 movw r30, r10
|
|||
|
a7c: 80 80 ld r8, Z
|
|||
|
a7e: 91 80 ldd r9, Z+1 ; 0x01
|
|||
|
a80: 16 ff sbrs r17, 6
|
|||
|
a82: 03 c0 rjmp .+6 ; 0xa8a <vfprintf+0x182>
|
|||
|
a84: 6e 2d mov r22, r14
|
|||
|
a86: 70 e0 ldi r23, 0x00 ; 0
|
|||
|
a88: 02 c0 rjmp .+4 ; 0xa8e <vfprintf+0x186>
|
|||
|
a8a: 6f ef ldi r22, 0xFF ; 255
|
|||
|
a8c: 7f ef ldi r23, 0xFF ; 255
|
|||
|
a8e: c4 01 movw r24, r8
|
|||
|
a90: 0e 94 64 06 call 0xcc8 ; 0xcc8 <strnlen_P>
|
|||
|
a94: 7c 01 movw r14, r24
|
|||
|
a96: 10 68 ori r17, 0x80 ; 128
|
|||
|
a98: 51 01 movw r10, r2
|
|||
|
a9a: 13 fd sbrc r17, 3
|
|||
|
a9c: 1c c0 rjmp .+56 ; 0xad6 <vfprintf+0x1ce>
|
|||
|
a9e: 06 c0 rjmp .+12 ; 0xaac <vfprintf+0x1a4>
|
|||
|
aa0: 80 e2 ldi r24, 0x20 ; 32
|
|||
|
aa2: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
aa4: b3 01 movw r22, r6
|
|||
|
aa6: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
aaa: da 94 dec r13
|
|||
|
aac: 8d 2d mov r24, r13
|
|||
|
aae: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
ab0: e8 16 cp r14, r24
|
|||
|
ab2: f9 06 cpc r15, r25
|
|||
|
ab4: a8 f3 brcs .-22 ; 0xaa0 <vfprintf+0x198>
|
|||
|
ab6: 0f c0 rjmp .+30 ; 0xad6 <vfprintf+0x1ce>
|
|||
|
ab8: f4 01 movw r30, r8
|
|||
|
aba: 17 fd sbrc r17, 7
|
|||
|
abc: 85 91 lpm r24, Z+
|
|||
|
abe: 17 ff sbrs r17, 7
|
|||
|
ac0: 81 91 ld r24, Z+
|
|||
|
ac2: 4f 01 movw r8, r30
|
|||
|
ac4: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
ac6: b3 01 movw r22, r6
|
|||
|
ac8: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
acc: d1 10 cpse r13, r1
|
|||
|
ace: da 94 dec r13
|
|||
|
ad0: 08 94 sec
|
|||
|
ad2: e1 08 sbc r14, r1
|
|||
|
ad4: f1 08 sbc r15, r1
|
|||
|
ad6: e1 14 cp r14, r1
|
|||
|
ad8: f1 04 cpc r15, r1
|
|||
|
ada: 71 f7 brne .-36 ; 0xab8 <vfprintf+0x1b0>
|
|||
|
adc: e8 c0 rjmp .+464 ; 0xcae <vfprintf+0x3a6>
|
|||
|
ade: 84 36 cpi r24, 0x64 ; 100
|
|||
|
ae0: 11 f0 breq .+4 ; 0xae6 <vfprintf+0x1de>
|
|||
|
ae2: 89 36 cpi r24, 0x69 ; 105
|
|||
|
ae4: 59 f5 brne .+86 ; 0xb3c <vfprintf+0x234>
|
|||
|
ae6: f5 01 movw r30, r10
|
|||
|
ae8: 17 ff sbrs r17, 7
|
|||
|
aea: 07 c0 rjmp .+14 ; 0xafa <vfprintf+0x1f2>
|
|||
|
aec: 80 81 ld r24, Z
|
|||
|
aee: 91 81 ldd r25, Z+1 ; 0x01
|
|||
|
af0: a2 81 ldd r26, Z+2 ; 0x02
|
|||
|
af2: b3 81 ldd r27, Z+3 ; 0x03
|
|||
|
af4: 24 e0 ldi r18, 0x04 ; 4
|
|||
|
af6: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
af8: 09 c0 rjmp .+18 ; 0xb0c <vfprintf+0x204>
|
|||
|
afa: 60 81 ld r22, Z
|
|||
|
afc: 71 81 ldd r23, Z+1 ; 0x01
|
|||
|
afe: cb 01 movw r24, r22
|
|||
|
b00: aa 27 eor r26, r26
|
|||
|
b02: 97 fd sbrc r25, 7
|
|||
|
b04: a0 95 com r26
|
|||
|
b06: ba 2f mov r27, r26
|
|||
|
b08: 22 e0 ldi r18, 0x02 ; 2
|
|||
|
b0a: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
b0c: a2 0e add r10, r18
|
|||
|
b0e: b3 1e adc r11, r19
|
|||
|
b10: 01 2f mov r16, r17
|
|||
|
b12: 0f 76 andi r16, 0x6F ; 111
|
|||
|
b14: b7 ff sbrs r27, 7
|
|||
|
b16: 08 c0 rjmp .+16 ; 0xb28 <vfprintf+0x220>
|
|||
|
b18: b0 95 com r27
|
|||
|
b1a: a0 95 com r26
|
|||
|
b1c: 90 95 com r25
|
|||
|
b1e: 81 95 neg r24
|
|||
|
b20: 9f 4f sbci r25, 0xFF ; 255
|
|||
|
b22: af 4f sbci r26, 0xFF ; 255
|
|||
|
b24: bf 4f sbci r27, 0xFF ; 255
|
|||
|
b26: 00 68 ori r16, 0x80 ; 128
|
|||
|
b28: bc 01 movw r22, r24
|
|||
|
b2a: cd 01 movw r24, r26
|
|||
|
b2c: a2 01 movw r20, r4
|
|||
|
b2e: 2a e0 ldi r18, 0x0A ; 10
|
|||
|
b30: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
b32: 0e 94 a6 06 call 0xd4c ; 0xd4c <__ultoa_invert>
|
|||
|
b36: f8 2e mov r15, r24
|
|||
|
b38: f4 18 sub r15, r4
|
|||
|
b3a: 3f c0 rjmp .+126 ; 0xbba <vfprintf+0x2b2>
|
|||
|
b3c: 85 37 cpi r24, 0x75 ; 117
|
|||
|
b3e: 21 f4 brne .+8 ; 0xb48 <vfprintf+0x240>
|
|||
|
b40: 1f 7e andi r17, 0xEF ; 239
|
|||
|
b42: 2a e0 ldi r18, 0x0A ; 10
|
|||
|
b44: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
b46: 20 c0 rjmp .+64 ; 0xb88 <vfprintf+0x280>
|
|||
|
b48: 19 7f andi r17, 0xF9 ; 249
|
|||
|
b4a: 8f 36 cpi r24, 0x6F ; 111
|
|||
|
b4c: a9 f0 breq .+42 ; 0xb78 <vfprintf+0x270>
|
|||
|
b4e: 80 37 cpi r24, 0x70 ; 112
|
|||
|
b50: 20 f4 brcc .+8 ; 0xb5a <vfprintf+0x252>
|
|||
|
b52: 88 35 cpi r24, 0x58 ; 88
|
|||
|
b54: 09 f0 breq .+2 ; 0xb58 <vfprintf+0x250>
|
|||
|
b56: ae c0 rjmp .+348 ; 0xcb4 <vfprintf+0x3ac>
|
|||
|
b58: 0b c0 rjmp .+22 ; 0xb70 <vfprintf+0x268>
|
|||
|
b5a: 80 37 cpi r24, 0x70 ; 112
|
|||
|
b5c: 21 f0 breq .+8 ; 0xb66 <vfprintf+0x25e>
|
|||
|
b5e: 88 37 cpi r24, 0x78 ; 120
|
|||
|
b60: 09 f0 breq .+2 ; 0xb64 <vfprintf+0x25c>
|
|||
|
b62: a8 c0 rjmp .+336 ; 0xcb4 <vfprintf+0x3ac>
|
|||
|
b64: 01 c0 rjmp .+2 ; 0xb68 <vfprintf+0x260>
|
|||
|
b66: 10 61 ori r17, 0x10 ; 16
|
|||
|
b68: 14 ff sbrs r17, 4
|
|||
|
b6a: 09 c0 rjmp .+18 ; 0xb7e <vfprintf+0x276>
|
|||
|
b6c: 14 60 ori r17, 0x04 ; 4
|
|||
|
b6e: 07 c0 rjmp .+14 ; 0xb7e <vfprintf+0x276>
|
|||
|
b70: 14 ff sbrs r17, 4
|
|||
|
b72: 08 c0 rjmp .+16 ; 0xb84 <vfprintf+0x27c>
|
|||
|
b74: 16 60 ori r17, 0x06 ; 6
|
|||
|
b76: 06 c0 rjmp .+12 ; 0xb84 <vfprintf+0x27c>
|
|||
|
b78: 28 e0 ldi r18, 0x08 ; 8
|
|||
|
b7a: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
b7c: 05 c0 rjmp .+10 ; 0xb88 <vfprintf+0x280>
|
|||
|
b7e: 20 e1 ldi r18, 0x10 ; 16
|
|||
|
b80: 30 e0 ldi r19, 0x00 ; 0
|
|||
|
b82: 02 c0 rjmp .+4 ; 0xb88 <vfprintf+0x280>
|
|||
|
b84: 20 e1 ldi r18, 0x10 ; 16
|
|||
|
b86: 32 e0 ldi r19, 0x02 ; 2
|
|||
|
b88: f5 01 movw r30, r10
|
|||
|
b8a: 17 ff sbrs r17, 7
|
|||
|
b8c: 07 c0 rjmp .+14 ; 0xb9c <vfprintf+0x294>
|
|||
|
b8e: 60 81 ld r22, Z
|
|||
|
b90: 71 81 ldd r23, Z+1 ; 0x01
|
|||
|
b92: 82 81 ldd r24, Z+2 ; 0x02
|
|||
|
b94: 93 81 ldd r25, Z+3 ; 0x03
|
|||
|
b96: 44 e0 ldi r20, 0x04 ; 4
|
|||
|
b98: 50 e0 ldi r21, 0x00 ; 0
|
|||
|
b9a: 06 c0 rjmp .+12 ; 0xba8 <vfprintf+0x2a0>
|
|||
|
b9c: 60 81 ld r22, Z
|
|||
|
b9e: 71 81 ldd r23, Z+1 ; 0x01
|
|||
|
ba0: 80 e0 ldi r24, 0x00 ; 0
|
|||
|
ba2: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
ba4: 42 e0 ldi r20, 0x02 ; 2
|
|||
|
ba6: 50 e0 ldi r21, 0x00 ; 0
|
|||
|
ba8: a4 0e add r10, r20
|
|||
|
baa: b5 1e adc r11, r21
|
|||
|
bac: a2 01 movw r20, r4
|
|||
|
bae: 0e 94 a6 06 call 0xd4c ; 0xd4c <__ultoa_invert>
|
|||
|
bb2: f8 2e mov r15, r24
|
|||
|
bb4: f4 18 sub r15, r4
|
|||
|
bb6: 01 2f mov r16, r17
|
|||
|
bb8: 0f 77 andi r16, 0x7F ; 127
|
|||
|
bba: 06 ff sbrs r16, 6
|
|||
|
bbc: 09 c0 rjmp .+18 ; 0xbd0 <vfprintf+0x2c8>
|
|||
|
bbe: 0e 7f andi r16, 0xFE ; 254
|
|||
|
bc0: fe 14 cp r15, r14
|
|||
|
bc2: 30 f4 brcc .+12 ; 0xbd0 <vfprintf+0x2c8>
|
|||
|
bc4: 04 ff sbrs r16, 4
|
|||
|
bc6: 06 c0 rjmp .+12 ; 0xbd4 <vfprintf+0x2cc>
|
|||
|
bc8: 02 fd sbrc r16, 2
|
|||
|
bca: 04 c0 rjmp .+8 ; 0xbd4 <vfprintf+0x2cc>
|
|||
|
bcc: 0f 7e andi r16, 0xEF ; 239
|
|||
|
bce: 02 c0 rjmp .+4 ; 0xbd4 <vfprintf+0x2cc>
|
|||
|
bd0: 1f 2d mov r17, r15
|
|||
|
bd2: 01 c0 rjmp .+2 ; 0xbd6 <vfprintf+0x2ce>
|
|||
|
bd4: 1e 2d mov r17, r14
|
|||
|
bd6: 80 2f mov r24, r16
|
|||
|
bd8: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
bda: 04 ff sbrs r16, 4
|
|||
|
bdc: 0c c0 rjmp .+24 ; 0xbf6 <vfprintf+0x2ee>
|
|||
|
bde: fe 01 movw r30, r28
|
|||
|
be0: ef 0d add r30, r15
|
|||
|
be2: f1 1d adc r31, r1
|
|||
|
be4: 20 81 ld r18, Z
|
|||
|
be6: 20 33 cpi r18, 0x30 ; 48
|
|||
|
be8: 11 f4 brne .+4 ; 0xbee <vfprintf+0x2e6>
|
|||
|
bea: 09 7e andi r16, 0xE9 ; 233
|
|||
|
bec: 09 c0 rjmp .+18 ; 0xc00 <vfprintf+0x2f8>
|
|||
|
bee: 02 ff sbrs r16, 2
|
|||
|
bf0: 06 c0 rjmp .+12 ; 0xbfe <vfprintf+0x2f6>
|
|||
|
bf2: 1e 5f subi r17, 0xFE ; 254
|
|||
|
bf4: 05 c0 rjmp .+10 ; 0xc00 <vfprintf+0x2f8>
|
|||
|
bf6: 86 78 andi r24, 0x86 ; 134
|
|||
|
bf8: 90 70 andi r25, 0x00 ; 0
|
|||
|
bfa: 00 97 sbiw r24, 0x00 ; 0
|
|||
|
bfc: 09 f0 breq .+2 ; 0xc00 <vfprintf+0x2f8>
|
|||
|
bfe: 1f 5f subi r17, 0xFF ; 255
|
|||
|
c00: 80 2e mov r8, r16
|
|||
|
c02: 99 24 eor r9, r9
|
|||
|
c04: 03 fd sbrc r16, 3
|
|||
|
c06: 12 c0 rjmp .+36 ; 0xc2c <vfprintf+0x324>
|
|||
|
c08: 00 ff sbrs r16, 0
|
|||
|
c0a: 0d c0 rjmp .+26 ; 0xc26 <vfprintf+0x31e>
|
|||
|
c0c: ef 2c mov r14, r15
|
|||
|
c0e: 1d 15 cp r17, r13
|
|||
|
c10: 50 f4 brcc .+20 ; 0xc26 <vfprintf+0x31e>
|
|||
|
c12: ed 0c add r14, r13
|
|||
|
c14: e1 1a sub r14, r17
|
|||
|
c16: 1d 2d mov r17, r13
|
|||
|
c18: 06 c0 rjmp .+12 ; 0xc26 <vfprintf+0x31e>
|
|||
|
c1a: 80 e2 ldi r24, 0x20 ; 32
|
|||
|
c1c: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c1e: b3 01 movw r22, r6
|
|||
|
c20: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
c24: 1f 5f subi r17, 0xFF ; 255
|
|||
|
c26: 1d 15 cp r17, r13
|
|||
|
c28: c0 f3 brcs .-16 ; 0xc1a <vfprintf+0x312>
|
|||
|
c2a: 04 c0 rjmp .+8 ; 0xc34 <vfprintf+0x32c>
|
|||
|
c2c: 1d 15 cp r17, r13
|
|||
|
c2e: 10 f4 brcc .+4 ; 0xc34 <vfprintf+0x32c>
|
|||
|
c30: d1 1a sub r13, r17
|
|||
|
c32: 01 c0 rjmp .+2 ; 0xc36 <vfprintf+0x32e>
|
|||
|
c34: dd 24 eor r13, r13
|
|||
|
c36: 84 fe sbrs r8, 4
|
|||
|
c38: 0f c0 rjmp .+30 ; 0xc58 <vfprintf+0x350>
|
|||
|
c3a: 80 e3 ldi r24, 0x30 ; 48
|
|||
|
c3c: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c3e: b3 01 movw r22, r6
|
|||
|
c40: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
c44: 82 fe sbrs r8, 2
|
|||
|
c46: 1f c0 rjmp .+62 ; 0xc86 <vfprintf+0x37e>
|
|||
|
c48: 81 fe sbrs r8, 1
|
|||
|
c4a: 03 c0 rjmp .+6 ; 0xc52 <vfprintf+0x34a>
|
|||
|
c4c: 88 e5 ldi r24, 0x58 ; 88
|
|||
|
c4e: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c50: 10 c0 rjmp .+32 ; 0xc72 <vfprintf+0x36a>
|
|||
|
c52: 88 e7 ldi r24, 0x78 ; 120
|
|||
|
c54: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c56: 0d c0 rjmp .+26 ; 0xc72 <vfprintf+0x36a>
|
|||
|
c58: c4 01 movw r24, r8
|
|||
|
c5a: 86 78 andi r24, 0x86 ; 134
|
|||
|
c5c: 90 70 andi r25, 0x00 ; 0
|
|||
|
c5e: 00 97 sbiw r24, 0x00 ; 0
|
|||
|
c60: 91 f0 breq .+36 ; 0xc86 <vfprintf+0x37e>
|
|||
|
c62: 81 fc sbrc r8, 1
|
|||
|
c64: 02 c0 rjmp .+4 ; 0xc6a <vfprintf+0x362>
|
|||
|
c66: 80 e2 ldi r24, 0x20 ; 32
|
|||
|
c68: 01 c0 rjmp .+2 ; 0xc6c <vfprintf+0x364>
|
|||
|
c6a: 8b e2 ldi r24, 0x2B ; 43
|
|||
|
c6c: 07 fd sbrc r16, 7
|
|||
|
c6e: 8d e2 ldi r24, 0x2D ; 45
|
|||
|
c70: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c72: b3 01 movw r22, r6
|
|||
|
c74: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
c78: 06 c0 rjmp .+12 ; 0xc86 <vfprintf+0x37e>
|
|||
|
c7a: 80 e3 ldi r24, 0x30 ; 48
|
|||
|
c7c: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c7e: b3 01 movw r22, r6
|
|||
|
c80: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
c84: ea 94 dec r14
|
|||
|
c86: fe 14 cp r15, r14
|
|||
|
c88: c0 f3 brcs .-16 ; 0xc7a <vfprintf+0x372>
|
|||
|
c8a: fa 94 dec r15
|
|||
|
c8c: f2 01 movw r30, r4
|
|||
|
c8e: ef 0d add r30, r15
|
|||
|
c90: f1 1d adc r31, r1
|
|||
|
c92: 80 81 ld r24, Z
|
|||
|
c94: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
c96: b3 01 movw r22, r6
|
|||
|
c98: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
c9c: ff 20 and r15, r15
|
|||
|
c9e: a9 f7 brne .-22 ; 0xc8a <vfprintf+0x382>
|
|||
|
ca0: 06 c0 rjmp .+12 ; 0xcae <vfprintf+0x3a6>
|
|||
|
ca2: 80 e2 ldi r24, 0x20 ; 32
|
|||
|
ca4: 90 e0 ldi r25, 0x00 ; 0
|
|||
|
ca6: b3 01 movw r22, r6
|
|||
|
ca8: 0e 94 7a 06 call 0xcf4 ; 0xcf4 <fputc>
|
|||
|
cac: da 94 dec r13
|
|||
|
cae: dd 20 and r13, r13
|
|||
|
cb0: c1 f7 brne .-16 ; 0xca2 <vfprintf+0x39a>
|
|||
|
cb2: 40 ce rjmp .-896 ; 0x934 <vfprintf+0x2c>
|
|||
|
cb4: f3 01 movw r30, r6
|
|||
|
cb6: 86 81 ldd r24, Z+6 ; 0x06
|
|||
|
cb8: 97 81 ldd r25, Z+7 ; 0x07
|
|||
|
cba: 02 c0 rjmp .+4 ; 0xcc0 <vfprintf+0x3b8>
|
|||
|
cbc: 8f ef ldi r24, 0xFF ; 255
|
|||
|
cbe: 9f ef ldi r25, 0xFF ; 255
|
|||
|
cc0: 2d 96 adiw r28, 0x0d ; 13
|
|||
|
cc2: e2 e1 ldi r30, 0x12 ; 18
|
|||
|
cc4: 0c 94 20 07 jmp 0xe40 ; 0xe40 <__epilogue_restores__>
|
|||
|
|
|||
|
00000cc8 <strnlen_P>:
|
|||
|
cc8: fc 01 movw r30, r24
|
|||
|
cca: 05 90 lpm r0, Z+
|
|||
|
ccc: 61 50 subi r22, 0x01 ; 1
|
|||
|
cce: 70 40 sbci r23, 0x00 ; 0
|
|||
|
cd0: 01 10 cpse r0, r1
|
|||
|
cd2: d8 f7 brcc .-10 ; 0xcca <strnlen_P+0x2>
|
|||
|
cd4: 80 95 com r24
|
|||
|
cd6: 90 95 com r25
|
|||
|
cd8: 8e 0f add r24, r30
|
|||
|
cda: 9f 1f adc r25, r31
|
|||
|
cdc: 08 95 ret
|
|||
|
|
|||
|
00000cde <strnlen>:
|
|||
|
cde: fc 01 movw r30, r24
|
|||
|
ce0: 61 50 subi r22, 0x01 ; 1
|
|||
|
ce2: 70 40 sbci r23, 0x00 ; 0
|
|||
|
ce4: 01 90 ld r0, Z+
|
|||
|
ce6: 01 10 cpse r0, r1
|
|||
|
ce8: d8 f7 brcc .-10 ; 0xce0 <strnlen+0x2>
|
|||
|
cea: 80 95 com r24
|
|||
|
cec: 90 95 com r25
|
|||
|
cee: 8e 0f add r24, r30
|
|||
|
cf0: 9f 1f adc r25, r31
|
|||
|
cf2: 08 95 ret
|
|||
|
|
|||
|
00000cf4 <fputc>:
|
|||
|
cf4: 0f 93 push r16
|
|||
|
cf6: 1f 93 push r17
|
|||
|
cf8: cf 93 push r28
|
|||
|
cfa: df 93 push r29
|
|||
|
cfc: 8c 01 movw r16, r24
|
|||
|
cfe: eb 01 movw r28, r22
|
|||
|
d00: 8b 81 ldd r24, Y+3 ; 0x03
|
|||
|
d02: 81 ff sbrs r24, 1
|
|||
|
d04: 1b c0 rjmp .+54 ; 0xd3c <fputc+0x48>
|
|||
|
d06: 82 ff sbrs r24, 2
|
|||
|
d08: 0d c0 rjmp .+26 ; 0xd24 <fputc+0x30>
|
|||
|
d0a: 2e 81 ldd r18, Y+6 ; 0x06
|
|||
|
d0c: 3f 81 ldd r19, Y+7 ; 0x07
|
|||
|
d0e: 8c 81 ldd r24, Y+4 ; 0x04
|
|||
|
d10: 9d 81 ldd r25, Y+5 ; 0x05
|
|||
|
d12: 28 17 cp r18, r24
|
|||
|
d14: 39 07 cpc r19, r25
|
|||
|
d16: 64 f4 brge .+24 ; 0xd30 <fputc+0x3c>
|
|||
|
d18: e8 81 ld r30, Y
|
|||
|
d1a: f9 81 ldd r31, Y+1 ; 0x01
|
|||
|
d1c: 01 93 st Z+, r16
|
|||
|
d1e: f9 83 std Y+1, r31 ; 0x01
|
|||
|
d20: e8 83 st Y, r30
|
|||
|
d22: 06 c0 rjmp .+12 ; 0xd30 <fputc+0x3c>
|
|||
|
d24: e8 85 ldd r30, Y+8 ; 0x08
|
|||
|
d26: f9 85 ldd r31, Y+9 ; 0x09
|
|||
|
d28: 80 2f mov r24, r16
|
|||
|
d2a: 09 95 icall
|
|||
|
d2c: 00 97 sbiw r24, 0x00 ; 0
|
|||
|
d2e: 31 f4 brne .+12 ; 0xd3c <fputc+0x48>
|
|||
|
d30: 8e 81 ldd r24, Y+6 ; 0x06
|
|||
|
d32: 9f 81 ldd r25, Y+7 ; 0x07
|
|||
|
d34: 01 96 adiw r24, 0x01 ; 1
|
|||
|
d36: 9f 83 std Y+7, r25 ; 0x07
|
|||
|
d38: 8e 83 std Y+6, r24 ; 0x06
|
|||
|
d3a: 02 c0 rjmp .+4 ; 0xd40 <fputc+0x4c>
|
|||
|
d3c: 0f ef ldi r16, 0xFF ; 255
|
|||
|
d3e: 1f ef ldi r17, 0xFF ; 255
|
|||
|
d40: c8 01 movw r24, r16
|
|||
|
d42: df 91 pop r29
|
|||
|
d44: cf 91 pop r28
|
|||
|
d46: 1f 91 pop r17
|
|||
|
d48: 0f 91 pop r16
|
|||
|
d4a: 08 95 ret
|
|||
|
|
|||
|
00000d4c <__ultoa_invert>:
|
|||
|
d4c: fa 01 movw r30, r20
|
|||
|
d4e: aa 27 eor r26, r26
|
|||
|
d50: 28 30 cpi r18, 0x08 ; 8
|
|||
|
d52: 51 f1 breq .+84 ; 0xda8 <__ultoa_invert+0x5c>
|
|||
|
d54: 20 31 cpi r18, 0x10 ; 16
|
|||
|
d56: 81 f1 breq .+96 ; 0xdb8 <__ultoa_invert+0x6c>
|
|||
|
d58: e8 94 clt
|
|||
|
d5a: 6f 93 push r22
|
|||
|
d5c: 6e 7f andi r22, 0xFE ; 254
|
|||
|
d5e: 6e 5f subi r22, 0xFE ; 254
|
|||
|
d60: 7f 4f sbci r23, 0xFF ; 255
|
|||
|
d62: 8f 4f sbci r24, 0xFF ; 255
|
|||
|
d64: 9f 4f sbci r25, 0xFF ; 255
|
|||
|
d66: af 4f sbci r26, 0xFF ; 255
|
|||
|
d68: b1 e0 ldi r27, 0x01 ; 1
|
|||
|
d6a: 3e d0 rcall .+124 ; 0xde8 <__ultoa_invert+0x9c>
|
|||
|
d6c: b4 e0 ldi r27, 0x04 ; 4
|
|||
|
d6e: 3c d0 rcall .+120 ; 0xde8 <__ultoa_invert+0x9c>
|
|||
|
d70: 67 0f add r22, r23
|
|||
|
d72: 78 1f adc r23, r24
|
|||
|
d74: 89 1f adc r24, r25
|
|||
|
d76: 9a 1f adc r25, r26
|
|||
|
d78: a1 1d adc r26, r1
|
|||
|
d7a: 68 0f add r22, r24
|
|||
|
d7c: 79 1f adc r23, r25
|
|||
|
d7e: 8a 1f adc r24, r26
|
|||
|
d80: 91 1d adc r25, r1
|
|||
|
d82: a1 1d adc r26, r1
|
|||
|
d84: 6a 0f add r22, r26
|
|||
|
d86: 71 1d adc r23, r1
|
|||
|
d88: 81 1d adc r24, r1
|
|||
|
d8a: 91 1d adc r25, r1
|
|||
|
d8c: a1 1d adc r26, r1
|
|||
|
d8e: 20 d0 rcall .+64 ; 0xdd0 <__ultoa_invert+0x84>
|
|||
|
d90: 09 f4 brne .+2 ; 0xd94 <__ultoa_invert+0x48>
|
|||
|
d92: 68 94 set
|
|||
|
d94: 3f 91 pop r19
|
|||
|
d96: 2a e0 ldi r18, 0x0A ; 10
|
|||
|
d98: 26 9f mul r18, r22
|
|||
|
d9a: 11 24 eor r1, r1
|
|||
|
d9c: 30 19 sub r19, r0
|
|||
|
d9e: 30 5d subi r19, 0xD0 ; 208
|
|||
|
da0: 31 93 st Z+, r19
|
|||
|
da2: de f6 brtc .-74 ; 0xd5a <__ultoa_invert+0xe>
|
|||
|
da4: cf 01 movw r24, r30
|
|||
|
da6: 08 95 ret
|
|||
|
da8: 46 2f mov r20, r22
|
|||
|
daa: 47 70 andi r20, 0x07 ; 7
|
|||
|
dac: 40 5d subi r20, 0xD0 ; 208
|
|||
|
dae: 41 93 st Z+, r20
|
|||
|
db0: b3 e0 ldi r27, 0x03 ; 3
|
|||
|
db2: 0f d0 rcall .+30 ; 0xdd2 <__ultoa_invert+0x86>
|
|||
|
db4: c9 f7 brne .-14 ; 0xda8 <__ultoa_invert+0x5c>
|
|||
|
db6: f6 cf rjmp .-20 ; 0xda4 <__ultoa_invert+0x58>
|
|||
|
db8: 46 2f mov r20, r22
|
|||
|
dba: 4f 70 andi r20, 0x0F ; 15
|
|||
|
dbc: 40 5d subi r20, 0xD0 ; 208
|
|||
|
dbe: 4a 33 cpi r20, 0x3A ; 58
|
|||
|
dc0: 18 f0 brcs .+6 ; 0xdc8 <__ultoa_invert+0x7c>
|
|||
|
dc2: 49 5d subi r20, 0xD9 ; 217
|
|||
|
dc4: 31 fd sbrc r19, 1
|
|||
|
dc6: 40 52 subi r20, 0x20 ; 32
|
|||
|
dc8: 41 93 st Z+, r20
|
|||
|
dca: 02 d0 rcall .+4 ; 0xdd0 <__ultoa_invert+0x84>
|
|||
|
dcc: a9 f7 brne .-22 ; 0xdb8 <__ultoa_invert+0x6c>
|
|||
|
dce: ea cf rjmp .-44 ; 0xda4 <__ultoa_invert+0x58>
|
|||
|
dd0: b4 e0 ldi r27, 0x04 ; 4
|
|||
|
dd2: a6 95 lsr r26
|
|||
|
dd4: 97 95 ror r25
|
|||
|
dd6: 87 95 ror r24
|
|||
|
dd8: 77 95 ror r23
|
|||
|
dda: 67 95 ror r22
|
|||
|
ddc: ba 95 dec r27
|
|||
|
dde: c9 f7 brne .-14 ; 0xdd2 <__ultoa_invert+0x86>
|
|||
|
de0: 00 97 sbiw r24, 0x00 ; 0
|
|||
|
de2: 61 05 cpc r22, r1
|
|||
|
de4: 71 05 cpc r23, r1
|
|||
|
de6: 08 95 ret
|
|||
|
de8: 9b 01 movw r18, r22
|
|||
|
dea: ac 01 movw r20, r24
|
|||
|
dec: 0a 2e mov r0, r26
|
|||
|
dee: 06 94 lsr r0
|
|||
|
df0: 57 95 ror r21
|
|||
|
df2: 47 95 ror r20
|
|||
|
df4: 37 95 ror r19
|
|||
|
df6: 27 95 ror r18
|
|||
|
df8: ba 95 dec r27
|
|||
|
dfa: c9 f7 brne .-14 ; 0xdee <__ultoa_invert+0xa2>
|
|||
|
dfc: 62 0f add r22, r18
|
|||
|
dfe: 73 1f adc r23, r19
|
|||
|
e00: 84 1f adc r24, r20
|
|||
|
e02: 95 1f adc r25, r21
|
|||
|
e04: a0 1d adc r26, r0
|
|||
|
e06: 08 95 ret
|
|||
|
|
|||
|
00000e08 <__prologue_saves__>:
|
|||
|
e08: 2f 92 push r2
|
|||
|
e0a: 3f 92 push r3
|
|||
|
e0c: 4f 92 push r4
|
|||
|
e0e: 5f 92 push r5
|
|||
|
e10: 6f 92 push r6
|
|||
|
e12: 7f 92 push r7
|
|||
|
e14: 8f 92 push r8
|
|||
|
e16: 9f 92 push r9
|
|||
|
e18: af 92 push r10
|
|||
|
e1a: bf 92 push r11
|
|||
|
e1c: cf 92 push r12
|
|||
|
e1e: df 92 push r13
|
|||
|
e20: ef 92 push r14
|
|||
|
e22: ff 92 push r15
|
|||
|
e24: 0f 93 push r16
|
|||
|
e26: 1f 93 push r17
|
|||
|
e28: cf 93 push r28
|
|||
|
e2a: df 93 push r29
|
|||
|
e2c: cd b7 in r28, 0x3d ; 61
|
|||
|
e2e: de b7 in r29, 0x3e ; 62
|
|||
|
e30: ca 1b sub r28, r26
|
|||
|
e32: db 0b sbc r29, r27
|
|||
|
e34: 0f b6 in r0, 0x3f ; 63
|
|||
|
e36: f8 94 cli
|
|||
|
e38: de bf out 0x3e, r29 ; 62
|
|||
|
e3a: 0f be out 0x3f, r0 ; 63
|
|||
|
e3c: cd bf out 0x3d, r28 ; 61
|
|||
|
e3e: 09 94 ijmp
|
|||
|
|
|||
|
00000e40 <__epilogue_restores__>:
|
|||
|
e40: 2a 88 ldd r2, Y+18 ; 0x12
|
|||
|
e42: 39 88 ldd r3, Y+17 ; 0x11
|
|||
|
e44: 48 88 ldd r4, Y+16 ; 0x10
|
|||
|
e46: 5f 84 ldd r5, Y+15 ; 0x0f
|
|||
|
e48: 6e 84 ldd r6, Y+14 ; 0x0e
|
|||
|
e4a: 7d 84 ldd r7, Y+13 ; 0x0d
|
|||
|
e4c: 8c 84 ldd r8, Y+12 ; 0x0c
|
|||
|
e4e: 9b 84 ldd r9, Y+11 ; 0x0b
|
|||
|
e50: aa 84 ldd r10, Y+10 ; 0x0a
|
|||
|
e52: b9 84 ldd r11, Y+9 ; 0x09
|
|||
|
e54: c8 84 ldd r12, Y+8 ; 0x08
|
|||
|
e56: df 80 ldd r13, Y+7 ; 0x07
|
|||
|
e58: ee 80 ldd r14, Y+6 ; 0x06
|
|||
|
e5a: fd 80 ldd r15, Y+5 ; 0x05
|
|||
|
e5c: 0c 81 ldd r16, Y+4 ; 0x04
|
|||
|
e5e: 1b 81 ldd r17, Y+3 ; 0x03
|
|||
|
e60: aa 81 ldd r26, Y+2 ; 0x02
|
|||
|
e62: b9 81 ldd r27, Y+1 ; 0x01
|
|||
|
e64: ce 0f add r28, r30
|
|||
|
e66: d1 1d adc r29, r1
|
|||
|
e68: 0f b6 in r0, 0x3f ; 63
|
|||
|
e6a: f8 94 cli
|
|||
|
e6c: de bf out 0x3e, r29 ; 62
|
|||
|
e6e: 0f be out 0x3f, r0 ; 63
|
|||
|
e70: cd bf out 0x3d, r28 ; 61
|
|||
|
e72: ed 01 movw r28, r26
|
|||
|
e74: 08 95 ret
|
|||
|
|
|||
|
00000e76 <_exit>:
|
|||
|
e76: f8 94 cli
|
|||
|
|
|||
|
00000e78 <__stop_program>:
|
|||
|
e78: ff cf rjmp .-2 ; 0xe78 <__stop_program>
|