2308 lines
89 KiB
Plaintext
2308 lines
89 KiB
Plaintext
|
||
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>
|