Funkschalter/V2/Programm/Programm/Debug/Programm.lss
2014-05-20 16:10:06 +00:00

2308 lines
89 KiB
Plaintext
Raw Blame History

Programm.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000006 00800200 00000bfc 00000c90 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000bfc 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000005 00800206 00800206 00000c96 2**0
ALLOC
3 .stab 00000c9c 00000000 00000000 00000c98 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 000001aa 00000000 00000000 00001934 2**0
CONTENTS, READONLY, DEBUGGING
5 .comment 0000002f 00000000 00000000 00001ade 2**0
CONTENTS, READONLY
6 .debug_aranges 000000d8 00000000 00000000 00001b0d 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 0000482e 00000000 00000000 00001be5 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 0000089b 00000000 00000000 00006413 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000dd5 00000000 00000000 00006cae 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000224 00000000 00000000 00007a84 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 000097d8 00000000 00000000 00007ca8 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000fde 00000000 00000000 00011480 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000158 00000000 00000000 0001245e 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_macro 00002f76 00000000 00000000 000125b6 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 75 00 jmp 0xea ; 0xea <__ctors_end>
4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
10: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
14: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
18: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
1c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
20: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
24: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
28: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
2c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
30: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
34: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
38: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
3c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
40: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
44: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
48: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
4c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
50: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
54: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
58: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
5c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
60: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
64: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
68: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
6c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
70: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
74: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
78: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
7c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
80: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
84: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
88: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
8c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
90: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
94: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
98: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
9c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
a0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
a4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
a8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
ac: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
b0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
b4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
b8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
bc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
c0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
c4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
c8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
cc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
d0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
d4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
d8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
dc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
e0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt>
000000e4 <__trampolines_start>:
e4: 0c 94 ce 02 jmp 0x59c ; 0x59c <_GLOBAL__sub_I_d>
000000e8 <__ctors_start>:
e8: ce 02 muls r28, r30
000000ea <__ctors_end>:
ea: 11 24 eor r1, r1
ec: 1f be out 0x3f, r1 ; 63
ee: cf ef ldi r28, 0xFF ; 255
f0: d1 e2 ldi r29, 0x21 ; 33
f2: de bf out 0x3e, r29 ; 62
f4: cd bf out 0x3d, r28 ; 61
f6: 00 e0 ldi r16, 0x00 ; 0
f8: 0c bf out 0x3c, r16 ; 60
000000fa <__do_copy_data>:
fa: 12 e0 ldi r17, 0x02 ; 2
fc: a0 e0 ldi r26, 0x00 ; 0
fe: b2 e0 ldi r27, 0x02 ; 2
100: ec ef ldi r30, 0xFC ; 252
102: fb e0 ldi r31, 0x0B ; 11
104: 00 e0 ldi r16, 0x00 ; 0
106: 0b bf out 0x3b, r16 ; 59
108: 02 c0 rjmp .+4 ; 0x10e <__do_copy_data+0x14>
10a: 07 90 elpm r0, Z+
10c: 0d 92 st X+, r0
10e: a6 30 cpi r26, 0x06 ; 6
110: b1 07 cpc r27, r17
112: d9 f7 brne .-10 ; 0x10a <__do_copy_data+0x10>
00000114 <__do_clear_bss>:
114: 22 e0 ldi r18, 0x02 ; 2
116: a6 e0 ldi r26, 0x06 ; 6
118: b2 e0 ldi r27, 0x02 ; 2
11a: 01 c0 rjmp .+2 ; 0x11e <.do_clear_bss_start>
0000011c <.do_clear_bss_loop>:
11c: 1d 92 st X+, r1
0000011e <.do_clear_bss_start>:
11e: ab 30 cpi r26, 0x0B ; 11
120: b2 07 cpc r27, r18
122: e1 f7 brne .-8 ; 0x11c <.do_clear_bss_loop>
00000124 <__do_global_ctors>:
124: 10 e0 ldi r17, 0x00 ; 0
126: ca ee ldi r28, 0xEA ; 234
128: d0 e0 ldi r29, 0x00 ; 0
12a: 00 e0 ldi r16, 0x00 ; 0
12c: 06 c0 rjmp .+12 ; 0x13a <__do_global_ctors+0x16>
12e: 22 97 sbiw r28, 0x02 ; 2
130: 01 09 sbc r16, r1
132: fe 01 movw r30, r28
134: 0b bf out 0x3b, r16 ; 59
136: 0e 94 24 03 call 0x648 ; 0x648 <__tablejump_elpm__>
13a: c8 3e cpi r28, 0xE8 ; 232
13c: d1 07 cpc r29, r17
13e: 80 e0 ldi r24, 0x00 ; 0
140: 08 07 cpc r16, r24
142: a9 f7 brne .-22 ; 0x12e <__do_global_ctors+0xa>
144: 0e 94 cc 01 call 0x398 ; 0x398 <main>
148: 0c 94 fc 05 jmp 0xbf8 ; 0xbf8 <_exit>
0000014c <__bad_interrupt>:
14c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000150 <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.9>:
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
150: eb e0 ldi r30, 0x0B ; 11
152: f1 e0 ldi r31, 0x01 ; 1
154: 80 81 ld r24, Z
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
156: 80 62 ori r24, 0x20 ; 32
static void port(uint8_t v) { PORTL = v; }
158: 80 83 st Z, r24
15a: 08 95 ret
0000015c <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33>:
}
void init_spi() {
SPCR = (1<<SPE) | (1<<MSTR);
SPSR = (1<<SPI2X);
}
uint8_t send_soft(uint8_t data) {
15c: 38 2f mov r19, r24
15e: 98 e0 ldi r25, 0x08 ; 8
uint8_t datain=0;
160: 80 e0 ldi r24, 0x00 ; 0
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
162: 20 91 05 01 lds r18, 0x0105
for (uint8_t i=0; i<8; i++)
{
if (data & 0x80) {
166: 37 ff sbrs r19, 7
168: 02 c0 rjmp .+4 ; 0x16e <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33+0x12>
16a: 20 64 ori r18, 0x40 ; 64
16c: 01 c0 rjmp .+2 ; 0x170 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33+0x14>
else
Port::port(Port::port() & ~(1<<Pin));
16e: 2f 7b andi r18, 0xBF ; 191
static void port(uint8_t v) { PORTJ = v; }
170: 20 93 05 01 sts 0x0105, r18
mosi::set();
}
else {
mosi::clear();
}
datain <<= 1;
174: 88 0f add r24, r24
static uint8_t pin() { return PINJ; }
176: 20 91 03 01 lds r18, 0x0103
if(miso::read()) {
17a: 23 fd sbrc r18, 3
datain |= 1;
17c: 81 60 ori r24, 0x01 ; 1
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
17e: 20 91 05 01 lds r18, 0x0105
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
182: 20 62 ori r18, 0x20 ; 32
static void port(uint8_t v) { PORTJ = v; }
184: 20 93 05 01 sts 0x0105, r18
}
sck::set();
data<<=1;
188: 33 0f add r19, r19
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
18a: 00 c0 rjmp .+0 ; 0x18c <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33+0x30>
18c: 00 c0 rjmp .+0 ; 0x18e <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33+0x32>
18e: 00 00 nop
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
190: 20 91 05 01 lds r18, 0x0105
else
Port::port(Port::port() & ~(1<<Pin));
194: 2f 7d andi r18, 0xDF ; 223
static void port(uint8_t v) { PORTJ = v; }
196: 20 93 05 01 sts 0x0105, r18
19a: 91 50 subi r25, 0x01 ; 1
SPCR = (1<<SPE) | (1<<MSTR);
SPSR = (1<<SPI2X);
}
uint8_t send_soft(uint8_t data) {
uint8_t datain=0;
for (uint8_t i=0; i<8; i++)
19c: 11 f7 brne .-60 ; 0x162 <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33+0x6>
data<<=1;
_delay_us(0.3);
sck::clear();
}
return datain;
}
19e: 08 95 ret
000001a0 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45>:
void init_port() {
sck::make_low(); //output und low;
cs::make_high(); //output und low;
sdi::make_low(); //output und low;
}
void send_soft(uint8_t data) {
1a0: 98 e0 ldi r25, 0x08 ; 8
for (uint8_t i=0; i<8; i++)
{
if (data & 0x80) {
1a2: 87 ff sbrs r24, 7
1a4: 02 c0 rjmp .+4 ; 0x1aa <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45+0xa>
namespace avrlib {
struct portg
{
static uint8_t port() { return PORTG; }
static void port(uint8_t v) { PORTG = v; }
1a6: a0 9a sbi 0x14, 0 ; 20
1a8: 01 c0 rjmp .+2 ; 0x1ac <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45+0xc>
1aa: a0 98 cbi 0x14, 0 ; 20
static uint8_t pin() { return PING; }
static void pin(uint8_t v) { PING = v; }
static uint8_t dir() { return DDRG; }
static void dir(uint8_t v) { DDRG = v; }
1ac: 98 9a sbi 0x13, 0 ; 19
namespace avrlib {
struct portg
{
static uint8_t port() { return PORTG; }
static void port(uint8_t v) { PORTG = v; }
1ae: a1 9a sbi 0x14, 1 ; 20
static uint8_t pin() { return PING; }
static void pin(uint8_t v) { PING = v; }
static uint8_t dir() { return DDRG; }
static void dir(uint8_t v) { DDRG = v; }
1b0: 99 9a sbi 0x13, 1 ; 19
}
else {
sdi::make_low();
}
sck::make_high();
data<<=1;
1b2: 88 0f add r24, r24
1b4: 00 c0 rjmp .+0 ; 0x1b6 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45+0x16>
1b6: 00 c0 rjmp .+0 ; 0x1b8 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45+0x18>
1b8: 00 00 nop
namespace avrlib {
struct portg
{
static uint8_t port() { return PORTG; }
static void port(uint8_t v) { PORTG = v; }
1ba: a1 98 cbi 0x14, 1 ; 20
static uint8_t pin() { return PING; }
static void pin(uint8_t v) { PING = v; }
static uint8_t dir() { return DDRG; }
static void dir(uint8_t v) { DDRG = v; }
1bc: 99 9a sbi 0x13, 1 ; 19
1be: 91 50 subi r25, 0x01 ; 1
sck::make_low(); //output und low;
cs::make_high(); //output und low;
sdi::make_low(); //output und low;
}
void send_soft(uint8_t data) {
for (uint8_t i=0; i<8; i++)
1c0: 81 f7 brne .-32 ; 0x1a2 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45+0x2>
sck::make_high();
data<<=1;
_delay_us(0.3);
sck::make_low();
}
}
1c2: 08 95 ret
000001c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>:
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
1c4: eb e0 ldi r30, 0x0B ; 11
1c6: f1 e0 ldi r31, 0x01 ; 1
1c8: 80 81 ld r24, Z
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
1ca: 80 68 ori r24, 0x80 ; 128
static void port(uint8_t v) { PORTL = v; }
1cc: 80 83 st Z, r24
1ce: 83 ed ldi r24, 0xD3 ; 211
1d0: 90 e0 ldi r25, 0x00 ; 0
1d2: 01 97 sbiw r24, 0x01 ; 1
1d4: f1 f7 brne .-4 ; 0x1d2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5+0xe>
1d6: 00 c0 rjmp .+0 ; 0x1d8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5+0x14>
1d8: 00 00 nop
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
1da: 80 81 ld r24, Z
else
Port::port(Port::port() & ~(1<<Pin));
1dc: 8f 77 andi r24, 0x7F ; 127
static void port(uint8_t v) { PORTL = v; }
1de: 80 83 st Z, r24
1e0: 08 95 ret
000001e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>:
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
1e2: eb e0 ldi r30, 0x0B ; 11
1e4: f1 e0 ldi r31, 0x01 ; 1
1e6: 90 81 ld r25, Z
1e8: 9f 7b andi r25, 0xBF ; 191
static void port(uint8_t v) { PORTL = v; }
1ea: 90 83 st Z, r25
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
1ec: 90 81 ld r25, Z
1ee: 9f 7d andi r25, 0xDF ; 223
static void port(uint8_t v) { PORTL = v; }
1f0: 90 83 st Z, r25
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
1f2: 8b b9 out 0x0b, r24 ; 11
prs::set();
} else {
prs::clear();
}
PortData::port(data);
this->toggleE();
1f4: 0c 94 e2 00 jmp 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
000001f8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25>:
lputc(c);
}
}
}
void lputc(uint8_t c) {
1f8: cf 93 push r28
1fa: c8 2f mov r28, r24
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
1fc: 90 91 0b 01 lds r25, 0x010B
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
200: 90 64 ori r25, 0x40 ; 64
static void port(uint8_t v) { PORTL = v; }
202: 90 93 0b 01 sts 0x010B, r25
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
206: 90 91 0b 01 lds r25, 0x010B
else
Port::port(Port::port() & ~(1<<Pin));
20a: 9f 7d andi r25, 0xDF ; 223
static void port(uint8_t v) { PORTL = v; }
20c: 90 93 0b 01 sts 0x010B, r25
210: 1b b8 out 0x0b, r1 ; 11
static uint8_t pin() { return PIND; }
static void pin(uint8_t v) { PIND = v; }
static uint8_t dir() { return DDRD; }
static void dir(uint8_t v) { DDRD = v; }
212: 1a b8 out 0x0a, r1 ; 10
} else {
prs::clear(); /* RS=0: read busy flag */
}
PortData::port(0x00);
PortData::dir(0x00);
this->toggleE();
214: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
static uint8_t pin() { return PIND; }
218: 99 b1 in r25, 0x09 ; 9
static void pin(uint8_t v) { PIND = v; }
static uint8_t dir() { return DDRD; }
static void dir(uint8_t v) { DDRD = v; }
21a: 8f ef ldi r24, 0xFF ; 255
21c: 8a b9 out 0x0a, r24 ; 10
}
}
void lputc(uint8_t c) {
uint8_t pos = this->getAddress(); // read busy-flag and address counter
if (c == '\n') {
21e: ca 30 cpi r28, 0x0A ; 10
220: e9 f4 brne .+58 ; 0x25c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x64>
_delay_us(53);
pen::clear();
}
void newline(uint8_t pos) {
if ( pos >= 0x50 && pos <= 0x5F ) {
222: 89 2f mov r24, r25
224: 80 55 subi r24, 0x50 ; 80
226: 80 31 cpi r24, 0x10 ; 16
228: 10 f4 brcc .+4 ; 0x22e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x36>
return data;
}
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
22a: 80 e8 ldi r24, 0x80 ; 128
22c: 0e c0 rjmp .+28 ; 0x24a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x52>
void newline(uint8_t pos) {
if ( pos >= 0x50 && pos <= 0x5F ) {
return this->setLine(1);
}
if ( pos >= 0x00 && pos <= 0x0F) {
22e: 90 31 cpi r25, 0x10 ; 16
230: 10 f4 brcc .+4 ; 0x236 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x3e>
}
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
232: 80 ec ldi r24, 0xC0 ; 192
234: 0a c0 rjmp .+20 ; 0x24a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x52>
return this->setLine(1);
}
if ( pos >= 0x00 && pos <= 0x0F) {
return this->setLine(2);
}
if ( pos >= 0x40 && pos <= 0x4F) {
236: 89 2f mov r24, r25
238: 80 54 subi r24, 0x40 ; 64
23a: 80 31 cpi r24, 0x10 ; 16
23c: 10 f4 brcc .+4 ; 0x242 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x4a>
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
case 3: this->setInstruction(0b10010000); break; //0x10-0x1F
23e: 80 e9 ldi r24, 0x90 ; 144
240: 04 c0 rjmp .+8 ; 0x24a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x52>
return this->setLine(2);
}
if ( pos >= 0x40 && pos <= 0x4F) {
return this->setLine(3);
}
if ( pos >= 0x10 && pos <= 0x1F) {
242: 90 51 subi r25, 0x10 ; 16
244: 90 31 cpi r25, 0x10 ; 16
246: 60 f5 brcc .+88 ; 0x2a0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0xa8>
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
case 3: this->setInstruction(0b10010000); break; //0x10-0x1F
case 4: this->setInstruction(0b11010000); break; //0x50-0x5F
248: 80 ed ldi r24, 0xD0 ; 208
24a: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
24e: 8f e9 ldi r24, 0x9F ; 159
250: 9f e0 ldi r25, 0x0F ; 15
252: 01 97 sbiw r24, 0x01 ; 1
254: f1 f7 brne .-4 ; 0x252 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x5a>
256: 00 c0 rjmp .+0 ; 0x258 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x60>
258: 00 00 nop
25a: 22 c0 rjmp .+68 ; 0x2a0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0xa8>
void lputc(uint8_t c) {
uint8_t pos = this->getAddress(); // read busy-flag and address counter
if (c == '\n') {
this->newline(pos);
} else {
if ( pos == 0x0F ) {
25c: 9f 30 cpi r25, 0x0F ; 15
25e: 11 f4 brne .+4 ; 0x264 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x6c>
}
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
260: 80 ec ldi r24, 0xC0 ; 192
262: 0b c0 rjmp .+22 ; 0x27a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x82>
if (c == '\n') {
this->newline(pos);
} else {
if ( pos == 0x0F ) {
this->setLine(2);
} else if ( pos == 0x4F ) {
264: 9f 34 cpi r25, 0x4F ; 79
266: 11 f4 brne .+4 ; 0x26c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x74>
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
case 3: this->setInstruction(0b10010000); break; //0x10-0x1F
268: 80 e9 ldi r24, 0x90 ; 144
26a: 07 c0 rjmp .+14 ; 0x27a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x82>
} else {
if ( pos == 0x0F ) {
this->setLine(2);
} else if ( pos == 0x4F ) {
this->setLine(3);
} else if ( pos == 0x1F ) {
26c: 9f 31 cpi r25, 0x1F ; 31
26e: 11 f4 brne .+4 ; 0x274 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x7c>
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
case 2: this->setInstruction(0b11000000); break; //0x40-0x4F
case 3: this->setInstruction(0b10010000); break; //0x10-0x1F
case 4: this->setInstruction(0b11010000); break; //0x50-0x5F
270: 80 ed ldi r24, 0xD0 ; 208
272: 03 c0 rjmp .+6 ; 0x27a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x82>
this->setLine(2);
} else if ( pos == 0x4F ) {
this->setLine(3);
} else if ( pos == 0x1F ) {
this->setLine(4);
} else if ( pos == 0x5F ) {
274: 9f 35 cpi r25, 0x5F ; 95
276: 49 f4 brne .+18 ; 0x28a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x92>
return data;
}
void setLine(uint8_t l) {
switch(l) {
case 1: this->setInstruction(0b10000000); break; //0x00-0x0F
278: 80 e8 ldi r24, 0x80 ; 128
27a: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
27e: 8f e9 ldi r24, 0x9F ; 159
280: 9f e0 ldi r25, 0x0F ; 15
282: 01 97 sbiw r24, 0x01 ; 1
284: f1 f7 brne .-4 ; 0x282 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x8a>
286: 00 c0 rjmp .+0 ; 0x288 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25+0x90>
288: 00 00 nop
namespace avrlib {
struct portl
{
static uint8_t port() { return PORTL; }
28a: 90 91 0b 01 lds r25, 0x010B
28e: 9f 7b andi r25, 0xBF ; 191
static void port(uint8_t v) { PORTL = v; }
290: 90 93 0b 01 sts 0x010B, r25
294: 0e 94 a8 00 call 0x150 ; 0x150 <_ZN6avrlib3pinINS_5portlELh5EE3setEb.part.9>
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
298: cb b9 out 0x0b, r28 ; 11
} else if ( pos == 0x5F ) {
this->setLine(1);
}
this->setChar(c);
}
}
29a: cf 91 pop r28
prs::set();
} else {
prs::clear();
}
PortData::port(data);
this->toggleE();
29c: 0c 94 e2 00 jmp 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
} else if ( pos == 0x5F ) {
this->setLine(1);
}
this->setChar(c);
}
}
2a0: cf 91 pop r28
2a2: 08 95 ret
000002a4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26>:
char t[10];
sprintf(t, "%04X ", d);
this->lputs(t);
}
void lputs(const char *s) { /* print string on lcd (no auto linefeed) */
2a4: cf 93 push r28
2a6: df 93 push r29
2a8: ec 01 movw r28, r24
2aa: 11 c0 rjmp .+34 ; 0x2ce <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x2a>
register char c;
while ( (c = *s++) ) {
if(c == 0xE4) { //<2F>
2ac: 84 3e cpi r24, 0xE4 ; 228
2ae: 11 f4 brne .+4 ; 0x2b4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x10>
lputc(0xE1);
2b0: 81 ee ldi r24, 0xE1 ; 225
2b2: 0b c0 rjmp .+22 ; 0x2ca <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x26>
} else if(c == 0xF6) { //<2F>
2b4: 86 3f cpi r24, 0xF6 ; 246
2b6: 11 f4 brne .+4 ; 0x2bc <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x18>
lputc(0xEF);
2b8: 8f ee ldi r24, 0xEF ; 239
2ba: 07 c0 rjmp .+14 ; 0x2ca <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x26>
} else if(c == 0xFC) { //<2F>
2bc: 8c 3f cpi r24, 0xFC ; 252
2be: 11 f4 brne .+4 ; 0x2c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x20>
lputc(0xF5);
2c0: 85 ef ldi r24, 0xF5 ; 245
2c2: 03 c0 rjmp .+6 ; 0x2ca <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x26>
} else if(c == 0xDF) { //<2F>
2c4: 8f 3d cpi r24, 0xDF ; 223
2c6: 09 f4 brne .+2 ; 0x2ca <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x26>
lputc(0xE2);
2c8: 82 ee ldi r24, 0xE2 ; 226
} else {
lputc(c);
2ca: 0e 94 fc 00 call 0x1f8 ; 0x1f8 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputcEh.isra.25>
this->lputs(t);
}
void lputs(const char *s) { /* print string on lcd (no auto linefeed) */
register char c;
while ( (c = *s++) ) {
2ce: 89 91 ld r24, Y+
2d0: 81 11 cpse r24, r1
2d2: ec cf rjmp .-40 ; 0x2ac <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26+0x8>
lputc(0xE2);
} else {
lputc(c);
}
}
}
2d4: df 91 pop r29
2d6: cf 91 pop r28
2d8: 08 95 ret
000002da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>:
}
private:
uint8_t hasdatav = 0;
uint8_t data = 0;
Spi s;
uint16_t send(uint16_t wert) {
2da: 9f 92 push r9
2dc: af 92 push r10
2de: bf 92 push r11
2e0: cf 92 push r12
2e2: df 92 push r13
2e4: ef 92 push r14
2e6: ff 92 push r15
2e8: 0f 93 push r16
2ea: 1f 93 push r17
2ec: cf 93 push r28
2ee: df 93 push r29
2f0: cd b7 in r28, 0x3d ; 61
2f2: de b7 in r29, 0x3e ; 62
2f4: 2a 97 sbiw r28, 0x0a ; 10
2f6: 0f b6 in r0, 0x3f ; 63
2f8: f8 94 cli
2fa: de bf out 0x3e, r29 ; 62
2fc: 0f be out 0x3f, r0 ; 63
2fe: cd bf out 0x3d, r28 ; 61
300: 98 2e mov r9, r24
302: f9 2e mov r15, r25
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
304: 85 e0 ldi r24, 0x05 ; 5
306: a8 2e mov r10, r24
308: bb 24 eor r11, r11
30a: b3 94 inc r11
30c: f5 01 movw r30, r10
30e: 20 81 ld r18, Z
310: 2f 7e andi r18, 0xEF ; 239
static void port(uint8_t v) { PORTJ = v; }
312: 20 83 st Z, r18
_delay_ms(2);
}
void printHex(uint16_t d) {
char t[10];
sprintf(t, "%04X ", d);
314: 9f 93 push r25
316: 9f 92 push r9
318: 90 e0 ldi r25, 0x00 ; 0
31a: c9 2e mov r12, r25
31c: 92 e0 ldi r25, 0x02 ; 2
31e: d9 2e mov r13, r25
320: df 92 push r13
322: cf 92 push r12
324: 8e 01 movw r16, r28
326: 0f 5f subi r16, 0xFF ; 255
328: 1f 4f sbci r17, 0xFF ; 255
32a: 1f 93 push r17
32c: 0f 93 push r16
32e: 0e 94 28 03 call 0x650 ; 0x650 <sprintf>
this->lputs(t);
332: c8 01 movw r24, r16
334: 0e 94 52 01 call 0x2a4 ; 0x2a4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26>
}
uint8_t send(uint8_t data) {
if(mode == 0) {
return this->send_hard(data);
}
return this->send_soft(data);
338: 8f 2d mov r24, r15
33a: 0e 94 ae 00 call 0x15c ; 0x15c <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33>
s.CSOn();
d.printHex(wert);
uint16_t werti = s.send((uint8_t)(wert >> 8)) << 8;
33e: f8 2e mov r15, r24
340: e1 2c mov r14, r1
342: 89 2d mov r24, r9
344: 0e 94 ae 00 call 0x15c ; 0x15c <_ZN3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EE9send_softEh.isra.33>
werti |= s.send((uint8_t)wert);
348: e8 2a or r14, r24
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
34a: f5 01 movw r30, r10
34c: 80 81 ld r24, Z
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
34e: 80 61 ori r24, 0x10 ; 16
static void port(uint8_t v) { PORTJ = v; }
350: 80 83 st Z, r24
_delay_ms(2);
}
void printHex(uint16_t d) {
char t[10];
sprintf(t, "%04X ", d);
352: ff 92 push r15
354: ef 92 push r14
356: df 92 push r13
358: cf 92 push r12
35a: 1f 93 push r17
35c: 0f 93 push r16
35e: 0e 94 28 03 call 0x650 ; 0x650 <sprintf>
this->lputs(t);
362: c8 01 movw r24, r16
364: 0e 94 52 01 call 0x2a4 ; 0x2a4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5lputsEPKc.isra.26>
s.CSOff();
d.printHex(werti);
return werti;
368: 0f b6 in r0, 0x3f ; 63
36a: f8 94 cli
36c: de bf out 0x3e, r29 ; 62
36e: 0f be out 0x3f, r0 ; 63
370: cd bf out 0x3d, r28 ; 61
}
372: c7 01 movw r24, r14
374: 2a 96 adiw r28, 0x0a ; 10
376: 0f b6 in r0, 0x3f ; 63
378: f8 94 cli
37a: de bf out 0x3e, r29 ; 62
37c: 0f be out 0x3f, r0 ; 63
37e: cd bf out 0x3d, r28 ; 61
380: df 91 pop r29
382: cf 91 pop r28
384: 1f 91 pop r17
386: 0f 91 pop r16
388: ff 90 pop r15
38a: ef 90 pop r14
38c: df 90 pop r13
38e: cf 90 pop r12
390: bf 90 pop r11
392: af 90 pop r10
394: 9f 90 pop r9
396: 08 95 ret
00000398 <main>:
this->setInstruction(0b00000000);
_delay_ms(2);
}
void clear() {
this->setInstruction(0b00000001);
398: 81 e0 ldi r24, 0x01 ; 1
39a: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
39e: 8f e3 ldi r24, 0x3F ; 63
3a0: 9f e1 ldi r25, 0x1F ; 31
3a2: 01 97 sbiw r24, 0x01 ; 1
3a4: f1 f7 brne .-4 ; 0x3a2 <main+0xa>
3a6: 00 c0 rjmp .+0 ; 0x3a8 <main+0x10>
3a8: 00 00 nop
/************************************************************************
* 0x8278 - 2
* rx off, baseband on, tx on, synth on, crystal on
************************************************************************/
d.clear();
this->send(0x8278); //war 8238 // TX on
3aa: 88 e7 ldi r24, 0x78 ; 120
3ac: 92 e8 ldi r25, 0x82 ; 130
3ae: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
3b2: 9f ef ldi r25, 0xFF ; 255
3b4: 21 ee ldi r18, 0xE1 ; 225
3b6: 84 e0 ldi r24, 0x04 ; 4
3b8: 91 50 subi r25, 0x01 ; 1
3ba: 20 40 sbci r18, 0x00 ; 0
3bc: 80 40 sbci r24, 0x00 ; 0
3be: e1 f7 brne .-8 ; 0x3b8 <main+0x20>
3c0: 00 c0 rjmp .+0 ; 0x3c2 <main+0x2a>
3c2: 00 00 nop
_delay_ms(100);
//this->ready();
//_delay_ms(3000);
this->send(0xB8AA);
3c4: 8a ea ldi r24, 0xAA ; 170
3c6: 98 eb ldi r25, 0xB8 ; 184
3c8: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
3cc: 8f e3 ldi r24, 0x3F ; 63
3ce: 9c e9 ldi r25, 0x9C ; 156
3d0: 01 97 sbiw r24, 0x01 ; 1
3d2: f1 f7 brne .-4 ; 0x3d0 <main+0x38>
3d4: 00 c0 rjmp .+0 ; 0x3d6 <main+0x3e>
3d6: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB8AA);
3d8: 8a ea ldi r24, 0xAA ; 170
3da: 98 eb ldi r25, 0xB8 ; 184
3dc: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
3e0: 8f e3 ldi r24, 0x3F ; 63
3e2: 9c e9 ldi r25, 0x9C ; 156
3e4: 01 97 sbiw r24, 0x01 ; 1
3e6: f1 f7 brne .-4 ; 0x3e4 <main+0x4c>
3e8: 00 c0 rjmp .+0 ; 0x3ea <main+0x52>
3ea: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB8AA);
3ec: 8a ea ldi r24, 0xAA ; 170
3ee: 98 eb ldi r25, 0xB8 ; 184
3f0: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
3f4: 8f e3 ldi r24, 0x3F ; 63
3f6: 9c e9 ldi r25, 0x9C ; 156
3f8: 01 97 sbiw r24, 0x01 ; 1
3fa: f1 f7 brne .-4 ; 0x3f8 <main+0x60>
3fc: 00 c0 rjmp .+0 ; 0x3fe <main+0x66>
3fe: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB82D);
400: 8d e2 ldi r24, 0x2D ; 45
402: 98 eb ldi r25, 0xB8 ; 184
404: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
408: 8f e3 ldi r24, 0x3F ; 63
40a: 9c e9 ldi r25, 0x9C ; 156
40c: 01 97 sbiw r24, 0x01 ; 1
40e: f1 f7 brne .-4 ; 0x40c <main+0x74>
410: 00 c0 rjmp .+0 ; 0x412 <main+0x7a>
412: 00 00 nop
_delay_ms(10);
//_delay_ms(15000);
//this->ready();
this->send(0xB8D4);
414: 84 ed ldi r24, 0xD4 ; 212
416: 98 eb ldi r25, 0xB8 ; 184
418: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
41c: 8f e3 ldi r24, 0x3F ; 63
41e: 9c e9 ldi r25, 0x9C ; 156
420: 01 97 sbiw r24, 0x01 ; 1
422: f1 f7 brne .-4 ; 0x420 <main+0x88>
424: 00 c0 rjmp .+0 ; 0x426 <main+0x8e>
426: 00 00 nop
_delay_ms(10);
//this->ready();*/
this->send(0xB800|addr);
428: 80 e0 ldi r24, 0x00 ; 0
42a: 98 eb ldi r25, 0xB8 ; 184
42c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
430: 8f e3 ldi r24, 0x3F ; 63
432: 9c e9 ldi r25, 0x9C ; 156
434: 01 97 sbiw r24, 0x01 ; 1
436: f1 f7 brne .-4 ; 0x434 <main+0x9c>
438: 00 c0 rjmp .+0 ; 0x43a <main+0xa2>
43a: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB800|from);
43c: 81 e0 ldi r24, 0x01 ; 1
43e: 98 eb ldi r25, 0xB8 ; 184
440: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
444: 8f e3 ldi r24, 0x3F ; 63
446: 9c e9 ldi r25, 0x9C ; 156
448: 01 97 sbiw r24, 0x01 ; 1
44a: f1 f7 brne .-4 ; 0x448 <main+0xb0>
44c: 00 c0 rjmp .+0 ; 0x44e <main+0xb6>
44e: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB800|data);
450: 85 e0 ldi r24, 0x05 ; 5
452: 98 eb ldi r25, 0xB8 ; 184
454: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
458: 8f e3 ldi r24, 0x3F ; 63
45a: 9c e9 ldi r25, 0x9C ; 156
45c: 01 97 sbiw r24, 0x01 ; 1
45e: f1 f7 brne .-4 ; 0x45c <main+0xc4>
460: 00 c0 rjmp .+0 ; 0x462 <main+0xca>
462: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0xB800);
464: 80 e0 ldi r24, 0x00 ; 0
466: 98 eb ldi r25, 0xB8 ; 184
468: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
46c: 8f e3 ldi r24, 0x3F ; 63
46e: 9c e9 ldi r25, 0x9C ; 156
470: 01 97 sbiw r24, 0x01 ; 1
472: f1 f7 brne .-4 ; 0x470 <main+0xd8>
474: 00 c0 rjmp .+0 ; 0x476 <main+0xde>
476: 00 00 nop
_delay_ms(10);
//this->ready();
this->send(0x8258); // TX off
478: 88 e5 ldi r24, 0x58 ; 88
47a: 92 e8 ldi r25, 0x82 ; 130
47c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
480: 9f ef ldi r25, 0xFF ; 255
482: 21 ee ldi r18, 0xE1 ; 225
484: 84 e0 ldi r24, 0x04 ; 4
486: 91 50 subi r25, 0x01 ; 1
488: 20 40 sbci r18, 0x00 ; 0
48a: 80 40 sbci r24, 0x00 ; 0
48c: e1 f7 brne .-8 ; 0x486 <main+0xee>
48e: 00 c0 rjmp .+0 ; 0x490 <main+0xf8>
490: 00 00 nop
492: 82 cf rjmp .-252 ; 0x398 <main>
00000494 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv>:
494: 8f ef ldi r24, 0xFF ; 255
496: 99 ef ldi r25, 0xF9 ; 249
498: 01 97 sbiw r24, 0x01 ; 1
49a: f1 f7 brne .-4 ; 0x498 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x4>
49c: 00 c0 rjmp .+0 ; 0x49e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0xa>
49e: 00 00 nop
const typedef avrlib::pin<PortSettings, pinrw> prw;
const typedef avrlib::pin<PortSettings, pinrs> prs;
void init() {
_delay_ms(16);
this->setInstruction(0x38);
4a0: 88 e3 ldi r24, 0x38 ; 56
4a2: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
4a6: 8f e1 ldi r24, 0x1F ; 31
4a8: 9e e4 ldi r25, 0x4E ; 78
4aa: 01 97 sbiw r24, 0x01 ; 1
4ac: f1 f7 brne .-4 ; 0x4aa <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x16>
4ae: 00 c0 rjmp .+0 ; 0x4b0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x1c>
4b0: 00 00 nop
_delay_ms(5);
this->toggleE();
4b2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
4b6: 8f ed ldi r24, 0xDF ; 223
4b8: 91 e0 ldi r25, 0x01 ; 1
4ba: 01 97 sbiw r24, 0x01 ; 1
4bc: f1 f7 brne .-4 ; 0x4ba <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x26>
4be: 00 c0 rjmp .+0 ; 0x4c0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x2c>
4c0: 00 00 nop
_delay_us(120);
this->toggleE();
4c2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
4c6: 8f ed ldi r24, 0xDF ; 223
4c8: 91 e0 ldi r25, 0x01 ; 1
4ca: 01 97 sbiw r24, 0x01 ; 1
4cc: f1 f7 brne .-4 ; 0x4ca <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x36>
4ce: 00 c0 rjmp .+0 ; 0x4d0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x3c>
4d0: 00 00 nop
_delay_us(120);
this->toggleE();
4d2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7toggleEEv.isra.5>
4d6: 8f ed ldi r24, 0xDF ; 223
4d8: 91 e0 ldi r25, 0x01 ; 1
4da: 01 97 sbiw r24, 0x01 ; 1
4dc: f1 f7 brne .-4 ; 0x4da <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x46>
4de: 00 c0 rjmp .+0 ; 0x4e0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x4c>
4e0: 00 00 nop
void setBacklight(uint8_t level) {
backlight.setValue(level);
}
void off() {
this->setInstruction(0b00000000);
4e2: 80 e0 ldi r24, 0x00 ; 0
4e4: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
4e8: 8f e3 ldi r24, 0x3F ; 63
4ea: 9f e1 ldi r25, 0x1F ; 31
4ec: 01 97 sbiw r24, 0x01 ; 1
4ee: f1 f7 brne .-4 ; 0x4ec <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x58>
4f0: 00 c0 rjmp .+0 ; 0x4f2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x5e>
4f2: 00 00 nop
_delay_ms(2);
}
void clear() {
this->setInstruction(0b00000001);
4f4: 81 e0 ldi r24, 0x01 ; 1
4f6: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
4fa: 8f e3 ldi r24, 0x3F ; 63
4fc: 9f e1 ldi r25, 0x1F ; 31
4fe: 01 97 sbiw r24, 0x01 ; 1
500: f1 f7 brne .-4 ; 0x4fe <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x6a>
502: 00 c0 rjmp .+0 ; 0x504 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x70>
504: 00 00 nop
this->setContrastMax();
this->setBacklightMin();
}
void entrymode() {
this->setInstruction(0b00000100);
506: 84 e0 ldi r24, 0x04 ; 4
508: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
50c: 9f ef ldi r25, 0xFF ; 255
50e: 21 ee ldi r18, 0xE1 ; 225
510: 84 e0 ldi r24, 0x04 ; 4
512: 91 50 subi r25, 0x01 ; 1
514: 20 40 sbci r18, 0x00 ; 0
516: 80 40 sbci r24, 0x00 ; 0
518: e1 f7 brne .-8 ; 0x512 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x7e>
51a: 00 c0 rjmp .+0 ; 0x51c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x88>
51c: 00 00 nop
this->setInstruction(0b00000001);
_delay_ms(2);
}
void on() {
this->setInstruction(0b00001100);
51e: 8c e0 ldi r24, 0x0C ; 12
520: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
524: 8f e3 ldi r24, 0x3F ; 63
526: 9f e1 ldi r25, 0x1F ; 31
528: 01 97 sbiw r24, 0x01 ; 1
52a: f1 f7 brne .-4 ; 0x528 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x94>
52c: 00 c0 rjmp .+0 ; 0x52e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0x9a>
52e: 00 00 nop
this->setInstruction(0b00000000);
_delay_ms(2);
}
void clear() {
this->setInstruction(0b00000001);
530: 81 e0 ldi r24, 0x01 ; 1
532: 0e 94 f1 00 call 0x1e2 ; 0x1e2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh.isra.15>
536: 8f e3 ldi r24, 0x3F ; 63
538: 9f e1 ldi r25, 0x1F ; 31
53a: 01 97 sbiw r24, 0x01 ; 1
53c: f1 f7 brne .-4 ; 0x53a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0xa6>
53e: 00 c0 rjmp .+0 ; 0x540 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv+0xac>
540: 00 00 nop
namespace avrlib {
struct portc
{
static uint8_t port() { return PORTC; }
static void port(uint8_t v) { PORTC = v; }
542: 40 98 cbi 0x08, 0 ; 8
void CSOff() {
cs::set();
}
void digitalPotWrite(uint16_t value) {
this->CSOn();
this->send_soft((value>>8)&0b00000001); //high byte least significant bit
544: 81 e0 ldi r24, 0x01 ; 1
546: 0e 94 d0 00 call 0x1a0 ; 0x1a0 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45>
this->send_soft(value & 0xff);
54a: 80 e0 ldi r24, 0x00 ; 0
54c: 0e 94 d0 00 call 0x1a0 ; 0x1a0 <_ZN7Mcp4151IN6avrlib5portcELi0ENS0_5portgELi0ES2_Li1EE9send_softEh.isra.45>
550: 40 9a sbi 0x08, 0 ; 8
}
void off() {
this->setValue(0);
}
void setValue(uint8_t wert) {
OCR5AL = wert;
552: 10 92 28 01 sts 0x0128, r1
556: 08 95 ret
00000558 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>:
namespace avrlib {
struct portg
{
static uint8_t port() { return PORTG; }
static void port(uint8_t v) { PORTG = v; }
558: a1 98 cbi 0x14, 1 ; 20
static uint8_t pin() { return PING; }
static void pin(uint8_t v) { PING = v; }
static uint8_t dir() { return DDRG; }
static void dir(uint8_t v) { DDRG = v; }
55a: 99 9a sbi 0x13, 1 ; 19
55c: 40 9a sbi 0x08, 0 ; 8
static uint8_t pin() { return PINC; }
static void pin(uint8_t v) { PINC = v; }
static uint8_t dir() { return DDRC; }
static void dir(uint8_t v) { DDRC = v; }
55e: 38 9a sbi 0x07, 0 ; 7
namespace avrlib {
struct portg
{
static uint8_t port() { return PORTG; }
static void port(uint8_t v) { PORTG = v; }
560: a0 98 cbi 0x14, 0 ; 20
static uint8_t pin() { return PING; }
static void pin(uint8_t v) { PING = v; }
static uint8_t dir() { return DDRG; }
static void dir(uint8_t v) { DDRG = v; }
562: 98 9a sbi 0x13, 0 ; 19
static uint8_t pin() { return PINL; }
static void pin(uint8_t v) { PINL = v; }
static uint8_t dir() { return DDRL; }
564: ea e0 ldi r30, 0x0A ; 10
566: f1 e0 ldi r31, 0x01 ; 1
568: 20 81 ld r18, Z
static bool value() { return (Port::pin() & (1<<Pin)) != 0; }
static void output(bool value)
{
if (value)
Port::dir(Port::dir() | (1<<Pin));
56a: 28 60 ori r18, 0x08 ; 8
static void dir(uint8_t v) { DDRL = v; }
56c: 20 83 st Z, r18
// Mode: Fast PWM top=0x00FF
// OC5A output: Inverted PWM
// Timer Period: 0,032 ms
// Output Pulse(s):
// OC5A Period: 0,032 ms
TCCR5A=(1<<COM5A1) | (0<<COM5A0) | (0<<COM5B1) | (0<<COM5B0) | (0<<COM5C1) | (0<<COM5C0) | (0<<WGM51) | (1<<WGM50);
56e: 21 e8 ldi r18, 0x81 ; 129
570: 20 93 20 01 sts 0x0120, r18
TCCR5B=(0<<ICNC5) | (0<<ICES5) | (0<<WGM53) | (1<<WGM52) | (0<<CS52) | (0<<CS51) | (1<<CS50);
574: 29 e0 ldi r18, 0x09 ; 9
576: 20 93 21 01 sts 0x0121, r18
OCR5AL=0x00;
57a: a8 e2 ldi r26, 0x28 ; 40
57c: b1 e0 ldi r27, 0x01 ; 1
57e: 1c 92 st X, r1
}
void off() {
this->setValue(0);
}
void setValue(uint8_t wert) {
OCR5AL = wert;
580: 1c 92 st X, r1
static void port(uint8_t v) { PORTL = v; }
static uint8_t pin() { return PINL; }
static void pin(uint8_t v) { PINL = v; }
static uint8_t dir() { return DDRL; }
582: 20 81 ld r18, Z
584: 20 68 ori r18, 0x80 ; 128
static void dir(uint8_t v) { DDRL = v; }
586: 20 83 st Z, r18
static void port(uint8_t v) { PORTL = v; }
static uint8_t pin() { return PINL; }
static void pin(uint8_t v) { PINL = v; }
static uint8_t dir() { return DDRL; }
588: 20 81 ld r18, Z
58a: 20 64 ori r18, 0x40 ; 64
static void dir(uint8_t v) { DDRL = v; }
58c: 20 83 st Z, r18
static void port(uint8_t v) { PORTL = v; }
static uint8_t pin() { return PINL; }
static void pin(uint8_t v) { PINL = v; }
static uint8_t dir() { return DDRL; }
58e: 20 81 ld r18, Z
590: 20 62 ori r18, 0x20 ; 32
static void dir(uint8_t v) { DDRL = v; }
592: 20 83 st Z, r18
static uint8_t pin() { return PIND; }
static void pin(uint8_t v) { PIND = v; }
static uint8_t dir() { return DDRD; }
static void dir(uint8_t v) { DDRD = v; }
594: 2f ef ldi r18, 0xFF ; 255
596: 2a b9 out 0x0a, r18 ; 10
Display() {
pen::make_output();
prw::make_output();
prs::make_output();
PortData::dir(0xFF);
this->init();
598: 0c 94 4a 02 jmp 0x494 ; 0x494 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE4initEv>
0000059c <_GLOBAL__sub_I_d>:
PINL7,
PINL6,
PINL5
> displayclass;
displayclass d;
59c: 89 e0 ldi r24, 0x09 ; 9
59e: 92 e0 ldi r25, 0x02 ; 2
5a0: 0e 94 ac 02 call 0x558 ; 0x558 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>
#define RFM12_H_
template <typename Spi, uint8_t bandwidth, uint8_t gain, uint8_t drssi, uint32_t frequenz, uint16_t baud, uint8_t power, uint8_t mod>
class Rfm12B {
public:
Rfm12B() {
5a4: 10 92 06 02 sts 0x0206, r1
5a8: 10 92 07 02 sts 0x0207, r1
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
5ac: e5 e0 ldi r30, 0x05 ; 5
5ae: f1 e0 ldi r31, 0x01 ; 1
5b0: 80 81 ld r24, Z
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
else
Port::port(Port::port() & ~(1<<Pin));
5b2: 8f 7b andi r24, 0xBF ; 191
static void port(uint8_t v) { PORTJ = v; }
5b4: 80 83 st Z, r24
static uint8_t pin() { return PINJ; }
static void pin(uint8_t v) { PINJ = v; }
static uint8_t dir() { return DDRJ; }
5b6: a4 e0 ldi r26, 0x04 ; 4
5b8: b1 e0 ldi r27, 0x01 ; 1
5ba: 8c 91 ld r24, X
static bool value() { return (Port::pin() & (1<<Pin)) != 0; }
static void output(bool value)
{
if (value)
Port::dir(Port::dir() | (1<<Pin));
5bc: 80 64 ori r24, 0x40 ; 64
static void dir(uint8_t v) { DDRJ = v; }
5be: 8c 93 st X, r24
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
5c0: 80 81 ld r24, Z
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
else
Port::port(Port::port() & ~(1<<Pin));
5c2: 8f 7d andi r24, 0xDF ; 223
static void port(uint8_t v) { PORTJ = v; }
5c4: 80 83 st Z, r24
static uint8_t pin() { return PINJ; }
static void pin(uint8_t v) { PINJ = v; }
static uint8_t dir() { return DDRJ; }
5c6: 8c 91 ld r24, X
static bool value() { return (Port::pin() & (1<<Pin)) != 0; }
static void output(bool value)
{
if (value)
Port::dir(Port::dir() | (1<<Pin));
5c8: 80 62 ori r24, 0x20 ; 32
static void dir(uint8_t v) { DDRJ = v; }
5ca: 8c 93 st X, r24
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
5cc: 80 81 ld r24, Z
struct pin
{
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
5ce: 80 61 ori r24, 0x10 ; 16
static void port(uint8_t v) { PORTJ = v; }
5d0: 80 83 st Z, r24
static uint8_t pin() { return PINJ; }
static void pin(uint8_t v) { PINJ = v; }
static uint8_t dir() { return DDRJ; }
5d2: 8c 91 ld r24, X
static bool value() { return (Port::pin() & (1<<Pin)) != 0; }
static void output(bool value)
{
if (value)
Port::dir(Port::dir() | (1<<Pin));
5d4: 80 61 ori r24, 0x10 ; 16
static void dir(uint8_t v) { DDRJ = v; }
5d6: 8c 93 st X, r24
static void port(uint8_t v) { PORTJ = v; }
static uint8_t pin() { return PINJ; }
static void pin(uint8_t v) { PINJ = v; }
static uint8_t dir() { return DDRJ; }
5d8: 8c 91 ld r24, X
else
Port::dir(Port::dir() & ~(1<<Pin));
5da: 87 7f andi r24, 0xF7 ; 247
static void dir(uint8_t v) { DDRJ = v; }
5dc: 8c 93 st X, r24
namespace avrlib {
struct portj
{
static uint8_t port() { return PORTJ; }
5de: 80 81 ld r24, Z
static void set(bool value = true)
{
if (value)
Port::port(Port::port() | (1<<Pin));
else
Port::port(Port::port() & ~(1<<Pin));
5e0: 87 7f andi r24, 0xF7 ; 247
static void port(uint8_t v) { PORTJ = v; }
5e2: 80 83 st Z, r24
5e4: 8f e3 ldi r24, 0x3F ; 63
5e6: 9c e9 ldi r25, 0x9C ; 156
5e8: 01 97 sbiw r24, 0x01 ; 1
5ea: f1 f7 brne .-4 ; 0x5e8 <_GLOBAL__sub_I_d+0x4c>
5ec: 00 c0 rjmp .+0 ; 0x5ee <_GLOBAL__sub_I_d+0x52>
5ee: 00 00 nop
* 0xC800 - 15
* low duty off
* 0xC4F7 - 10
* independely from VDI, +7,5 -10 rangelimit, fine mode, frequenzy offst register, calc offset
************************************************************************/
this->send(0xC020);
5f0: 80 e2 ldi r24, 0x20 ; 32
5f2: 90 ec ldi r25, 0xC0 ; 192
5f4: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0x80D7);
5f8: 87 ed ldi r24, 0xD7 ; 215
5fa: 90 e8 ldi r25, 0x80 ; 128
5fc: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0xC2AB);
600: 8b ea ldi r24, 0xAB ; 171
602: 92 ec ldi r25, 0xC2 ; 194
604: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0xCA81);
608: 81 e8 ldi r24, 0x81 ; 129
60a: 9a ec ldi r25, 0xCA ; 202
60c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0xE000);
610: 80 e0 ldi r24, 0x00 ; 0
612: 90 ee ldi r25, 0xE0 ; 224
614: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0xC800);
618: 80 e0 ldi r24, 0x00 ; 0
61a: 98 ec ldi r25, 0xC8 ; 200
61c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->send(0xC4F7);
620: 87 ef ldi r24, 0xF7 ; 247
622: 94 ec ldi r25, 0xC4 ; 196
624: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
if( freq < 96 ) { // 430,2400MHz
this->send( 0xA000 | 96 );
} else if( freq > 3903 ) { // 439,7575MHz
this->send( 0xA000 | 3903 );
}
this->send( 0xA000 | freq );
628: 80 e2 ldi r24, 0x20 ; 32
62a: 96 ea ldi r25, 0xA6 ; 166
62c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
this->setbandwidth();
this->setbaud();
this->setpower();
}
void setbandwidth() {
this->send( 0x9400 | ( ( bandwidth & 7 ) << 5 ) | ( ( gain & 3 ) << 3 ) | ( drssi & 5 ) );
630: 85 e2 ldi r24, 0x25 ; 37
632: 94 e9 ldi r25, 0x94 ; 148
634: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
return;
}
if (baud < 5400) { // Baudrate= 344827,58621/(R+1)/(1+CS*7)
this->send(0xC680 | ( ( 43104 / baud ) - 1 ) );
} else {
this->send(0xC600 | ( ( 344828UL / baud ) - 1 ) );
638: 82 e2 ldi r24, 0x22 ; 34
63a: 96 ec ldi r25, 0xC6 ; 198
63c: 0e 94 6d 01 call 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
}
}
void setpower() {
this->send( 0x9800 | ( power & 7 ) | ( ( mod & 15 ) << 4 ) );
640: 80 e7 ldi r24, 0x70 ; 112
642: 98 e9 ldi r25, 0x98 ; 152
644: 0c 94 6d 01 jmp 0x2da ; 0x2da <_ZN6Rfm12BI3SpiIN6avrlib5portjELi4ELi3ELi6ELi5ELi1EELh1ELh0ELh5ELm433920ELj9600ELh0ELh7EE4sendEj.isra.35>
00000648 <__tablejump_elpm__>:
648: 07 90 elpm r0, Z+
64a: f6 91 elpm r31, Z
64c: e0 2d mov r30, r0
64e: 19 94 eijmp
00000650 <sprintf>:
650: 0f 93 push r16
652: 1f 93 push r17
654: cf 93 push r28
656: df 93 push r29
658: cd b7 in r28, 0x3d ; 61
65a: de b7 in r29, 0x3e ; 62
65c: 2e 97 sbiw r28, 0x0e ; 14
65e: 0f b6 in r0, 0x3f ; 63
660: f8 94 cli
662: de bf out 0x3e, r29 ; 62
664: 0f be out 0x3f, r0 ; 63
666: cd bf out 0x3d, r28 ; 61
668: 0e 89 ldd r16, Y+22 ; 0x16
66a: 1f 89 ldd r17, Y+23 ; 0x17
66c: 86 e0 ldi r24, 0x06 ; 6
66e: 8c 83 std Y+4, r24 ; 0x04
670: 1a 83 std Y+2, r17 ; 0x02
672: 09 83 std Y+1, r16 ; 0x01
674: 8f ef ldi r24, 0xFF ; 255
676: 9f e7 ldi r25, 0x7F ; 127
678: 9e 83 std Y+6, r25 ; 0x06
67a: 8d 83 std Y+5, r24 ; 0x05
67c: ce 01 movw r24, r28
67e: 4a 96 adiw r24, 0x1a ; 26
680: ac 01 movw r20, r24
682: 68 8d ldd r22, Y+24 ; 0x18
684: 79 8d ldd r23, Y+25 ; 0x19
686: ce 01 movw r24, r28
688: 01 96 adiw r24, 0x01 ; 1
68a: 0e 94 57 03 call 0x6ae ; 0x6ae <vfprintf>
68e: ef 81 ldd r30, Y+7 ; 0x07
690: f8 85 ldd r31, Y+8 ; 0x08
692: e0 0f add r30, r16
694: f1 1f adc r31, r17
696: 10 82 st Z, r1
698: 2e 96 adiw r28, 0x0e ; 14
69a: 0f b6 in r0, 0x3f ; 63
69c: f8 94 cli
69e: de bf out 0x3e, r29 ; 62
6a0: 0f be out 0x3f, r0 ; 63
6a2: cd bf out 0x3d, r28 ; 61
6a4: df 91 pop r29
6a6: cf 91 pop r28
6a8: 1f 91 pop r17
6aa: 0f 91 pop r16
6ac: 08 95 ret
000006ae <vfprintf>:
6ae: 2f 92 push r2
6b0: 3f 92 push r3
6b2: 4f 92 push r4
6b4: 5f 92 push r5
6b6: 6f 92 push r6
6b8: 7f 92 push r7
6ba: 8f 92 push r8
6bc: 9f 92 push r9
6be: af 92 push r10
6c0: bf 92 push r11
6c2: cf 92 push r12
6c4: df 92 push r13
6c6: ef 92 push r14
6c8: ff 92 push r15
6ca: 0f 93 push r16
6cc: 1f 93 push r17
6ce: cf 93 push r28
6d0: df 93 push r29
6d2: cd b7 in r28, 0x3d ; 61
6d4: de b7 in r29, 0x3e ; 62
6d6: 2c 97 sbiw r28, 0x0c ; 12
6d8: 0f b6 in r0, 0x3f ; 63
6da: f8 94 cli
6dc: de bf out 0x3e, r29 ; 62
6de: 0f be out 0x3f, r0 ; 63
6e0: cd bf out 0x3d, r28 ; 61
6e2: 7c 01 movw r14, r24
6e4: 6b 01 movw r12, r22
6e6: 8a 01 movw r16, r20
6e8: fc 01 movw r30, r24
6ea: 17 82 std Z+7, r1 ; 0x07
6ec: 16 82 std Z+6, r1 ; 0x06
6ee: 83 81 ldd r24, Z+3 ; 0x03
6f0: 81 ff sbrs r24, 1
6f2: c6 c1 rjmp .+908 ; 0xa80 <vfprintf+0x3d2>
6f4: 88 24 eor r8, r8
6f6: 83 94 inc r8
6f8: 91 2c mov r9, r1
6fa: 8c 0e add r8, r28
6fc: 9d 1e adc r9, r29
6fe: f7 01 movw r30, r14
700: 93 81 ldd r25, Z+3 ; 0x03
702: f6 01 movw r30, r12
704: 93 fd sbrc r25, 3
706: 85 91 lpm r24, Z+
708: 93 ff sbrs r25, 3
70a: 81 91 ld r24, Z+
70c: 6f 01 movw r12, r30
70e: 88 23 and r24, r24
710: 09 f4 brne .+2 ; 0x714 <vfprintf+0x66>
712: b2 c1 rjmp .+868 ; 0xa78 <vfprintf+0x3ca>
714: 85 32 cpi r24, 0x25 ; 37
716: 39 f4 brne .+14 ; 0x726 <vfprintf+0x78>
718: 93 fd sbrc r25, 3
71a: 85 91 lpm r24, Z+
71c: 93 ff sbrs r25, 3
71e: 81 91 ld r24, Z+
720: 6f 01 movw r12, r30
722: 85 32 cpi r24, 0x25 ; 37
724: 29 f4 brne .+10 ; 0x730 <vfprintf+0x82>
726: b7 01 movw r22, r14
728: 90 e0 ldi r25, 0x00 ; 0
72a: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
72e: e7 cf rjmp .-50 ; 0x6fe <vfprintf+0x50>
730: 51 2c mov r5, r1
732: 31 2c mov r3, r1
734: 20 e0 ldi r18, 0x00 ; 0
736: 20 32 cpi r18, 0x20 ; 32
738: a8 f4 brcc .+42 ; 0x764 <vfprintf+0xb6>
73a: 8b 32 cpi r24, 0x2B ; 43
73c: 61 f0 breq .+24 ; 0x756 <vfprintf+0xa8>
73e: 28 f4 brcc .+10 ; 0x74a <vfprintf+0x9c>
740: 80 32 cpi r24, 0x20 ; 32
742: 51 f0 breq .+20 ; 0x758 <vfprintf+0xaa>
744: 83 32 cpi r24, 0x23 ; 35
746: 71 f4 brne .+28 ; 0x764 <vfprintf+0xb6>
748: 0b c0 rjmp .+22 ; 0x760 <vfprintf+0xb2>
74a: 8d 32 cpi r24, 0x2D ; 45
74c: 39 f0 breq .+14 ; 0x75c <vfprintf+0xae>
74e: 80 33 cpi r24, 0x30 ; 48
750: 49 f4 brne .+18 ; 0x764 <vfprintf+0xb6>
752: 21 60 ori r18, 0x01 ; 1
754: 28 c0 rjmp .+80 ; 0x7a6 <vfprintf+0xf8>
756: 22 60 ori r18, 0x02 ; 2
758: 24 60 ori r18, 0x04 ; 4
75a: 25 c0 rjmp .+74 ; 0x7a6 <vfprintf+0xf8>
75c: 28 60 ori r18, 0x08 ; 8
75e: 23 c0 rjmp .+70 ; 0x7a6 <vfprintf+0xf8>
760: 20 61 ori r18, 0x10 ; 16
762: 21 c0 rjmp .+66 ; 0x7a6 <vfprintf+0xf8>
764: 27 fd sbrc r18, 7
766: 27 c0 rjmp .+78 ; 0x7b6 <vfprintf+0x108>
768: 38 2f mov r19, r24
76a: 30 53 subi r19, 0x30 ; 48
76c: 3a 30 cpi r19, 0x0A ; 10
76e: 78 f4 brcc .+30 ; 0x78e <vfprintf+0xe0>
770: 26 ff sbrs r18, 6
772: 06 c0 rjmp .+12 ; 0x780 <vfprintf+0xd2>
774: fa e0 ldi r31, 0x0A ; 10
776: 5f 9e mul r5, r31
778: 30 0d add r19, r0
77a: 11 24 eor r1, r1
77c: 53 2e mov r5, r19
77e: 13 c0 rjmp .+38 ; 0x7a6 <vfprintf+0xf8>
780: 8a e0 ldi r24, 0x0A ; 10
782: 38 9e mul r3, r24
784: 30 0d add r19, r0
786: 11 24 eor r1, r1
788: 33 2e mov r3, r19
78a: 20 62 ori r18, 0x20 ; 32
78c: 0c c0 rjmp .+24 ; 0x7a6 <vfprintf+0xf8>
78e: 8e 32 cpi r24, 0x2E ; 46
790: 21 f4 brne .+8 ; 0x79a <vfprintf+0xec>
792: 26 fd sbrc r18, 6
794: 71 c1 rjmp .+738 ; 0xa78 <vfprintf+0x3ca>
796: 20 64 ori r18, 0x40 ; 64
798: 06 c0 rjmp .+12 ; 0x7a6 <vfprintf+0xf8>
79a: 8c 36 cpi r24, 0x6C ; 108
79c: 11 f4 brne .+4 ; 0x7a2 <vfprintf+0xf4>
79e: 20 68 ori r18, 0x80 ; 128
7a0: 02 c0 rjmp .+4 ; 0x7a6 <vfprintf+0xf8>
7a2: 88 36 cpi r24, 0x68 ; 104
7a4: 41 f4 brne .+16 ; 0x7b6 <vfprintf+0x108>
7a6: f6 01 movw r30, r12
7a8: 93 fd sbrc r25, 3
7aa: 85 91 lpm r24, Z+
7ac: 93 ff sbrs r25, 3
7ae: 81 91 ld r24, Z+
7b0: 6f 01 movw r12, r30
7b2: 81 11 cpse r24, r1
7b4: c0 cf rjmp .-128 ; 0x736 <vfprintf+0x88>
7b6: 98 2f mov r25, r24
7b8: 95 54 subi r25, 0x45 ; 69
7ba: 93 30 cpi r25, 0x03 ; 3
7bc: 18 f0 brcs .+6 ; 0x7c4 <vfprintf+0x116>
7be: 90 52 subi r25, 0x20 ; 32
7c0: 93 30 cpi r25, 0x03 ; 3
7c2: 28 f4 brcc .+10 ; 0x7ce <vfprintf+0x120>
7c4: 0c 5f subi r16, 0xFC ; 252
7c6: 1f 4f sbci r17, 0xFF ; 255
7c8: ff e3 ldi r31, 0x3F ; 63
7ca: f9 83 std Y+1, r31 ; 0x01
7cc: 0d c0 rjmp .+26 ; 0x7e8 <vfprintf+0x13a>
7ce: 83 36 cpi r24, 0x63 ; 99
7d0: 31 f0 breq .+12 ; 0x7de <vfprintf+0x130>
7d2: 83 37 cpi r24, 0x73 ; 115
7d4: 71 f0 breq .+28 ; 0x7f2 <vfprintf+0x144>
7d6: 83 35 cpi r24, 0x53 ; 83
7d8: 09 f0 breq .+2 ; 0x7dc <vfprintf+0x12e>
7da: 5e c0 rjmp .+188 ; 0x898 <vfprintf+0x1ea>
7dc: 23 c0 rjmp .+70 ; 0x824 <vfprintf+0x176>
7de: f8 01 movw r30, r16
7e0: 80 81 ld r24, Z
7e2: 89 83 std Y+1, r24 ; 0x01
7e4: 0e 5f subi r16, 0xFE ; 254
7e6: 1f 4f sbci r17, 0xFF ; 255
7e8: 44 24 eor r4, r4
7ea: 43 94 inc r4
7ec: 51 2c mov r5, r1
7ee: 54 01 movw r10, r8
7f0: 15 c0 rjmp .+42 ; 0x81c <vfprintf+0x16e>
7f2: 38 01 movw r6, r16
7f4: f2 e0 ldi r31, 0x02 ; 2
7f6: 6f 0e add r6, r31
7f8: 71 1c adc r7, r1
7fa: f8 01 movw r30, r16
7fc: a0 80 ld r10, Z
7fe: b1 80 ldd r11, Z+1 ; 0x01
800: 26 ff sbrs r18, 6
802: 03 c0 rjmp .+6 ; 0x80a <vfprintf+0x15c>
804: 65 2d mov r22, r5
806: 70 e0 ldi r23, 0x00 ; 0
808: 02 c0 rjmp .+4 ; 0x80e <vfprintf+0x160>
80a: 6f ef ldi r22, 0xFF ; 255
80c: 7f ef ldi r23, 0xFF ; 255
80e: c5 01 movw r24, r10
810: 2c 87 std Y+12, r18 ; 0x0c
812: 0e 94 67 05 call 0xace ; 0xace <strnlen>
816: 2c 01 movw r4, r24
818: 83 01 movw r16, r6
81a: 2c 85 ldd r18, Y+12 ; 0x0c
81c: 6f e7 ldi r22, 0x7F ; 127
81e: 26 2e mov r2, r22
820: 22 22 and r2, r18
822: 18 c0 rjmp .+48 ; 0x854 <vfprintf+0x1a6>
824: 38 01 movw r6, r16
826: f2 e0 ldi r31, 0x02 ; 2
828: 6f 0e add r6, r31
82a: 71 1c adc r7, r1
82c: f8 01 movw r30, r16
82e: a0 80 ld r10, Z
830: b1 80 ldd r11, Z+1 ; 0x01
832: 26 ff sbrs r18, 6
834: 03 c0 rjmp .+6 ; 0x83c <vfprintf+0x18e>
836: 65 2d mov r22, r5
838: 70 e0 ldi r23, 0x00 ; 0
83a: 02 c0 rjmp .+4 ; 0x840 <vfprintf+0x192>
83c: 6f ef ldi r22, 0xFF ; 255
83e: 7f ef ldi r23, 0xFF ; 255
840: c5 01 movw r24, r10
842: 2c 87 std Y+12, r18 ; 0x0c
844: 0e 94 5c 05 call 0xab8 ; 0xab8 <strnlen_P>
848: 2c 01 movw r4, r24
84a: 2c 85 ldd r18, Y+12 ; 0x0c
84c: 50 e8 ldi r21, 0x80 ; 128
84e: 25 2e mov r2, r21
850: 22 2a or r2, r18
852: 83 01 movw r16, r6
854: 23 fc sbrc r2, 3
856: 1c c0 rjmp .+56 ; 0x890 <vfprintf+0x1e2>
858: 06 c0 rjmp .+12 ; 0x866 <vfprintf+0x1b8>
85a: b7 01 movw r22, r14
85c: 80 e2 ldi r24, 0x20 ; 32
85e: 90 e0 ldi r25, 0x00 ; 0
860: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
864: 3a 94 dec r3
866: 83 2d mov r24, r3
868: 90 e0 ldi r25, 0x00 ; 0
86a: 48 16 cp r4, r24
86c: 59 06 cpc r5, r25
86e: a8 f3 brcs .-22 ; 0x85a <vfprintf+0x1ac>
870: 0f c0 rjmp .+30 ; 0x890 <vfprintf+0x1e2>
872: f5 01 movw r30, r10
874: 27 fc sbrc r2, 7
876: 85 91 lpm r24, Z+
878: 27 fe sbrs r2, 7
87a: 81 91 ld r24, Z+
87c: 5f 01 movw r10, r30
87e: b7 01 movw r22, r14
880: 90 e0 ldi r25, 0x00 ; 0
882: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
886: 31 10 cpse r3, r1
888: 3a 94 dec r3
88a: f1 e0 ldi r31, 0x01 ; 1
88c: 4f 1a sub r4, r31
88e: 51 08 sbc r5, r1
890: 41 14 cp r4, r1
892: 51 04 cpc r5, r1
894: 71 f7 brne .-36 ; 0x872 <vfprintf+0x1c4>
896: ed c0 rjmp .+474 ; 0xa72 <vfprintf+0x3c4>
898: 84 36 cpi r24, 0x64 ; 100
89a: 11 f0 breq .+4 ; 0x8a0 <vfprintf+0x1f2>
89c: 89 36 cpi r24, 0x69 ; 105
89e: 41 f5 brne .+80 ; 0x8f0 <vfprintf+0x242>
8a0: f8 01 movw r30, r16
8a2: 27 ff sbrs r18, 7
8a4: 07 c0 rjmp .+14 ; 0x8b4 <vfprintf+0x206>
8a6: 60 81 ld r22, Z
8a8: 71 81 ldd r23, Z+1 ; 0x01
8aa: 82 81 ldd r24, Z+2 ; 0x02
8ac: 93 81 ldd r25, Z+3 ; 0x03
8ae: 0c 5f subi r16, 0xFC ; 252
8b0: 1f 4f sbci r17, 0xFF ; 255
8b2: 08 c0 rjmp .+16 ; 0x8c4 <vfprintf+0x216>
8b4: 60 81 ld r22, Z
8b6: 71 81 ldd r23, Z+1 ; 0x01
8b8: 88 27 eor r24, r24
8ba: 77 fd sbrc r23, 7
8bc: 80 95 com r24
8be: 98 2f mov r25, r24
8c0: 0e 5f subi r16, 0xFE ; 254
8c2: 1f 4f sbci r17, 0xFF ; 255
8c4: 4f e6 ldi r20, 0x6F ; 111
8c6: b4 2e mov r11, r20
8c8: b2 22 and r11, r18
8ca: 97 ff sbrs r25, 7
8cc: 09 c0 rjmp .+18 ; 0x8e0 <vfprintf+0x232>
8ce: 90 95 com r25
8d0: 80 95 com r24
8d2: 70 95 com r23
8d4: 61 95 neg r22
8d6: 7f 4f sbci r23, 0xFF ; 255
8d8: 8f 4f sbci r24, 0xFF ; 255
8da: 9f 4f sbci r25, 0xFF ; 255
8dc: f0 e8 ldi r31, 0x80 ; 128
8de: bf 2a or r11, r31
8e0: 2a e0 ldi r18, 0x0A ; 10
8e2: 30 e0 ldi r19, 0x00 ; 0
8e4: a4 01 movw r20, r8
8e6: 0e 94 9e 05 call 0xb3c ; 0xb3c <__ultoa_invert>
8ea: a8 2e mov r10, r24
8ec: a8 18 sub r10, r8
8ee: 43 c0 rjmp .+134 ; 0x976 <vfprintf+0x2c8>
8f0: 85 37 cpi r24, 0x75 ; 117
8f2: 31 f4 brne .+12 ; 0x900 <vfprintf+0x252>
8f4: 3f ee ldi r19, 0xEF ; 239
8f6: b3 2e mov r11, r19
8f8: b2 22 and r11, r18
8fa: 2a e0 ldi r18, 0x0A ; 10
8fc: 30 e0 ldi r19, 0x00 ; 0
8fe: 24 c0 rjmp .+72 ; 0x948 <vfprintf+0x29a>
900: 99 ef ldi r25, 0xF9 ; 249
902: b9 2e mov r11, r25
904: b2 22 and r11, r18
906: 8f 36 cpi r24, 0x6F ; 111
908: b9 f0 breq .+46 ; 0x938 <vfprintf+0x28a>
90a: 20 f4 brcc .+8 ; 0x914 <vfprintf+0x266>
90c: 88 35 cpi r24, 0x58 ; 88
90e: 09 f0 breq .+2 ; 0x912 <vfprintf+0x264>
910: b3 c0 rjmp .+358 ; 0xa78 <vfprintf+0x3ca>
912: 0d c0 rjmp .+26 ; 0x92e <vfprintf+0x280>
914: 80 37 cpi r24, 0x70 ; 112
916: 21 f0 breq .+8 ; 0x920 <vfprintf+0x272>
918: 88 37 cpi r24, 0x78 ; 120
91a: 09 f0 breq .+2 ; 0x91e <vfprintf+0x270>
91c: ad c0 rjmp .+346 ; 0xa78 <vfprintf+0x3ca>
91e: 02 c0 rjmp .+4 ; 0x924 <vfprintf+0x276>
920: 20 e1 ldi r18, 0x10 ; 16
922: b2 2a or r11, r18
924: b4 fe sbrs r11, 4
926: 0b c0 rjmp .+22 ; 0x93e <vfprintf+0x290>
928: 84 e0 ldi r24, 0x04 ; 4
92a: b8 2a or r11, r24
92c: 08 c0 rjmp .+16 ; 0x93e <vfprintf+0x290>
92e: 24 ff sbrs r18, 4
930: 09 c0 rjmp .+18 ; 0x944 <vfprintf+0x296>
932: e6 e0 ldi r30, 0x06 ; 6
934: be 2a or r11, r30
936: 06 c0 rjmp .+12 ; 0x944 <vfprintf+0x296>
938: 28 e0 ldi r18, 0x08 ; 8
93a: 30 e0 ldi r19, 0x00 ; 0
93c: 05 c0 rjmp .+10 ; 0x948 <vfprintf+0x29a>
93e: 20 e1 ldi r18, 0x10 ; 16
940: 30 e0 ldi r19, 0x00 ; 0
942: 02 c0 rjmp .+4 ; 0x948 <vfprintf+0x29a>
944: 20 e1 ldi r18, 0x10 ; 16
946: 32 e0 ldi r19, 0x02 ; 2
948: f8 01 movw r30, r16
94a: b7 fe sbrs r11, 7
94c: 07 c0 rjmp .+14 ; 0x95c <vfprintf+0x2ae>
94e: 60 81 ld r22, Z
950: 71 81 ldd r23, Z+1 ; 0x01
952: 82 81 ldd r24, Z+2 ; 0x02
954: 93 81 ldd r25, Z+3 ; 0x03
956: 0c 5f subi r16, 0xFC ; 252
958: 1f 4f sbci r17, 0xFF ; 255
95a: 06 c0 rjmp .+12 ; 0x968 <vfprintf+0x2ba>
95c: 60 81 ld r22, Z
95e: 71 81 ldd r23, Z+1 ; 0x01
960: 80 e0 ldi r24, 0x00 ; 0
962: 90 e0 ldi r25, 0x00 ; 0
964: 0e 5f subi r16, 0xFE ; 254
966: 1f 4f sbci r17, 0xFF ; 255
968: a4 01 movw r20, r8
96a: 0e 94 9e 05 call 0xb3c ; 0xb3c <__ultoa_invert>
96e: a8 2e mov r10, r24
970: a8 18 sub r10, r8
972: ff e7 ldi r31, 0x7F ; 127
974: bf 22 and r11, r31
976: b6 fe sbrs r11, 6
978: 0b c0 rjmp .+22 ; 0x990 <vfprintf+0x2e2>
97a: 2b 2d mov r18, r11
97c: 2e 7f andi r18, 0xFE ; 254
97e: a5 14 cp r10, r5
980: 50 f4 brcc .+20 ; 0x996 <vfprintf+0x2e8>
982: b4 fe sbrs r11, 4
984: 0a c0 rjmp .+20 ; 0x99a <vfprintf+0x2ec>
986: b2 fc sbrc r11, 2
988: 08 c0 rjmp .+16 ; 0x99a <vfprintf+0x2ec>
98a: 2b 2d mov r18, r11
98c: 2e 7e andi r18, 0xEE ; 238
98e: 05 c0 rjmp .+10 ; 0x99a <vfprintf+0x2ec>
990: 7a 2c mov r7, r10
992: 2b 2d mov r18, r11
994: 03 c0 rjmp .+6 ; 0x99c <vfprintf+0x2ee>
996: 7a 2c mov r7, r10
998: 01 c0 rjmp .+2 ; 0x99c <vfprintf+0x2ee>
99a: 75 2c mov r7, r5
99c: 24 ff sbrs r18, 4
99e: 0d c0 rjmp .+26 ; 0x9ba <vfprintf+0x30c>
9a0: fe 01 movw r30, r28
9a2: ea 0d add r30, r10
9a4: f1 1d adc r31, r1
9a6: 80 81 ld r24, Z
9a8: 80 33 cpi r24, 0x30 ; 48
9aa: 11 f4 brne .+4 ; 0x9b0 <vfprintf+0x302>
9ac: 29 7e andi r18, 0xE9 ; 233
9ae: 09 c0 rjmp .+18 ; 0x9c2 <vfprintf+0x314>
9b0: 22 ff sbrs r18, 2
9b2: 06 c0 rjmp .+12 ; 0x9c0 <vfprintf+0x312>
9b4: 73 94 inc r7
9b6: 73 94 inc r7
9b8: 04 c0 rjmp .+8 ; 0x9c2 <vfprintf+0x314>
9ba: 82 2f mov r24, r18
9bc: 86 78 andi r24, 0x86 ; 134
9be: 09 f0 breq .+2 ; 0x9c2 <vfprintf+0x314>
9c0: 73 94 inc r7
9c2: 23 fd sbrc r18, 3
9c4: 14 c0 rjmp .+40 ; 0x9ee <vfprintf+0x340>
9c6: 20 ff sbrs r18, 0
9c8: 0f c0 rjmp .+30 ; 0x9e8 <vfprintf+0x33a>
9ca: 5a 2c mov r5, r10
9cc: 73 14 cp r7, r3
9ce: 60 f4 brcc .+24 ; 0x9e8 <vfprintf+0x33a>
9d0: 53 0c add r5, r3
9d2: 57 18 sub r5, r7
9d4: 73 2c mov r7, r3
9d6: 08 c0 rjmp .+16 ; 0x9e8 <vfprintf+0x33a>
9d8: b7 01 movw r22, r14
9da: 80 e2 ldi r24, 0x20 ; 32
9dc: 90 e0 ldi r25, 0x00 ; 0
9de: 2c 87 std Y+12, r18 ; 0x0c
9e0: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
9e4: 73 94 inc r7
9e6: 2c 85 ldd r18, Y+12 ; 0x0c
9e8: 73 14 cp r7, r3
9ea: b0 f3 brcs .-20 ; 0x9d8 <vfprintf+0x32a>
9ec: 04 c0 rjmp .+8 ; 0x9f6 <vfprintf+0x348>
9ee: 73 14 cp r7, r3
9f0: 10 f4 brcc .+4 ; 0x9f6 <vfprintf+0x348>
9f2: 37 18 sub r3, r7
9f4: 01 c0 rjmp .+2 ; 0x9f8 <vfprintf+0x34a>
9f6: 31 2c mov r3, r1
9f8: 24 ff sbrs r18, 4
9fa: 12 c0 rjmp .+36 ; 0xa20 <vfprintf+0x372>
9fc: b7 01 movw r22, r14
9fe: 80 e3 ldi r24, 0x30 ; 48
a00: 90 e0 ldi r25, 0x00 ; 0
a02: 2c 87 std Y+12, r18 ; 0x0c
a04: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
a08: 2c 85 ldd r18, Y+12 ; 0x0c
a0a: 22 ff sbrs r18, 2
a0c: 1e c0 rjmp .+60 ; 0xa4a <vfprintf+0x39c>
a0e: 21 ff sbrs r18, 1
a10: 03 c0 rjmp .+6 ; 0xa18 <vfprintf+0x36a>
a12: 88 e5 ldi r24, 0x58 ; 88
a14: 90 e0 ldi r25, 0x00 ; 0
a16: 02 c0 rjmp .+4 ; 0xa1c <vfprintf+0x36e>
a18: 88 e7 ldi r24, 0x78 ; 120
a1a: 90 e0 ldi r25, 0x00 ; 0
a1c: b7 01 movw r22, r14
a1e: 0c c0 rjmp .+24 ; 0xa38 <vfprintf+0x38a>
a20: 82 2f mov r24, r18
a22: 86 78 andi r24, 0x86 ; 134
a24: 91 f0 breq .+36 ; 0xa4a <vfprintf+0x39c>
a26: 21 fd sbrc r18, 1
a28: 02 c0 rjmp .+4 ; 0xa2e <vfprintf+0x380>
a2a: 80 e2 ldi r24, 0x20 ; 32
a2c: 01 c0 rjmp .+2 ; 0xa30 <vfprintf+0x382>
a2e: 8b e2 ldi r24, 0x2B ; 43
a30: 27 fd sbrc r18, 7
a32: 8d e2 ldi r24, 0x2D ; 45
a34: b7 01 movw r22, r14
a36: 90 e0 ldi r25, 0x00 ; 0
a38: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
a3c: 06 c0 rjmp .+12 ; 0xa4a <vfprintf+0x39c>
a3e: b7 01 movw r22, r14
a40: 80 e3 ldi r24, 0x30 ; 48
a42: 90 e0 ldi r25, 0x00 ; 0
a44: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
a48: 5a 94 dec r5
a4a: a5 14 cp r10, r5
a4c: c0 f3 brcs .-16 ; 0xa3e <vfprintf+0x390>
a4e: aa 94 dec r10
a50: f4 01 movw r30, r8
a52: ea 0d add r30, r10
a54: f1 1d adc r31, r1
a56: b7 01 movw r22, r14
a58: 80 81 ld r24, Z
a5a: 90 e0 ldi r25, 0x00 ; 0
a5c: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
a60: a1 10 cpse r10, r1
a62: f5 cf rjmp .-22 ; 0xa4e <vfprintf+0x3a0>
a64: 06 c0 rjmp .+12 ; 0xa72 <vfprintf+0x3c4>
a66: b7 01 movw r22, r14
a68: 80 e2 ldi r24, 0x20 ; 32
a6a: 90 e0 ldi r25, 0x00 ; 0
a6c: 0e 94 72 05 call 0xae4 ; 0xae4 <fputc>
a70: 3a 94 dec r3
a72: 31 10 cpse r3, r1
a74: f8 cf rjmp .-16 ; 0xa66 <vfprintf+0x3b8>
a76: 43 ce rjmp .-890 ; 0x6fe <vfprintf+0x50>
a78: f7 01 movw r30, r14
a7a: 26 81 ldd r18, Z+6 ; 0x06
a7c: 37 81 ldd r19, Z+7 ; 0x07
a7e: 02 c0 rjmp .+4 ; 0xa84 <vfprintf+0x3d6>
a80: 2f ef ldi r18, 0xFF ; 255
a82: 3f ef ldi r19, 0xFF ; 255
a84: c9 01 movw r24, r18
a86: 2c 96 adiw r28, 0x0c ; 12
a88: 0f b6 in r0, 0x3f ; 63
a8a: f8 94 cli
a8c: de bf out 0x3e, r29 ; 62
a8e: 0f be out 0x3f, r0 ; 63
a90: cd bf out 0x3d, r28 ; 61
a92: df 91 pop r29
a94: cf 91 pop r28
a96: 1f 91 pop r17
a98: 0f 91 pop r16
a9a: ff 90 pop r15
a9c: ef 90 pop r14
a9e: df 90 pop r13
aa0: cf 90 pop r12
aa2: bf 90 pop r11
aa4: af 90 pop r10
aa6: 9f 90 pop r9
aa8: 8f 90 pop r8
aaa: 7f 90 pop r7
aac: 6f 90 pop r6
aae: 5f 90 pop r5
ab0: 4f 90 pop r4
ab2: 3f 90 pop r3
ab4: 2f 90 pop r2
ab6: 08 95 ret
00000ab8 <strnlen_P>:
ab8: fc 01 movw r30, r24
aba: 05 90 lpm r0, Z+
abc: 61 50 subi r22, 0x01 ; 1
abe: 70 40 sbci r23, 0x00 ; 0
ac0: 01 10 cpse r0, r1
ac2: d8 f7 brcc .-10 ; 0xaba <strnlen_P+0x2>
ac4: 80 95 com r24
ac6: 90 95 com r25
ac8: 8e 0f add r24, r30
aca: 9f 1f adc r25, r31
acc: 08 95 ret
00000ace <strnlen>:
ace: fc 01 movw r30, r24
ad0: 61 50 subi r22, 0x01 ; 1
ad2: 70 40 sbci r23, 0x00 ; 0
ad4: 01 90 ld r0, Z+
ad6: 01 10 cpse r0, r1
ad8: d8 f7 brcc .-10 ; 0xad0 <strnlen+0x2>
ada: 80 95 com r24
adc: 90 95 com r25
ade: 8e 0f add r24, r30
ae0: 9f 1f adc r25, r31
ae2: 08 95 ret
00000ae4 <fputc>:
ae4: 0f 93 push r16
ae6: 1f 93 push r17
ae8: cf 93 push r28
aea: df 93 push r29
aec: 8c 01 movw r16, r24
aee: eb 01 movw r28, r22
af0: 8b 81 ldd r24, Y+3 ; 0x03
af2: 81 fd sbrc r24, 1
af4: 03 c0 rjmp .+6 ; 0xafc <fputc+0x18>
af6: 0f ef ldi r16, 0xFF ; 255
af8: 1f ef ldi r17, 0xFF ; 255
afa: 1a c0 rjmp .+52 ; 0xb30 <fputc+0x4c>
afc: 82 ff sbrs r24, 2
afe: 0d c0 rjmp .+26 ; 0xb1a <fputc+0x36>
b00: 2e 81 ldd r18, Y+6 ; 0x06
b02: 3f 81 ldd r19, Y+7 ; 0x07
b04: 8c 81 ldd r24, Y+4 ; 0x04
b06: 9d 81 ldd r25, Y+5 ; 0x05
b08: 28 17 cp r18, r24
b0a: 39 07 cpc r19, r25
b0c: 64 f4 brge .+24 ; 0xb26 <fputc+0x42>
b0e: e8 81 ld r30, Y
b10: f9 81 ldd r31, Y+1 ; 0x01
b12: 01 93 st Z+, r16
b14: f9 83 std Y+1, r31 ; 0x01
b16: e8 83 st Y, r30
b18: 06 c0 rjmp .+12 ; 0xb26 <fputc+0x42>
b1a: e8 85 ldd r30, Y+8 ; 0x08
b1c: f9 85 ldd r31, Y+9 ; 0x09
b1e: 80 2f mov r24, r16
b20: 19 95 eicall
b22: 89 2b or r24, r25
b24: 41 f7 brne .-48 ; 0xaf6 <fputc+0x12>
b26: 8e 81 ldd r24, Y+6 ; 0x06
b28: 9f 81 ldd r25, Y+7 ; 0x07
b2a: 01 96 adiw r24, 0x01 ; 1
b2c: 9f 83 std Y+7, r25 ; 0x07
b2e: 8e 83 std Y+6, r24 ; 0x06
b30: c8 01 movw r24, r16
b32: df 91 pop r29
b34: cf 91 pop r28
b36: 1f 91 pop r17
b38: 0f 91 pop r16
b3a: 08 95 ret
00000b3c <__ultoa_invert>:
b3c: fa 01 movw r30, r20
b3e: aa 27 eor r26, r26
b40: 28 30 cpi r18, 0x08 ; 8
b42: 51 f1 breq .+84 ; 0xb98 <__ultoa_invert+0x5c>
b44: 20 31 cpi r18, 0x10 ; 16
b46: 81 f1 breq .+96 ; 0xba8 <__ultoa_invert+0x6c>
b48: e8 94 clt
b4a: 6f 93 push r22
b4c: 6e 7f andi r22, 0xFE ; 254
b4e: 6e 5f subi r22, 0xFE ; 254
b50: 7f 4f sbci r23, 0xFF ; 255
b52: 8f 4f sbci r24, 0xFF ; 255
b54: 9f 4f sbci r25, 0xFF ; 255
b56: af 4f sbci r26, 0xFF ; 255
b58: b1 e0 ldi r27, 0x01 ; 1
b5a: 3e d0 rcall .+124 ; 0xbd8 <__ultoa_invert+0x9c>
b5c: b4 e0 ldi r27, 0x04 ; 4
b5e: 3c d0 rcall .+120 ; 0xbd8 <__ultoa_invert+0x9c>
b60: 67 0f add r22, r23
b62: 78 1f adc r23, r24
b64: 89 1f adc r24, r25
b66: 9a 1f adc r25, r26
b68: a1 1d adc r26, r1
b6a: 68 0f add r22, r24
b6c: 79 1f adc r23, r25
b6e: 8a 1f adc r24, r26
b70: 91 1d adc r25, r1
b72: a1 1d adc r26, r1
b74: 6a 0f add r22, r26
b76: 71 1d adc r23, r1
b78: 81 1d adc r24, r1
b7a: 91 1d adc r25, r1
b7c: a1 1d adc r26, r1
b7e: 20 d0 rcall .+64 ; 0xbc0 <__ultoa_invert+0x84>
b80: 09 f4 brne .+2 ; 0xb84 <__ultoa_invert+0x48>
b82: 68 94 set
b84: 3f 91 pop r19
b86: 2a e0 ldi r18, 0x0A ; 10
b88: 26 9f mul r18, r22
b8a: 11 24 eor r1, r1
b8c: 30 19 sub r19, r0
b8e: 30 5d subi r19, 0xD0 ; 208
b90: 31 93 st Z+, r19
b92: de f6 brtc .-74 ; 0xb4a <__ultoa_invert+0xe>
b94: cf 01 movw r24, r30
b96: 08 95 ret
b98: 46 2f mov r20, r22
b9a: 47 70 andi r20, 0x07 ; 7
b9c: 40 5d subi r20, 0xD0 ; 208
b9e: 41 93 st Z+, r20
ba0: b3 e0 ldi r27, 0x03 ; 3
ba2: 0f d0 rcall .+30 ; 0xbc2 <__ultoa_invert+0x86>
ba4: c9 f7 brne .-14 ; 0xb98 <__ultoa_invert+0x5c>
ba6: f6 cf rjmp .-20 ; 0xb94 <__ultoa_invert+0x58>
ba8: 46 2f mov r20, r22
baa: 4f 70 andi r20, 0x0F ; 15
bac: 40 5d subi r20, 0xD0 ; 208
bae: 4a 33 cpi r20, 0x3A ; 58
bb0: 18 f0 brcs .+6 ; 0xbb8 <__ultoa_invert+0x7c>
bb2: 49 5d subi r20, 0xD9 ; 217
bb4: 31 fd sbrc r19, 1
bb6: 40 52 subi r20, 0x20 ; 32
bb8: 41 93 st Z+, r20
bba: 02 d0 rcall .+4 ; 0xbc0 <__ultoa_invert+0x84>
bbc: a9 f7 brne .-22 ; 0xba8 <__ultoa_invert+0x6c>
bbe: ea cf rjmp .-44 ; 0xb94 <__ultoa_invert+0x58>
bc0: b4 e0 ldi r27, 0x04 ; 4
bc2: a6 95 lsr r26
bc4: 97 95 ror r25
bc6: 87 95 ror r24
bc8: 77 95 ror r23
bca: 67 95 ror r22
bcc: ba 95 dec r27
bce: c9 f7 brne .-14 ; 0xbc2 <__ultoa_invert+0x86>
bd0: 00 97 sbiw r24, 0x00 ; 0
bd2: 61 05 cpc r22, r1
bd4: 71 05 cpc r23, r1
bd6: 08 95 ret
bd8: 9b 01 movw r18, r22
bda: ac 01 movw r20, r24
bdc: 0a 2e mov r0, r26
bde: 06 94 lsr r0
be0: 57 95 ror r21
be2: 47 95 ror r20
be4: 37 95 ror r19
be6: 27 95 ror r18
be8: ba 95 dec r27
bea: c9 f7 brne .-14 ; 0xbde <__ultoa_invert+0xa2>
bec: 62 0f add r22, r18
bee: 73 1f adc r23, r19
bf0: 84 1f adc r24, r20
bf2: 95 1f adc r25, r21
bf4: a0 1d adc r26, r0
bf6: 08 95 ret
00000bf8 <_exit>:
bf8: f8 94 cli
00000bfa <__stop_program>:
bfa: ff cf rjmp .-2 ; 0xbfa <__stop_program>