Tuer-Schild/Door/Debug/Door.lss

3486 lines
138 KiB
Plaintext
Raw Normal View History

2014-09-05 01:39:40 +02:00
Door.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000084 00800100 000011a4 00001238 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, ALLOC, LOAD, DATA
1 .text 000011a4 00000000 00000000 00000094 2**1
2014-11-16 18:10:00 +01:00
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000032 00800184 00800184 000012bc 2**0
2014-11-19 23:57:35 +01:00
ALLOC
3 .stab 00001968 00000000 00000000 000012bc 2**2
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
4 .stabstr 000005b5 00000000 00000000 00002c24 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
5 .comment 0000002f 00000000 00000000 000031d9 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY
6 .debug_aranges 00000060 00000000 00000000 00003208 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
7 .debug_info 0000384a 00000000 00000000 00003268 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 000004fd 00000000 00000000 00006ab2 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
9 .debug_line 000005f9 00000000 00000000 00006faf 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 000001b8 00000000 00000000 000075a8 2**2
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
11 .debug_str 00001435 00000000 00000000 00007760 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 000017a5 00000000 00000000 00008b95 2**0
2014-11-19 23:57:35 +01:00
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000340 00000000 00000000 0000a33a 2**0
2014-09-05 01:39:40 +02:00
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end>
4: 0c 94 6d 06 jmp 0xcda ; 0xcda <__vector_1>
8: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
10: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
14: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
18: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
1c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
20: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
24: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
28: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
2c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
30: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
34: 0c 94 5f 00 jmp 0xbe ; 0xbe <__vector_13>
38: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
3c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
40: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
44: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
48: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
4c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
50: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
54: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
58: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
5c: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
60: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
64: 0c 94 5d 00 jmp 0xba ; 0xba <__bad_interrupt>
2014-11-19 23:57:35 +01:00
00000068 <__ctors_start>:
68: 25 07 cpc r18, r21
2014-11-19 23:57:35 +01:00
0000006a <__ctors_end>:
6a: 11 24 eor r1, r1
6c: 1f be out 0x3f, r1 ; 63
6e: cf ef ldi r28, 0xFF ; 255
70: d4 e0 ldi r29, 0x04 ; 4
72: de bf out 0x3e, r29 ; 62
74: cd bf out 0x3d, r28 ; 61
2014-11-19 23:57:35 +01:00
00000076 <__do_copy_data>:
76: 11 e0 ldi r17, 0x01 ; 1
78: a0 e0 ldi r26, 0x00 ; 0
7a: b1 e0 ldi r27, 0x01 ; 1
7c: e4 ea ldi r30, 0xA4 ; 164
7e: f1 e1 ldi r31, 0x11 ; 17
80: 02 c0 rjmp .+4 ; 0x86 <__do_copy_data+0x10>
82: 05 90 lpm r0, Z+
84: 0d 92 st X+, r0
86: a4 38 cpi r26, 0x84 ; 132
88: b1 07 cpc r27, r17
8a: d9 f7 brne .-10 ; 0x82 <__do_copy_data+0xc>
2014-11-19 23:57:35 +01:00
0000008c <__do_clear_bss>:
8c: 21 e0 ldi r18, 0x01 ; 1
8e: a4 e8 ldi r26, 0x84 ; 132
90: b1 e0 ldi r27, 0x01 ; 1
92: 01 c0 rjmp .+2 ; 0x96 <.do_clear_bss_start>
2014-11-19 23:57:35 +01:00
00000094 <.do_clear_bss_loop>:
94: 1d 92 st X+, r1
2014-11-19 23:57:35 +01:00
00000096 <.do_clear_bss_start>:
96: a6 3b cpi r26, 0xB6 ; 182
98: b2 07 cpc r27, r18
9a: e1 f7 brne .-8 ; 0x94 <.do_clear_bss_loop>
2014-11-19 23:57:35 +01:00
0000009c <__do_global_ctors>:
9c: 10 e0 ldi r17, 0x00 ; 0
9e: ca e6 ldi r28, 0x6A ; 106
a0: d0 e0 ldi r29, 0x00 ; 0
a2: 04 c0 rjmp .+8 ; 0xac <__do_global_ctors+0x10>
a4: 22 97 sbiw r28, 0x02 ; 2
a6: fe 01 movw r30, r28
a8: 0e 94 cc 08 call 0x1198 ; 0x1198 <__tablejump__>
ac: c8 36 cpi r28, 0x68 ; 104
ae: d1 07 cpc r29, r17
b0: c9 f7 brne .-14 ; 0xa4 <__do_global_ctors+0x8>
b2: 0e 94 0c 03 call 0x618 ; 0x618 <main>
b6: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <_exit>
2014-11-19 23:57:35 +01:00
000000ba <__bad_interrupt>:
ba: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
2014-11-19 23:57:35 +01:00
000000be <__vector_13>:
ISR(INT0_vect) {
ir.interrupt();
}
ISR(TIMER1_OVF_vect) {
be: 1f 92 push r1
c0: 0f 92 push r0
c2: 0f b6 in r0, 0x3f ; 63
c4: 0f 92 push r0
c6: 11 24 eor r1, r1
c8: 2f 92 push r2
ca: 3f 92 push r3
cc: 4f 92 push r4
ce: 5f 92 push r5
d0: 6f 92 push r6
d2: 7f 92 push r7
d4: 8f 92 push r8
d6: 9f 92 push r9
d8: af 92 push r10
da: bf 92 push r11
dc: cf 92 push r12
de: df 92 push r13
e0: ef 92 push r14
e2: ff 92 push r15
e4: 0f 93 push r16
e6: 1f 93 push r17
e8: 2f 93 push r18
ea: 3f 93 push r19
ec: 4f 93 push r20
ee: 5f 93 push r21
f0: 6f 93 push r22
f2: 7f 93 push r23
f4: 8f 93 push r24
f6: 9f 93 push r25
f8: af 93 push r26
fa: bf 93 push r27
fc: cf 93 push r28
fe: df 93 push r29
100: ef 93 push r30
102: ff 93 push r31
this->fademap[1][index] = green;
this->fademap[2][index] = blue;
this->fademap[3][index] = time;
}
void interrupt() {
if(this->fade_zylk > 0) {
104: c0 91 88 01 lds r28, 0x0188
108: cc 23 and r28, r28
10a: 09 f4 brne .+2 ; 0x10e <__vector_13+0x50>
10c: f6 c1 rjmp .+1004 ; 0x4fa <__vector_13+0x43c>
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
10e: 20 e0 ldi r18, 0x00 ; 0
110: 30 e0 ldi r19, 0x00 ; 0
112: a9 01 movw r20, r18
114: 60 91 9d 01 lds r22, 0x019D
118: 70 91 9e 01 lds r23, 0x019E
11c: 80 91 9f 01 lds r24, 0x019F
120: 90 91 a0 01 lds r25, 0x01A0
124: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2>
128: 81 11 cpse r24, r1
12a: f0 c0 rjmp .+480 ; 0x30c <__vector_13+0x24e>
12c: 20 e0 ldi r18, 0x00 ; 0
12e: 30 e0 ldi r19, 0x00 ; 0
130: a9 01 movw r20, r18
132: 60 91 a1 01 lds r22, 0x01A1
136: 70 91 a2 01 lds r23, 0x01A2
13a: 80 91 a3 01 lds r24, 0x01A3
13e: 90 91 a4 01 lds r25, 0x01A4
142: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2>
146: 81 11 cpse r24, r1
148: e4 c0 rjmp .+456 ; 0x312 <__vector_13+0x254>
14a: 20 e0 ldi r18, 0x00 ; 0
14c: 30 e0 ldi r19, 0x00 ; 0
14e: a9 01 movw r20, r18
150: 60 91 a5 01 lds r22, 0x01A5
154: 70 91 a6 01 lds r23, 0x01A6
158: 80 91 a7 01 lds r24, 0x01A7
15c: 90 91 a8 01 lds r25, 0x01A8
160: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2>
164: 88 23 and r24, r24
166: 29 f0 breq .+10 ; 0x172 <__vector_13+0xb4>
168: 88 24 eor r8, r8
16a: 83 94 inc r8
16c: d4 c0 rjmp .+424 ; 0x316 <__vector_13+0x258>
16e: b3 94 inc r11
170: 11 c0 rjmp .+34 ; 0x194 <__vector_13+0xd6>
172: bb 24 eor r11, r11
174: b3 94 inc r11
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
176: d0 e0 ldi r29, 0x00 ; 0
178: 21 97 sbiw r28, 0x01 ; 1
}
}
uint8_t gp(uint8_t i) {
switch(i) {
case 0: return OCR0B; //ROT
case 1: return OCR2B; //GR<47>N
17a: 0f 2e mov r0, r31
17c: f4 eb ldi r31, 0xB4 ; 180
17e: cf 2e mov r12, r31
180: d1 2c mov r13, r1
182: f0 2d mov r31, r0
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
184: 0f 2e mov r0, r31
186: f8 e9 ldi r31, 0x98 ; 152
188: 6f 2e mov r6, r31
18a: f1 e0 ldi r31, 0x01 ; 1
18c: 7f 2e mov r7, r31
18e: f0 2d mov r31, r0
190: 6c 0e add r6, r28
192: 7d 1e adc r7, r29
194: 1b 2d mov r17, r11
196: 11 50 subi r17, 0x01 ; 1
198: e1 2e mov r14, r17
19a: f1 2c mov r15, r1
19c: 9e 01 movw r18, r28
19e: f7 01 movw r30, r14
1a0: ee 0f add r30, r30
1a2: ff 1f adc r31, r31
1a4: ee 0f add r30, r30
1a6: ff 1f adc r31, r31
1a8: ee 0d add r30, r14
1aa: ff 1d adc r31, r15
1ac: e8 57 subi r30, 0x78 ; 120
1ae: fe 4f sbci r31, 0xFE ; 254
1b0: ec 0f add r30, r28
1b2: fd 1f adc r31, r29
1b4: 81 81 ldd r24, Z+1 ; 0x01
1b6: 90 e0 ldi r25, 0x00 ; 0
case 1: OCR2B = c; break; //GR<47>N
case 2: OCR2A = c; break; //BLAU
}
}
uint8_t gp(uint8_t i) {
switch(i) {
1b8: 11 30 cpi r17, 0x01 ; 1
1ba: 09 f1 breq .+66 ; 0x1fe <__vector_13+0x140>
1bc: 20 f0 brcs .+8 ; 0x1c6 <__vector_13+0x108>
1be: 12 30 cpi r17, 0x02 ; 2
1c0: 09 f0 breq .+2 ; 0x1c4 <__vector_13+0x106>
1c2: 57 c0 rjmp .+174 ; 0x272 <__vector_13+0x1b4>
1c4: 39 c0 rjmp .+114 ; 0x238 <__vector_13+0x17a>
case 0: return OCR0B; //ROT
1c6: 48 b5 in r20, 0x28 ; 40
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
1c8: 97 01 movw r18, r14
1ca: 22 0f add r18, r18
1cc: 33 1f adc r19, r19
1ce: 22 0f add r18, r18
1d0: 33 1f adc r19, r19
1d2: 89 01 movw r16, r18
1d4: 08 57 subi r16, 0x78 ; 120
1d6: 1e 4f sbci r17, 0xFE ; 254
1d8: 84 1b sub r24, r20
1da: 91 09 sbc r25, r1
1dc: f3 01 movw r30, r6
1de: 60 81 ld r22, Z
1e0: 70 e0 ldi r23, 0x00 ; 0
1e2: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4>
1e6: 88 27 eor r24, r24
1e8: 77 fd sbrc r23, 7
1ea: 80 95 com r24
1ec: 98 2f mov r25, r24
1ee: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
1f2: f8 01 movw r30, r16
1f4: 65 8b std Z+21, r22 ; 0x15
1f6: 76 8b std Z+22, r23 ; 0x16
1f8: 87 8b std Z+23, r24 ; 0x17
1fa: 90 8f std Z+24, r25 ; 0x18
1fc: 5d c0 rjmp .+186 ; 0x2b8 <__vector_13+0x1fa>
}
}
uint8_t gp(uint8_t i) {
switch(i) {
case 0: return OCR0B; //ROT
case 1: return OCR2B; //GR<47>N
1fe: f6 01 movw r30, r12
200: 40 81 ld r20, Z
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
202: 97 01 movw r18, r14
204: 22 0f add r18, r18
206: 33 1f adc r19, r19
208: 22 0f add r18, r18
20a: 33 1f adc r19, r19
20c: 89 01 movw r16, r18
20e: 08 57 subi r16, 0x78 ; 120
210: 1e 4f sbci r17, 0xFE ; 254
212: 84 1b sub r24, r20
214: 91 09 sbc r25, r1
216: f3 01 movw r30, r6
218: 60 81 ld r22, Z
21a: 70 e0 ldi r23, 0x00 ; 0
21c: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4>
220: 88 27 eor r24, r24
222: 77 fd sbrc r23, 7
224: 80 95 com r24
226: 98 2f mov r25, r24
228: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
22c: f8 01 movw r30, r16
22e: 65 8b std Z+21, r22 ; 0x15
230: 76 8b std Z+22, r23 ; 0x16
232: 87 8b std Z+23, r24 ; 0x17
234: 90 8f std Z+24, r25 ; 0x18
236: 42 c0 rjmp .+132 ; 0x2bc <__vector_13+0x1fe>
}
uint8_t gp(uint8_t i) {
switch(i) {
case 0: return OCR0B; //ROT
case 1: return OCR2B; //GR<47>N
case 2: return OCR2A; //BLAU
238: 40 91 b3 00 lds r20, 0x00B3
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
23c: e7 01 movw r28, r14
23e: cc 0f add r28, r28
240: dd 1f adc r29, r29
242: cc 0f add r28, r28
244: dd 1f adc r29, r29
246: c8 57 subi r28, 0x78 ; 120
248: de 4f sbci r29, 0xFE ; 254
24a: 84 1b sub r24, r20
24c: 91 09 sbc r25, r1
24e: f9 01 movw r30, r18
250: e8 57 subi r30, 0x78 ; 120
252: fe 4f sbci r31, 0xFE ; 254
254: 60 89 ldd r22, Z+16 ; 0x10
256: 70 e0 ldi r23, 0x00 ; 0
258: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4>
25c: 88 27 eor r24, r24
25e: 77 fd sbrc r23, 7
260: 80 95 com r24
262: 98 2f mov r25, r24
264: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
268: 6d 8b std Y+21, r22 ; 0x15
26a: 7e 8b std Y+22, r23 ; 0x16
26c: 8f 8b std Y+23, r24 ; 0x17
26e: 98 8f std Y+24, r25 ; 0x18
270: 28 c0 rjmp .+80 ; 0x2c2 <__vector_13+0x204>
272: 97 01 movw r18, r14
274: 22 0f add r18, r18
276: 33 1f adc r19, r19
278: 22 0f add r18, r18
27a: 33 1f adc r19, r19
27c: 0f 2e mov r0, r31
27e: f8 e8 ldi r31, 0x88 ; 136
280: 8f 2e mov r8, r31
282: f1 e0 ldi r31, 0x01 ; 1
284: 9f 2e mov r9, r31
286: f0 2d mov r31, r0
288: 82 0e add r8, r18
28a: 93 1e adc r9, r19
28c: f3 01 movw r30, r6
28e: 60 81 ld r22, Z
290: 70 e0 ldi r23, 0x00 ; 0
292: 0e 94 96 08 call 0x112c ; 0x112c <__divmodhi4>
296: 88 27 eor r24, r24
298: 77 fd sbrc r23, 7
29a: 80 95 com r24
29c: 98 2f mov r25, r24
29e: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
2a2: f4 01 movw r30, r8
2a4: 65 8b std Z+21, r22 ; 0x15
2a6: 76 8b std Z+22, r23 ; 0x16
2a8: 87 8b std Z+23, r24 ; 0x17
2aa: 90 8f std Z+24, r25 ; 0x18
case 1: OCR2B = c; break; //GR<47>N
case 2: OCR2A = c; break; //BLAU
}
}
uint8_t gp(uint8_t i) {
switch(i) {
2ac: 11 30 cpi r17, 0x01 ; 1
2ae: 31 f0 breq .+12 ; 0x2bc <__vector_13+0x1fe>
2b0: 18 f0 brcs .+6 ; 0x2b8 <__vector_13+0x1fa>
2b2: 12 30 cpi r17, 0x02 ; 2
2b4: c9 f4 brne .+50 ; 0x2e8 <__vector_13+0x22a>
2b6: 05 c0 rjmp .+10 ; 0x2c2 <__vector_13+0x204>
case 0: return OCR0B; //ROT
2b8: 68 b5 in r22, 0x28 ; 40
2ba: 07 c1 rjmp .+526 ; 0x4ca <__vector_13+0x40c>
case 1: return OCR2B; //GR<47>N
2bc: f6 01 movw r30, r12
2be: 60 81 ld r22, Z
2c0: 04 c1 rjmp .+520 ; 0x4ca <__vector_13+0x40c>
case 2: return OCR2A; //BLAU
2c2: 60 91 b3 00 lds r22, 0x00B3
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
this->virtualcolor[i] = this->gp(i);
2c6: e7 01 movw r28, r14
2c8: cc 0f add r28, r28
2ca: dd 1f adc r29, r29
2cc: cc 0f add r28, r28
2ce: dd 1f adc r29, r29
2d0: c8 57 subi r28, 0x78 ; 120
2d2: de 4f sbci r29, 0xFE ; 254
2d4: 70 e0 ldi r23, 0x00 ; 0
2d6: 80 e0 ldi r24, 0x00 ; 0
2d8: 90 e0 ldi r25, 0x00 ; 0
2da: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf>
2de: 69 a3 std Y+33, r22 ; 0x21
2e0: 7a a3 std Y+34, r23 ; 0x22
2e2: 8b a3 std Y+35, r24 ; 0x23
2e4: 9c a3 std Y+36, r25 ; 0x24
2e6: 09 c1 rjmp .+530 ; 0x4fa <__vector_13+0x43c>
2e8: f7 01 movw r30, r14
2ea: ee 0f add r30, r30
2ec: ff 1f adc r31, r31
2ee: ee 0f add r30, r30
2f0: ff 1f adc r31, r31
2f2: e8 57 subi r30, 0x78 ; 120
2f4: fe 4f sbci r31, 0xFE ; 254
2f6: 11 a2 std Z+33, r1 ; 0x21
2f8: 12 a2 std Z+34, r1 ; 0x22
2fa: 13 a2 std Z+35, r1 ; 0x23
2fc: 14 a2 std Z+36, r1 ; 0x24
this->fademap[3][index] = time;
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
2fe: f2 e0 ldi r31, 0x02 ; 2
300: fb 15 cp r31, r11
302: 08 f0 brcs .+2 ; 0x306 <__vector_13+0x248>
304: 34 cf rjmp .-408 ; 0x16e <__vector_13+0xb0>
306: f9 c0 rjmp .+498 ; 0x4fa <__vector_13+0x43c>
308: 83 94 inc r8
30a: 10 c0 rjmp .+32 ; 0x32c <__vector_13+0x26e>
this->fademap[2][index] = blue;
this->fademap[3][index] = time;
}
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
30c: 88 24 eor r8, r8
30e: 83 94 inc r8
310: 02 c0 rjmp .+4 ; 0x316 <__vector_13+0x258>
312: 88 24 eor r8, r8
314: 83 94 inc r8
/*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red;
this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green;
this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/
} else {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) {
316: 0f 2e mov r0, r31
318: f8 e8 ldi r31, 0x88 ; 136
31a: af 2e mov r10, r31
31c: f1 e0 ldi r31, 0x01 ; 1
31e: bf 2e mov r11, r31
320: f0 2d mov r31, r0
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
case 0: OCR0B = c; break; //ROT
case 1: OCR2B = c; break; //GR<47>N
322: 0f 2e mov r0, r31
324: f4 eb ldi r31, 0xB4 ; 180
326: 2f 2e mov r2, r31
328: 31 2c mov r3, r1
32a: f0 2d mov r31, r0
32c: 98 2c mov r9, r8
32e: 9a 94 dec r9
/*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red;
this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green;
this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/
} else {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) {
330: c9 2d mov r28, r9
332: d0 e0 ldi r29, 0x00 ; 0
334: fe 01 movw r30, r28
336: ee 0f add r30, r30
338: ff 1f adc r31, r31
33a: ee 0f add r30, r30
33c: ff 1f adc r31, r31
33e: e8 57 subi r30, 0x78 ; 120
340: fe 4f sbci r31, 0xFE ; 254
342: c5 88 ldd r12, Z+21 ; 0x15
344: d6 88 ldd r13, Z+22 ; 0x16
346: e7 88 ldd r14, Z+23 ; 0x17
348: f0 8c ldd r15, Z+24 ; 0x18
34a: 20 e0 ldi r18, 0x00 ; 0
34c: 30 e0 ldi r19, 0x00 ; 0
34e: a9 01 movw r20, r18
350: c7 01 movw r24, r14
352: b6 01 movw r22, r12
354: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2>
358: 18 16 cp r1, r24
35a: 4c f5 brge .+82 ; 0x3ae <__vector_13+0x2f0>
35c: 8e 01 movw r16, r28
35e: 00 0f add r16, r16
360: 11 1f adc r17, r17
362: 00 0f add r16, r16
364: 11 1f adc r17, r17
366: f8 01 movw r30, r16
368: e8 57 subi r30, 0x78 ; 120
36a: fe 4f sbci r31, 0xFE ; 254
36c: 21 a1 ldd r18, Z+33 ; 0x21
36e: 32 a1 ldd r19, Z+34 ; 0x22
370: 43 a1 ldd r20, Z+35 ; 0x23
372: 54 a1 ldd r21, Z+36 ; 0x24
374: c7 01 movw r24, r14
376: b6 01 movw r22, r12
378: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3>
37c: 2b 01 movw r4, r22
37e: 3c 01 movw r6, r24
380: f5 01 movw r30, r10
382: 80 81 ld r24, Z
384: f8 01 movw r30, r16
386: ec 0f add r30, r28
388: fd 1f adc r31, r29
38a: e8 0f add r30, r24
38c: f1 1d adc r31, r1
38e: e8 57 subi r30, 0x78 ; 120
390: fe 4f sbci r31, 0xFE ; 254
392: 60 81 ld r22, Z
394: 70 e0 ldi r23, 0x00 ; 0
396: 80 e0 ldi r24, 0x00 ; 0
398: 90 e0 ldi r25, 0x00 ; 0
39a: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
39e: 9b 01 movw r18, r22
3a0: ac 01 movw r20, r24
3a2: c3 01 movw r24, r6
3a4: b2 01 movw r22, r4
3a6: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2>
3aa: 18 16 cp r1, r24
3ac: 9c f5 brge .+102 ; 0x414 <__vector_13+0x356>
3ae: 20 e0 ldi r18, 0x00 ; 0
3b0: 30 e0 ldi r19, 0x00 ; 0
3b2: a9 01 movw r20, r18
3b4: c7 01 movw r24, r14
3b6: b6 01 movw r22, r12
3b8: 0e 94 b0 07 call 0xf60 ; 0xf60 <__cmpsf2>
3bc: 88 23 and r24, r24
3be: 0c f0 brlt .+2 ; 0x3c2 <__vector_13+0x304>
3c0: 56 c0 rjmp .+172 ; 0x46e <__vector_13+0x3b0>
3c2: 8e 01 movw r16, r28
3c4: 00 0f add r16, r16
3c6: 11 1f adc r17, r17
3c8: 00 0f add r16, r16
3ca: 11 1f adc r17, r17
3cc: f8 01 movw r30, r16
3ce: e8 57 subi r30, 0x78 ; 120
3d0: fe 4f sbci r31, 0xFE ; 254
3d2: 21 a1 ldd r18, Z+33 ; 0x21
3d4: 32 a1 ldd r19, Z+34 ; 0x22
3d6: 43 a1 ldd r20, Z+35 ; 0x23
3d8: 54 a1 ldd r21, Z+36 ; 0x24
3da: c7 01 movw r24, r14
3dc: b6 01 movw r22, r12
3de: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3>
3e2: 2b 01 movw r4, r22
3e4: 3c 01 movw r6, r24
3e6: f5 01 movw r30, r10
3e8: 80 81 ld r24, Z
3ea: f8 01 movw r30, r16
3ec: ec 0f add r30, r28
3ee: fd 1f adc r31, r29
3f0: e8 0f add r30, r24
3f2: f1 1d adc r31, r1
3f4: e8 57 subi r30, 0x78 ; 120
3f6: fe 4f sbci r31, 0xFE ; 254
3f8: 60 81 ld r22, Z
3fa: 70 e0 ldi r23, 0x00 ; 0
3fc: 80 e0 ldi r24, 0x00 ; 0
3fe: 90 e0 ldi r25, 0x00 ; 0
400: 0e 94 e2 07 call 0xfc4 ; 0xfc4 <__floatsisf>
404: 9b 01 movw r18, r22
406: ac 01 movw r20, r24
408: c3 01 movw r24, r6
40a: b2 01 movw r22, r4
40c: 0e 94 92 08 call 0x1124 ; 0x1124 <__gesf2>
410: 88 23 and r24, r24
412: 6c f1 brlt .+90 ; 0x46e <__vector_13+0x3b0>
this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i];
414: cc 0f add r28, r28
416: dd 1f adc r29, r29
418: cc 0f add r28, r28
41a: dd 1f adc r29, r29
41c: c8 57 subi r28, 0x78 ; 120
41e: de 4f sbci r29, 0xFE ; 254
420: 29 a1 ldd r18, Y+33 ; 0x21
422: 3a a1 ldd r19, Y+34 ; 0x22
424: 4b a1 ldd r20, Y+35 ; 0x23
426: 5c a1 ldd r21, Y+36 ; 0x24
428: c7 01 movw r24, r14
42a: b6 01 movw r22, r12
42c: 0e 94 4c 07 call 0xe98 ; 0xe98 <__addsf3>
430: 26 2f mov r18, r22
432: 37 2f mov r19, r23
434: 46 2f mov r20, r22
436: 57 2f mov r21, r23
438: 68 2f mov r22, r24
43a: 79 2f mov r23, r25
43c: 49 a3 std Y+33, r20 ; 0x21
43e: 5a a3 std Y+34, r21 ; 0x22
440: 6b a3 std Y+35, r22 ; 0x23
442: 7c a3 std Y+36, r23 ; 0x24
this->sp(i, this->virtualcolor[i]);
444: 62 2f mov r22, r18
446: 73 2f mov r23, r19
448: 0e 94 b4 07 call 0xf68 ; 0xf68 <__fixunssfsi>
this->fade_zylk = 0;
this->initTimer();
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
44c: f1 e0 ldi r31, 0x01 ; 1
44e: 9f 16 cp r9, r31
450: 41 f0 breq .+16 ; 0x462 <__vector_13+0x3a4>
452: 9f 16 cp r9, r31
454: 20 f0 brcs .+8 ; 0x45e <__vector_13+0x3a0>
456: 82 e0 ldi r24, 0x02 ; 2
458: 98 12 cpse r9, r24
45a: 32 c0 rjmp .+100 ; 0x4c0 <__vector_13+0x402>
45c: 05 c0 rjmp .+10 ; 0x468 <__vector_13+0x3aa>
case 0: OCR0B = c; break; //ROT
45e: 68 bd out 0x28, r22 ; 40
460: 53 cf rjmp .-346 ; 0x308 <__vector_13+0x24a>
case 1: OCR2B = c; break; //GR<47>N
462: f1 01 movw r30, r2
464: 60 83 st Z, r22
466: 50 cf rjmp .-352 ; 0x308 <__vector_13+0x24a>
case 2: OCR2A = c; break; //BLAU
468: 60 93 b3 00 sts 0x00B3, r22
46c: 46 c0 rjmp .+140 ; 0x4fa <__vector_13+0x43c>
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) {
this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i];
this->sp(i, this->virtualcolor[i]);
} else {
this->sp(i, this->fademap[i][this->fade_zylk-1]);
46e: f5 01 movw r30, r10
470: 80 81 ld r24, Z
472: fe 01 movw r30, r28
474: ee 0f add r30, r30
476: ff 1f adc r31, r31
478: ee 0f add r30, r30
47a: ff 1f adc r31, r31
47c: ec 0f add r30, r28
47e: fd 1f adc r31, r29
480: e8 0f add r30, r24
482: f1 1d adc r31, r1
484: e8 57 subi r30, 0x78 ; 120
486: fe 4f sbci r31, 0xFE ; 254
488: 80 81 ld r24, Z
this->fade_zylk = 0;
this->initTimer();
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
48a: f1 e0 ldi r31, 0x01 ; 1
48c: 9f 16 cp r9, r31
48e: 41 f0 breq .+16 ; 0x4a0 <__vector_13+0x3e2>
490: 9f 16 cp r9, r31
492: 20 f0 brcs .+8 ; 0x49c <__vector_13+0x3de>
494: 92 e0 ldi r25, 0x02 ; 2
496: 99 12 cpse r9, r25
498: 09 c0 rjmp .+18 ; 0x4ac <__vector_13+0x3ee>
49a: 05 c0 rjmp .+10 ; 0x4a6 <__vector_13+0x3e8>
case 0: OCR0B = c; break; //ROT
49c: 88 bd out 0x28, r24 ; 40
49e: 06 c0 rjmp .+12 ; 0x4ac <__vector_13+0x3ee>
case 1: OCR2B = c; break; //GR<47>N
4a0: f1 01 movw r30, r2
4a2: 80 83 st Z, r24
4a4: 03 c0 rjmp .+6 ; 0x4ac <__vector_13+0x3ee>
case 2: OCR2A = c; break; //BLAU
4a6: e3 eb ldi r30, 0xB3 ; 179
4a8: f0 e0 ldi r31, 0x00 ; 0
4aa: 80 83 st Z, r24
if((this->fadesteps[i] > 0 && (this->virtualcolor[i] + this->fadesteps[i]) <= this->fademap[i][this->fade_zylk-1]) || (this->fadesteps[i] < 0 && (this->virtualcolor[i] + this->fadesteps[i]) >= this->fademap[i][this->fade_zylk-1])) {
this->virtualcolor[i] = this->virtualcolor[i] + this->fadesteps[i];
this->sp(i, this->virtualcolor[i]);
} else {
this->sp(i, this->fademap[i][this->fade_zylk-1]);
this->fadesteps[i] = 0;
4ac: cc 0f add r28, r28
4ae: dd 1f adc r29, r29
4b0: cc 0f add r28, r28
4b2: dd 1f adc r29, r29
4b4: c8 57 subi r28, 0x78 ; 120
4b6: de 4f sbci r29, 0xFE ; 254
4b8: 1d 8a std Y+21, r1 ; 0x15
4ba: 1e 8a std Y+22, r1 ; 0x16
4bc: 1f 8a std Y+23, r1 ; 0x17
4be: 18 8e std Y+24, r1 ; 0x18
}
/*this->fadesteps[0] = (this->fademap[0][this->fade_zylk-1]-this->gp(0))/this->fademap[3][this->fade_zylk-1]; //Calc Red;
this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green;
this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/
} else {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
4c0: f2 e0 ldi r31, 0x02 ; 2
4c2: f8 15 cp r31, r8
4c4: 08 f0 brcs .+2 ; 0x4c8 <__vector_13+0x40a>
4c6: 20 cf rjmp .-448 ; 0x308 <__vector_13+0x24a>
4c8: 18 c0 rjmp .+48 ; 0x4fa <__vector_13+0x43c>
void interrupt() {
if(this->fade_zylk > 0) {
if(this->fadesteps[0] == 0 && this->fadesteps[1] == 0 && this->fadesteps[2] == 0) {
for(uint8_t i = 0; i<3; i++) { //0=red,1=green,2=blue
this->fadesteps[i] = (this->fademap[i][this->fade_zylk-1]-this->gp(i))/this->fademap[3][this->fade_zylk-1];
this->virtualcolor[i] = this->gp(i);
4ca: c7 01 movw r24, r14
4cc: 88 0f add r24, r24
4ce: 99 1f adc r25, r25
4d0: 88 0f add r24, r24
4d2: 99 1f adc r25, r25
4d4: 0f 2e mov r0, r31
4d6: f8 e8 ldi r31, 0x88 ; 136
4d8: ef 2e mov r14, r31
4da: f1 e0 ldi r31, 0x01 ; 1
4dc: ff 2e mov r15, r31
4de: f0 2d mov r31, r0
4e0: e8 0e add r14, r24
4e2: f9 1e adc r15, r25
4e4: 70 e0 ldi r23, 0x00 ; 0
4e6: 80 e0 ldi r24, 0x00 ; 0
4e8: 90 e0 ldi r25, 0x00 ; 0
4ea: 0e 94 e0 07 call 0xfc0 ; 0xfc0 <__floatunsisf>
4ee: f7 01 movw r30, r14
4f0: 61 a3 std Z+33, r22 ; 0x21
4f2: 72 a3 std Z+34, r23 ; 0x22
4f4: 83 a3 std Z+35, r24 ; 0x23
4f6: 94 a3 std Z+36, r25 ; 0x24
4f8: 3a ce rjmp .-908 ; 0x16e <__vector_13+0xb0>
stripe.interrupt();
4fa: ff 91 pop r31
4fc: ef 91 pop r30
4fe: df 91 pop r29
500: cf 91 pop r28
502: bf 91 pop r27
504: af 91 pop r26
506: 9f 91 pop r25
508: 8f 91 pop r24
50a: 7f 91 pop r23
50c: 6f 91 pop r22
50e: 5f 91 pop r21
510: 4f 91 pop r20
512: 3f 91 pop r19
514: 2f 91 pop r18
516: 1f 91 pop r17
518: 0f 91 pop r16
51a: ff 90 pop r15
51c: ef 90 pop r14
51e: df 90 pop r13
520: cf 90 pop r12
522: bf 90 pop r11
524: af 90 pop r10
526: 9f 90 pop r9
528: 8f 90 pop r8
52a: 7f 90 pop r7
52c: 6f 90 pop r6
52e: 5f 90 pop r5
530: 4f 90 pop r4
532: 3f 90 pop r3
534: 2f 90 pop r2
536: 0f 90 pop r0
538: 0f be out 0x3f, r0 ; 63
53a: 0f 90 pop r0
53c: 1f 90 pop r1
53e: 18 95 reti
00000540 <_ZN4UartILm9600EEC1Ev>:
#include <avr/interrupt.h>
template <uint32_t baudrate>
class Uart {
public:
Uart() {
540: cf 93 push r28
542: df 93 push r29
sei();
544: 78 94 sei
void print(uint8_t wert) {
uart_putchar(wert);
2014-11-19 23:57:35 +01:00
}
private:
void init() {
UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt
546: 81 e8 ldi r24, 0x81 ; 129
548: 80 93 c4 00 sts 0x00C4, r24
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
54c: 10 92 c0 00 sts 0x00C0, r1
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
550: 88 e0 ldi r24, 0x08 ; 8
552: 80 93 c1 00 sts 0x00C1, r24
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
556: 86 e0 ldi r24, 0x06 ; 6
558: 80 93 c2 00 sts 0x00C2, r24
55c: a1 e0 ldi r26, 0x01 ; 1
55e: b1 e0 ldi r27, 0x01 ; 1
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
560: 95 e5 ldi r25, 0x55 ; 85
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
562: e0 ec ldi r30, 0xC0 ; 192
564: f0 e0 ldi r31, 0x00 ; 0
2014-11-19 23:57:35 +01:00
UDR0 = c;
566: c6 ec ldi r28, 0xC6 ; 198
568: d0 e0 ldi r29, 0x00 ; 0
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
2014-11-19 23:57:35 +01:00
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
56a: 80 81 ld r24, Z
56c: 85 ff sbrs r24, 5
56e: fd cf rjmp .-6 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a>
UDR0 = c;
570: 98 83 st Y, r25
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
572: 9d 91 ld r25, X+
574: 91 11 cpse r25, r1
576: f9 cf rjmp .-14 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a>
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
578: e0 ec ldi r30, 0xC0 ; 192
57a: f0 e0 ldi r31, 0x00 ; 0
57c: 80 81 ld r24, Z
57e: 85 ff sbrs r24, 5
580: fd cf rjmp .-6 ; 0x57c <_ZN4UartILm9600EEC1Ev+0x3c>
UDR0 = c;
582: 8d e0 ldi r24, 0x0D ; 13
584: 80 93 c6 00 sts 0x00C6, r24
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
588: e0 ec ldi r30, 0xC0 ; 192
58a: f0 e0 ldi r31, 0x00 ; 0
58c: 80 81 ld r24, Z
58e: 85 ff sbrs r24, 5
590: fd cf rjmp .-6 ; 0x58c <_ZN4UartILm9600EEC1Ev+0x4c>
2014-11-19 23:57:35 +01:00
UDR0 = c;
592: 8a e0 ldi r24, 0x0A ; 10
594: 80 93 c6 00 sts 0x00C6, r24
public:
Uart() {
sei();
init();
println("Uart done!");
}
598: df 91 pop r29
59a: cf 91 pop r28
59c: 08 95 ret
0000059e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>:
this->sp(0, r); //ROT
this->sp(1, g); //GR<47>N
this->sp(2, b); //BLAU
}
void setcolor(uint8_t mask) {
(mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau
59e: 60 ff sbrs r22, 0
5a0: 04 c0 rjmp .+8 ; 0x5aa <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0xc>
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
case 0: OCR0B = c; break; //ROT
case 1: OCR2B = c; break; //GR<47>N
case 2: OCR2A = c; break; //BLAU
5a2: 8f ef ldi r24, 0xFF ; 255
5a4: 80 93 b3 00 sts 0x00B3, r24
5a8: 02 c0 rjmp .+4 ; 0x5ae <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x10>
5aa: 10 92 b3 00 sts 0x00B3, r1
this->sp(1, g); //GR<47>N
this->sp(2, b); //BLAU
}
void setcolor(uint8_t mask) {
(mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau
(mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Gr<47>n
5ae: 61 ff sbrs r22, 1
5b0: 04 c0 rjmp .+8 ; 0x5ba <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x1c>
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
case 0: OCR0B = c; break; //ROT
case 1: OCR2B = c; break; //GR<47>N
5b2: 8f ef ldi r24, 0xFF ; 255
5b4: 80 93 b4 00 sts 0x00B4, r24
5b8: 02 c0 rjmp .+4 ; 0x5be <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x20>
5ba: 10 92 b4 00 sts 0x00B4, r1
this->sp(2, b); //BLAU
}
void setcolor(uint8_t mask) {
(mask & (1<<0)) ? this->sp(2, 0xFF) : this->sp(2, 0x00); //Blau
(mask & (1<<1)) ? this->sp(1, 0xFF) : this->sp(1, 0x00); //Gr<47>n
(mask & (1<<2)) ? this->sp(0, 0xFF) : this->sp(0, 0x00); //Rot
5be: 62 ff sbrs r22, 2
5c0: 03 c0 rjmp .+6 ; 0x5c8 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh+0x2a>
this->initTimer();
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
case 0: OCR0B = c; break; //ROT
5c2: 8f ef ldi r24, 0xFF ; 255
5c4: 88 bd out 0x28, r24 ; 40
5c6: 08 95 ret
5c8: 18 bc out 0x28, r1 ; 40
5ca: 08 95 ret
000005cc <_ZN4UartILm9600EE7printlnEPKc>:
} else {
print("0");
}
2014-11-19 23:57:35 +01:00
}
}
void println(const char *text) {
5cc: cf 93 push r28
5ce: df 93 push r29
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
5d0: fb 01 movw r30, r22
5d2: 90 81 ld r25, Z
5d4: 99 23 and r25, r25
5d6: 69 f0 breq .+26 ; 0x5f2 <_ZN4UartILm9600EE7printlnEPKc+0x26>
} else {
print("0");
}
}
}
void println(const char *text) {
5d8: db 01 movw r26, r22
5da: 11 96 adiw r26, 0x01 ; 1
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
5dc: e0 ec ldi r30, 0xC0 ; 192
5de: f0 e0 ldi r31, 0x00 ; 0
2014-11-19 23:57:35 +01:00
UDR0 = c;
5e0: c6 ec ldi r28, 0xC6 ; 198
5e2: d0 e0 ldi r29, 0x00 ; 0
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
5e4: 80 81 ld r24, Z
5e6: 85 ff sbrs r24, 5
5e8: fd cf rjmp .-6 ; 0x5e4 <_ZN4UartILm9600EE7printlnEPKc+0x18>
2014-11-19 23:57:35 +01:00
UDR0 = c;
5ea: 98 83 st Y, r25
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
5ec: 9d 91 ld r25, X+
5ee: 91 11 cpse r25, r1
5f0: f9 cf rjmp .-14 ; 0x5e4 <_ZN4UartILm9600EE7printlnEPKc+0x18>
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
5f2: e0 ec ldi r30, 0xC0 ; 192
5f4: f0 e0 ldi r31, 0x00 ; 0
5f6: 80 81 ld r24, Z
5f8: 85 ff sbrs r24, 5
5fa: fd cf rjmp .-6 ; 0x5f6 <_ZN4UartILm9600EE7printlnEPKc+0x2a>
2014-11-19 23:57:35 +01:00
UDR0 = c;
5fc: 8d e0 ldi r24, 0x0D ; 13
5fe: 80 93 c6 00 sts 0x00C6, r24
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
602: e0 ec ldi r30, 0xC0 ; 192
604: f0 e0 ldi r31, 0x00 ; 0
606: 80 81 ld r24, Z
608: 85 ff sbrs r24, 5
60a: fd cf rjmp .-6 ; 0x606 <_ZN4UartILm9600EE7printlnEPKc+0x3a>
2014-11-19 23:57:35 +01:00
UDR0 = c;
60c: 8a e0 ldi r24, 0x0A ; 10
60e: 80 93 c6 00 sts 0x00C6, r24
}
void println(const char *text) {
print(text);
print("\r");
print("\n");
}
612: df 91 pop r29
614: cf 91 pop r28
616: 08 95 ret
00000618 <main>:
ledclass led;
compclass comp;
irclass ir;
int main(void)
{
618: cf 93 push r28
61a: df 93 push r29
61c: 00 d0 rcall .+0 ; 0x61e <main+0x6>
61e: 00 d0 rcall .+0 ; 0x620 <main+0x8>
620: cd b7 in r28, 0x3d ; 61
622: de b7 in r29, 0x3e ; 62
sei();
624: 78 94 sei
uint8_t doorstatus = 0;
stripe.setcolor(stripe.RED);
626: 64 e0 ldi r22, 0x04 ; 4
628: 88 e8 ldi r24, 0x88 ; 136
62a: 91 e0 ldi r25, 0x01 ; 1
62c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>
Serial.println("Rot!");
630: 6b e0 ldi r22, 0x0B ; 11
632: 71 e0 ldi r23, 0x01 ; 1
634: 85 eb ldi r24, 0xB5 ; 181
636: 91 e0 ldi r25, 0x01 ; 1
638: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
63c: 2f e7 ldi r18, 0x7F ; 127
63e: 3a e1 ldi r19, 0x1A ; 26
640: 86 e0 ldi r24, 0x06 ; 6
642: 21 50 subi r18, 0x01 ; 1
644: 30 40 sbci r19, 0x00 ; 0
646: 80 40 sbci r24, 0x00 ; 0
648: e1 f7 brne .-8 ; 0x642 <main+0x2a>
64a: 00 c0 rjmp .+0 ; 0x64c <main+0x34>
64c: 00 00 nop
_delay_ms(100);
stripe.setcolor(stripe.GREEN);
64e: 62 e0 ldi r22, 0x02 ; 2
650: 88 e8 ldi r24, 0x88 ; 136
652: 91 e0 ldi r25, 0x01 ; 1
654: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>
Serial.println("Gr<47>n!");
658: 60 e1 ldi r22, 0x10 ; 16
65a: 71 e0 ldi r23, 0x01 ; 1
65c: 85 eb ldi r24, 0xB5 ; 181
65e: 91 e0 ldi r25, 0x01 ; 1
660: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc>
664: 9f e7 ldi r25, 0x7F ; 127
666: aa e1 ldi r26, 0x1A ; 26
668: b6 e0 ldi r27, 0x06 ; 6
66a: 91 50 subi r25, 0x01 ; 1
66c: a0 40 sbci r26, 0x00 ; 0
66e: b0 40 sbci r27, 0x00 ; 0
670: e1 f7 brne .-8 ; 0x66a <main+0x52>
672: 00 c0 rjmp .+0 ; 0x674 <main+0x5c>
674: 00 00 nop
_delay_ms(100);
stripe.setcolor(stripe.BLUE);
676: 61 e0 ldi r22, 0x01 ; 1
678: 88 e8 ldi r24, 0x88 ; 136
67a: 91 e0 ldi r25, 0x01 ; 1
67c: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>
Serial.println("Blau!");
680: 66 e1 ldi r22, 0x16 ; 22
682: 71 e0 ldi r23, 0x01 ; 1
684: 85 eb ldi r24, 0xB5 ; 181
686: 91 e0 ldi r25, 0x01 ; 1
688: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc>
68c: 2f e7 ldi r18, 0x7F ; 127
68e: 3a e1 ldi r19, 0x1A ; 26
690: 86 e0 ldi r24, 0x06 ; 6
692: 21 50 subi r18, 0x01 ; 1
694: 30 40 sbci r19, 0x00 ; 0
696: 80 40 sbci r24, 0x00 ; 0
698: e1 f7 brne .-8 ; 0x692 <main+0x7a>
69a: 00 c0 rjmp .+0 ; 0x69c <main+0x84>
69c: 00 00 nop
_delay_ms(100);
stripe.setcolor(stripe.WHITE);
69e: 67 e0 ldi r22, 0x07 ; 7
6a0: 88 e8 ldi r24, 0x88 ; 136
6a2: 91 e0 ldi r25, 0x01 ; 1
6a4: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>
Serial.println("Wei<65>, alles Initialisert! Habe Fertig und damit ab zum Normalbetrieb!");
6a8: 6c e1 ldi r22, 0x1C ; 28
6aa: 71 e0 ldi r23, 0x01 ; 1
6ac: 85 eb ldi r24, 0xB5 ; 181
6ae: 91 e0 ldi r25, 0x01 ; 1
6b0: 0e 94 e6 02 call 0x5cc ; 0x5cc <_ZN4UartILm9600EE7printlnEPKc>
6b4: 9f e7 ldi r25, 0x7F ; 127
6b6: aa e1 ldi r26, 0x1A ; 26
6b8: b6 e0 ldi r27, 0x06 ; 6
6ba: 91 50 subi r25, 0x01 ; 1
6bc: a0 40 sbci r26, 0x00 ; 0
6be: b0 40 sbci r27, 0x00 ; 0
6c0: e1 f7 brne .-8 ; 0x6ba <main+0xa2>
6c2: 00 c0 rjmp .+0 ; 0x6c4 <main+0xac>
6c4: 00 00 nop
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
6c6: 29 9a sbi 0x05, 1 ; 5
_delay_ms(100);
led.green(1);
stripe.setcolor(stripe.BLACK);
6c8: 60 e0 ldi r22, 0x00 ; 0
6ca: 88 e8 ldi r24, 0x88 ; 136
6cc: 91 e0 ldi r25, 0x01 ; 1
6ce: 0e 94 cf 02 call 0x59e ; 0x59e <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE8setcolorEh>
irclass ir;
int main(void)
{
sei();
uint8_t doorstatus = 0;
6d2: 21 2c mov r2, r1
}
led.red(0);
EIFR |= (1<<INTF0);
}
uint8_t getCode() {
uint8_t ret = this->_code;
6d4: 45 e8 ldi r20, 0x85 ; 133
6d6: 51 e0 ldi r21, 0x01 ; 1
this->_code = 255;
6d8: bb 24 eor r11, r11
6da: ba 94 dec r11
6dc: ab 2c mov r10, r11
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
6de: 0f 2e mov r0, r31
6e0: f9 e8 ldi r31, 0x89 ; 137
6e2: ef 2e mov r14, r31
6e4: f1 e0 ldi r31, 0x01 ; 1
6e6: ff 2e mov r15, r31
6e8: f0 2d mov r31, r0
this->fademap[1][index] = green;
6ea: 0e e8 ldi r16, 0x8E ; 142
6ec: 11 e0 ldi r17, 0x01 ; 1
this->fademap[2][index] = blue;
6ee: 0f 2e mov r0, r31
6f0: f3 e9 ldi r31, 0x93 ; 147
6f2: 8f 2e mov r8, r31
6f4: f1 e0 ldi r31, 0x01 ; 1
6f6: 9f 2e mov r9, r31
6f8: f0 2d mov r31, r0
this->fademap[3][index] = time;
6fa: 0f 2e mov r0, r31
6fc: f8 e9 ldi r31, 0x98 ; 152
6fe: 6f 2e mov r6, r31
700: f1 e0 ldi r31, 0x01 ; 1
702: 7f 2e mov r7, r31
704: f0 2d mov r31, r0
706: 0f 2e mov r0, r31
708: fa e0 ldi r31, 0x0A ; 10
70a: 3f 2e mov r3, r31
70c: f0 2d mov r31, r0
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
70e: 0f 2e mov r0, r31
710: f8 e8 ldi r31, 0x88 ; 136
712: 4f 2e mov r4, r31
714: f1 e0 ldi r31, 0x01 ; 1
716: 5f 2e mov r5, r31
718: f0 2d mov r31, r0
71a: cc 24 eor r12, r12
71c: c3 94 inc r12
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
71e: e0 ec ldi r30, 0xC0 ; 192
720: f0 e0 ldi r31, 0x00 ; 0
UDR0 = c;
722: 0f 2e mov r0, r31
724: fd e0 ldi r31, 0x0D ; 13
726: df 2e mov r13, r31
728: f0 2d mov r31, r0
}
led.red(0);
EIFR |= (1<<INTF0);
}
uint8_t getCode() {
uint8_t ret = this->_code;
72a: da 01 movw r26, r20
72c: 8c 91 ld r24, X
this->_code = 255;
72e: ac 92 st X, r10
uint8_t remotetimer = 10;
while(1)
{
uint8_t c = ir.getCode();
switch(c) {
730: 8c 30 cpi r24, 0x0C ; 12
732: 09 f4 brne .+2 ; 0x736 <main+0x11e>
734: fc c0 rjmp .+504 ; 0x92e <main+0x316>
736: 38 f5 brcc .+78 ; 0x786 <main+0x16e>
738: 85 30 cpi r24, 0x05 ; 5
73a: 09 f4 brne .+2 ; 0x73e <main+0x126>
73c: b3 c0 rjmp .+358 ; 0x8a4 <main+0x28c>
73e: 90 f4 brcc .+36 ; 0x764 <main+0x14c>
740: 82 30 cpi r24, 0x02 ; 2
742: 09 f4 brne .+2 ; 0x746 <main+0x12e>
744: 8c c0 rjmp .+280 ; 0x85e <main+0x246>
746: 38 f4 brcc .+14 ; 0x756 <main+0x13e>
748: 88 23 and r24, r24
74a: 09 f4 brne .+2 ; 0x74e <main+0x136>
74c: 46 c0 rjmp .+140 ; 0x7da <main+0x1c2>
74e: 81 30 cpi r24, 0x01 ; 1
750: 09 f0 breq .+2 ; 0x754 <main+0x13c>
752: 56 c1 rjmp .+684 ; 0xa00 <main+0x3e8>
754: 63 c0 rjmp .+198 ; 0x81c <main+0x204>
756: 83 30 cpi r24, 0x03 ; 3
758: 09 f4 brne .+2 ; 0x75c <main+0x144>
75a: 90 c0 rjmp .+288 ; 0x87c <main+0x264>
75c: 84 30 cpi r24, 0x04 ; 4
75e: 09 f0 breq .+2 ; 0x762 <main+0x14a>
760: 4f c1 rjmp .+670 ; 0xa00 <main+0x3e8>
762: 95 c0 rjmp .+298 ; 0x88e <main+0x276>
764: 88 30 cpi r24, 0x08 ; 8
766: 09 f4 brne .+2 ; 0x76a <main+0x152>
768: be c0 rjmp .+380 ; 0x8e6 <main+0x2ce>
76a: 38 f4 brcc .+14 ; 0x77a <main+0x162>
76c: 86 30 cpi r24, 0x06 ; 6
76e: 09 f4 brne .+2 ; 0x772 <main+0x15a>
770: a4 c0 rjmp .+328 ; 0x8ba <main+0x2a2>
772: 87 30 cpi r24, 0x07 ; 7
774: 09 f0 breq .+2 ; 0x778 <main+0x160>
776: 44 c1 rjmp .+648 ; 0xa00 <main+0x3e8>
778: ab c0 rjmp .+342 ; 0x8d0 <main+0x2b8>
77a: 8a 30 cpi r24, 0x0A ; 10
77c: 09 f4 brne .+2 ; 0x780 <main+0x168>
77e: cb c0 rjmp .+406 ; 0x916 <main+0x2fe>
780: 08 f0 brcs .+2 ; 0x784 <main+0x16c>
782: e5 c1 rjmp .+970 ; 0xb4e <main+0x536>
784: bc c0 rjmp .+376 ; 0x8fe <main+0x2e6>
786: 82 31 cpi r24, 0x12 ; 18
788: 09 f4 brne .+2 ; 0x78c <main+0x174>
78a: 0d c1 rjmp .+538 ; 0x9a6 <main+0x38e>
78c: 90 f4 brcc .+36 ; 0x7b2 <main+0x19a>
78e: 8f 30 cpi r24, 0x0F ; 15
790: 09 f4 brne .+2 ; 0x794 <main+0x17c>
792: dd c1 rjmp .+954 ; 0xb4e <main+0x536>
794: 38 f4 brcc .+14 ; 0x7a4 <main+0x18c>
796: 8d 30 cpi r24, 0x0D ; 13
798: 09 f4 brne .+2 ; 0x79c <main+0x184>
79a: d5 c0 rjmp .+426 ; 0x946 <main+0x32e>
79c: 8e 30 cpi r24, 0x0E ; 14
79e: 09 f0 breq .+2 ; 0x7a2 <main+0x18a>
7a0: 2f c1 rjmp .+606 ; 0xa00 <main+0x3e8>
7a2: dd c0 rjmp .+442 ; 0x95e <main+0x346>
7a4: 80 31 cpi r24, 0x10 ; 16
7a6: 09 f4 brne .+2 ; 0x7aa <main+0x192>
7a8: e6 c0 rjmp .+460 ; 0x976 <main+0x35e>
7aa: 81 31 cpi r24, 0x11 ; 17
7ac: 09 f0 breq .+2 ; 0x7b0 <main+0x198>
7ae: 28 c1 rjmp .+592 ; 0xa00 <main+0x3e8>
7b0: ee c0 rjmp .+476 ; 0x98e <main+0x376>
7b2: 85 31 cpi r24, 0x15 ; 21
7b4: 09 f4 brne .+2 ; 0x7b8 <main+0x1a0>
7b6: 0e c1 rjmp .+540 ; 0x9d4 <main+0x3bc>
7b8: 38 f4 brcc .+14 ; 0x7c8 <main+0x1b0>
7ba: 83 31 cpi r24, 0x13 ; 19
7bc: 09 f4 brne .+2 ; 0x7c0 <main+0x1a8>
7be: c7 c1 rjmp .+910 ; 0xb4e <main+0x536>
7c0: 84 31 cpi r24, 0x14 ; 20
7c2: 09 f0 breq .+2 ; 0x7c6 <main+0x1ae>
7c4: 1d c1 rjmp .+570 ; 0xa00 <main+0x3e8>
7c6: fb c0 rjmp .+502 ; 0x9be <main+0x3a6>
7c8: 87 31 cpi r24, 0x17 ; 23
7ca: 09 f4 brne .+2 ; 0x7ce <main+0x1b6>
7cc: c0 c1 rjmp .+896 ; 0xb4e <main+0x536>
7ce: 08 f4 brcc .+2 ; 0x7d2 <main+0x1ba>
7d0: 0c c1 rjmp .+536 ; 0x9ea <main+0x3d2>
7d2: 8f 3f cpi r24, 0xFF ; 255
7d4: 09 f0 breq .+2 ; 0x7d8 <main+0x1c0>
7d6: 14 c1 rjmp .+552 ; 0xa00 <main+0x3e8>
7d8: ba c1 rjmp .+884 ; 0xb4e <main+0x536>
} else {
OCR2A = 0;
2014-11-19 23:57:35 +01:00
}
}
void higher() {
if(OCR0B <= 250) {
7da: 88 b5 in r24, 0x28 ; 40
7dc: 8b 3f cpi r24, 0xFB ; 251
7de: 20 f4 brcc .+8 ; 0x7e8 <main+0x1d0>
OCR0B = OCR0B + 5;
7e0: 88 b5 in r24, 0x28 ; 40
7e2: 8b 5f subi r24, 0xFB ; 251
7e4: 88 bd out 0x28, r24 ; 40
7e6: 01 c0 rjmp .+2 ; 0x7ea <main+0x1d2>
} else {
OCR0B = 0;
7e8: 18 bc out 0x28, r1 ; 40
}
if(OCR2B <= 250) {
7ea: a4 eb ldi r26, 0xB4 ; 180
7ec: b0 e0 ldi r27, 0x00 ; 0
7ee: 8c 91 ld r24, X
7f0: 8b 3f cpi r24, 0xFB ; 251
7f2: 20 f4 brcc .+8 ; 0x7fc <main+0x1e4>
OCR2B = OCR2B + 5;
7f4: 8c 91 ld r24, X
7f6: 8b 5f subi r24, 0xFB ; 251
7f8: 8c 93 st X, r24
7fa: 03 c0 rjmp .+6 ; 0x802 <main+0x1ea>
} else {
OCR2B = 0;
7fc: a4 eb ldi r26, 0xB4 ; 180
7fe: b0 e0 ldi r27, 0x00 ; 0
800: 1c 92 st X, r1
}
if(OCR2A <= 250) {
802: a3 eb ldi r26, 0xB3 ; 179
804: b0 e0 ldi r27, 0x00 ; 0
806: 8c 91 ld r24, X
808: 8b 3f cpi r24, 0xFB ; 251
80a: 20 f4 brcc .+8 ; 0x814 <main+0x1fc>
OCR2A = OCR2A + 5;
80c: 8c 91 ld r24, X
80e: 8b 5f subi r24, 0xFB ; 251
810: 8c 93 st X, r24
812: 9d c1 rjmp .+826 ; 0xb4e <main+0x536>
} else {
OCR2A = 0;
814: a3 eb ldi r26, 0xB3 ; 179
816: b0 e0 ldi r27, 0x00 ; 0
818: 1c 92 st X, r1
81a: 99 c1 rjmp .+818 ; 0xb4e <main+0x536>
}
void on() {
this->timerOn();
}
void lower() {
if(OCR0B >= 5) {
81c: 88 b5 in r24, 0x28 ; 40
81e: 85 30 cpi r24, 0x05 ; 5
820: 20 f0 brcs .+8 ; 0x82a <main+0x212>
OCR0B = OCR0B - 5;
822: 88 b5 in r24, 0x28 ; 40
824: 85 50 subi r24, 0x05 ; 5
826: 88 bd out 0x28, r24 ; 40
828: 01 c0 rjmp .+2 ; 0x82c <main+0x214>
} else {
OCR0B = 0;
82a: 18 bc out 0x28, r1 ; 40
}
if(OCR2B >= 5) {
82c: a4 eb ldi r26, 0xB4 ; 180
82e: b0 e0 ldi r27, 0x00 ; 0
830: 8c 91 ld r24, X
832: 85 30 cpi r24, 0x05 ; 5
834: 20 f0 brcs .+8 ; 0x83e <main+0x226>
OCR2B = OCR2B - 5;
836: 8c 91 ld r24, X
838: 85 50 subi r24, 0x05 ; 5
83a: 8c 93 st X, r24
83c: 03 c0 rjmp .+6 ; 0x844 <main+0x22c>
} else {
OCR2B = 0;
83e: a4 eb ldi r26, 0xB4 ; 180
840: b0 e0 ldi r27, 0x00 ; 0
842: 1c 92 st X, r1
}
if(OCR2A >= 5) {
844: a3 eb ldi r26, 0xB3 ; 179
846: b0 e0 ldi r27, 0x00 ; 0
848: 8c 91 ld r24, X
84a: 85 30 cpi r24, 0x05 ; 5
84c: 20 f0 brcs .+8 ; 0x856 <main+0x23e>
OCR2A = OCR2A - 5;
84e: 8c 91 ld r24, X
850: 85 50 subi r24, 0x05 ; 5
852: 8c 93 st X, r24
854: 7c c1 rjmp .+760 ; 0xb4e <main+0x536>
} else {
OCR2A = 0;
856: a3 eb ldi r26, 0xB3 ; 179
858: b0 e0 ldi r27, 0x00 ; 0
85a: 1c 92 st X, r1
85c: 78 c1 rjmp .+752 ; 0xb4e <main+0x536>
}
void timerOff() {
// OC0B output: Disconnected
// OC2A output: Disconnected
// OC2B output: Disconnected
TCCR0A &= ~(1<<COM0B1);
85e: 84 b5 in r24, 0x24 ; 36
860: 8f 7d andi r24, 0xDF ; 223
862: 84 bd out 0x24, r24 ; 36
TCCR2A &= ~((1<<COM2A1) | (1<<COM2B1));
864: a0 eb ldi r26, 0xB0 ; 176
866: b0 e0 ldi r27, 0x00 ; 0
868: 8c 91 ld r24, X
86a: 8f 75 andi r24, 0x5F ; 95
86c: 8c 93 st X, r24
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
86e: 5d 98 cbi 0x0b, 5 ; 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; }
870: 55 9a sbi 0x0a, 5 ; 10
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
872: 5b 98 cbi 0x0b, 3 ; 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; }
874: 53 9a sbi 0x0a, 3 ; 10
876: 2b 98 cbi 0x05, 3 ; 5
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
878: 23 9a sbi 0x04, 3 ; 4
87a: 69 c1 rjmp .+722 ; 0xb4e <main+0x536>
}
void timerOn() {
// OC0B output: Non-Inverted PWM
// OC2A output: Non-Inverted PWM
// OC2B output: Non-Inverted PWM
TCCR0A |= (1<<COM0B1);
87c: 84 b5 in r24, 0x24 ; 36
87e: 80 62 ori r24, 0x20 ; 32
880: 84 bd out 0x24, r24 ; 36
TCCR2A |= (1<<COM2A1) | (1<<COM2B1);
882: a0 eb ldi r26, 0xB0 ; 176
884: b0 e0 ldi r27, 0x00 ; 0
886: 8c 91 ld r24, X
888: 80 6a ori r24, 0xA0 ; 160
88a: 8c 93 st X, r24
88c: 60 c1 rjmp .+704 ; 0xb4e <main+0x536>
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
88e: d7 01 movw r26, r14
890: bc 92 st X, r11
this->fademap[1][index] = green;
892: d8 01 movw r26, r16
894: 1c 92 st X, r1
this->fademap[2][index] = blue;
896: d4 01 movw r26, r8
898: 1c 92 st X, r1
this->fademap[3][index] = time;
89a: d3 01 movw r26, r6
89c: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
89e: d2 01 movw r26, r4
8a0: cc 92 st X, r12
8a2: 55 c1 rjmp .+682 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
8a4: d7 01 movw r26, r14
8a6: 1c 92 st X, r1
this->fademap[1][index] = green;
8a8: d8 01 movw r26, r16
8aa: bc 92 st X, r11
this->fademap[2][index] = blue;
8ac: d4 01 movw r26, r8
8ae: 1c 92 st X, r1
this->fademap[3][index] = time;
8b0: d3 01 movw r26, r6
8b2: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
8b4: d2 01 movw r26, r4
8b6: cc 92 st X, r12
8b8: 4a c1 rjmp .+660 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
8ba: d7 01 movw r26, r14
8bc: 1c 92 st X, r1
this->fademap[1][index] = green;
8be: d8 01 movw r26, r16
8c0: 1c 92 st X, r1
this->fademap[2][index] = blue;
8c2: d4 01 movw r26, r8
8c4: bc 92 st X, r11
this->fademap[3][index] = time;
8c6: d3 01 movw r26, r6
8c8: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
8ca: d2 01 movw r26, r4
8cc: cc 92 st X, r12
8ce: 3f c1 rjmp .+638 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
8d0: d7 01 movw r26, r14
8d2: bc 92 st X, r11
this->fademap[1][index] = green;
8d4: d8 01 movw r26, r16
8d6: bc 92 st X, r11
this->fademap[2][index] = blue;
8d8: d4 01 movw r26, r8
8da: bc 92 st X, r11
this->fademap[3][index] = time;
8dc: d3 01 movw r26, r6
8de: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
8e0: d2 01 movw r26, r4
8e2: cc 92 st X, r12
8e4: 34 c1 rjmp .+616 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
8e6: d7 01 movw r26, r14
8e8: bc 92 st X, r11
this->fademap[1][index] = green;
8ea: 20 e4 ldi r18, 0x40 ; 64
8ec: d8 01 movw r26, r16
8ee: 2c 93 st X, r18
this->fademap[2][index] = blue;
8f0: d4 01 movw r26, r8
8f2: 1c 92 st X, r1
this->fademap[3][index] = time;
8f4: d3 01 movw r26, r6
8f6: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
8f8: d2 01 movw r26, r4
8fa: cc 92 st X, r12
8fc: 28 c1 rjmp .+592 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
8fe: d7 01 movw r26, r14
900: 1c 92 st X, r1
this->fademap[1][index] = green;
902: d8 01 movw r26, r16
904: bc 92 st X, r11
this->fademap[2][index] = blue;
906: 20 e4 ldi r18, 0x40 ; 64
908: d4 01 movw r26, r8
90a: 2c 93 st X, r18
this->fademap[3][index] = time;
90c: d3 01 movw r26, r6
90e: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
910: d2 01 movw r26, r4
912: cc 92 st X, r12
914: 1c c1 rjmp .+568 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
916: 20 e4 ldi r18, 0x40 ; 64
918: d7 01 movw r26, r14
91a: 2c 93 st X, r18
this->fademap[1][index] = green;
91c: d8 01 movw r26, r16
91e: 1c 92 st X, r1
this->fademap[2][index] = blue;
920: d4 01 movw r26, r8
922: bc 92 st X, r11
this->fademap[3][index] = time;
924: d3 01 movw r26, r6
926: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
928: d2 01 movw r26, r4
92a: cc 92 st X, r12
92c: 10 c1 rjmp .+544 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
92e: d7 01 movw r26, r14
930: bc 92 st X, r11
this->fademap[1][index] = green;
932: 20 e8 ldi r18, 0x80 ; 128
934: d8 01 movw r26, r16
936: 2c 93 st X, r18
this->fademap[2][index] = blue;
938: d4 01 movw r26, r8
93a: 1c 92 st X, r1
this->fademap[3][index] = time;
93c: d3 01 movw r26, r6
93e: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
940: d2 01 movw r26, r4
942: cc 92 st X, r12
944: 04 c1 rjmp .+520 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
946: d7 01 movw r26, r14
948: 1c 92 st X, r1
this->fademap[1][index] = green;
94a: d8 01 movw r26, r16
94c: bc 92 st X, r11
this->fademap[2][index] = blue;
94e: 20 e8 ldi r18, 0x80 ; 128
950: d4 01 movw r26, r8
952: 2c 93 st X, r18
this->fademap[3][index] = time;
954: d3 01 movw r26, r6
956: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
958: d2 01 movw r26, r4
95a: cc 92 st X, r12
95c: f8 c0 rjmp .+496 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
95e: 20 e8 ldi r18, 0x80 ; 128
960: d7 01 movw r26, r14
962: 2c 93 st X, r18
this->fademap[1][index] = green;
964: d8 01 movw r26, r16
966: 1c 92 st X, r1
this->fademap[2][index] = blue;
968: d4 01 movw r26, r8
96a: bc 92 st X, r11
this->fademap[3][index] = time;
96c: d3 01 movw r26, r6
96e: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
970: d2 01 movw r26, r4
972: cc 92 st X, r12
974: ec c0 rjmp .+472 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
976: d7 01 movw r26, r14
978: bc 92 st X, r11
this->fademap[1][index] = green;
97a: 20 ec ldi r18, 0xC0 ; 192
97c: d8 01 movw r26, r16
97e: 2c 93 st X, r18
this->fademap[2][index] = blue;
980: d4 01 movw r26, r8
982: 1c 92 st X, r1
this->fademap[3][index] = time;
984: d3 01 movw r26, r6
986: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
988: d2 01 movw r26, r4
98a: cc 92 st X, r12
98c: e0 c0 rjmp .+448 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
98e: d7 01 movw r26, r14
990: 1c 92 st X, r1
this->fademap[1][index] = green;
992: d8 01 movw r26, r16
994: bc 92 st X, r11
this->fademap[2][index] = blue;
996: 20 ec ldi r18, 0xC0 ; 192
998: d4 01 movw r26, r8
99a: 2c 93 st X, r18
this->fademap[3][index] = time;
99c: d3 01 movw r26, r6
99e: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
9a0: d2 01 movw r26, r4
9a2: cc 92 st X, r12
9a4: d4 c0 rjmp .+424 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
9a6: 20 ec ldi r18, 0xC0 ; 192
9a8: d7 01 movw r26, r14
9aa: 2c 93 st X, r18
this->fademap[1][index] = green;
9ac: d8 01 movw r26, r16
9ae: 1c 92 st X, r1
this->fademap[2][index] = blue;
9b0: d4 01 movw r26, r8
9b2: bc 92 st X, r11
this->fademap[3][index] = time;
9b4: d3 01 movw r26, r6
9b6: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
9b8: d2 01 movw r26, r4
9ba: cc 92 st X, r12
9bc: c8 c0 rjmp .+400 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
9be: d7 01 movw r26, r14
9c0: bc 92 st X, r11
this->fademap[1][index] = green;
9c2: d8 01 movw r26, r16
9c4: bc 92 st X, r11
this->fademap[2][index] = blue;
9c6: d4 01 movw r26, r8
9c8: 1c 92 st X, r1
this->fademap[3][index] = time;
9ca: d3 01 movw r26, r6
9cc: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
9ce: d2 01 movw r26, r4
9d0: cc 92 st X, r12
9d2: bd c0 rjmp .+378 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
9d4: d7 01 movw r26, r14
9d6: 1c 92 st X, r1
this->fademap[1][index] = green;
9d8: d8 01 movw r26, r16
9da: bc 92 st X, r11
this->fademap[2][index] = blue;
9dc: d4 01 movw r26, r8
9de: bc 92 st X, r11
this->fademap[3][index] = time;
9e0: d3 01 movw r26, r6
9e2: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
9e4: d2 01 movw r26, r4
9e6: cc 92 st X, r12
9e8: b2 c0 rjmp .+356 ; 0xb4e <main+0x536>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
9ea: d7 01 movw r26, r14
9ec: bc 92 st X, r11
this->fademap[1][index] = green;
9ee: d8 01 movw r26, r16
9f0: 1c 92 st X, r1
this->fademap[2][index] = blue;
9f2: d4 01 movw r26, r8
9f4: bc 92 st X, r11
this->fademap[3][index] = time;
9f6: d3 01 movw r26, r6
9f8: 3c 92 st X, r3
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
9fa: d2 01 movw r26, r4
9fc: cc 92 st X, r12
9fe: a7 c0 rjmp .+334 ; 0xb4e <main+0x536>
case 19: break; //Button FADE
case 20: stripe.fadeto(0xFF,0xFF,0x00,remotetimer); break; //Color Red 100 % + Green 100 %
case 21: stripe.fadeto(0x00,0xFF,0xFF,remotetimer); break; //Color Green 100 % + Blue 100 %
case 22: stripe.fadeto(0xFF,0x00,0xFF,remotetimer); break; //Color Blue 100 % + Red 100 %
case 23: break; //Button SMOOTH
default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne
a00: 28 2f mov r18, r24
a02: 30 e0 ldi r19, 0x00 ; 0
a04: 3a 83 std Y+2, r19 ; 0x02
a06: 29 83 std Y+1, r18 ; 0x01
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
a08: 80 81 ld r24, Z
a0a: 85 ff sbrs r24, 5
a0c: fd cf rjmp .-6 ; 0xa08 <main+0x3f0>
UDR0 = c;
a0e: 80 e3 ldi r24, 0x30 ; 48
a10: a6 ec ldi r26, 0xC6 ; 198
a12: b0 e0 ldi r27, 0x00 ; 0
a14: 8c 93 st X, r24
text++;
}
}
void printDec(uint16_t wert) {
print((wert/10000)+'0');
2014-11-19 23:57:35 +01:00
print(((wert/1000)%10)+'0');
a16: 60 e0 ldi r22, 0x00 ; 0
a18: 70 e0 ldi r23, 0x00 ; 0
a1a: cb 01 movw r24, r22
a1c: 96 95 lsr r25
a1e: 87 95 ror r24
a20: 96 95 lsr r25
a22: 87 95 ror r24
a24: 96 95 lsr r25
a26: 87 95 ror r24
a28: 9c 01 movw r18, r24
a2a: 22 0f add r18, r18
a2c: 33 1f adc r19, r19
a2e: 88 0f add r24, r24
a30: 99 1f adc r25, r25
a32: 88 0f add r24, r24
a34: 99 1f adc r25, r25
a36: 88 0f add r24, r24
a38: 99 1f adc r25, r25
a3a: 82 0f add r24, r18
a3c: 93 1f adc r25, r19
a3e: 68 1b sub r22, r24
a40: 79 0b sbc r23, r25
a42: 60 5d subi r22, 0xD0 ; 208
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
a44: 80 81 ld r24, Z
a46: 85 ff sbrs r24, 5
a48: fd cf rjmp .-6 ; 0xa44 <main+0x42c>
2014-11-19 23:57:35 +01:00
UDR0 = c;
a4a: a6 ec ldi r26, 0xC6 ; 198
a4c: b0 e0 ldi r27, 0x00 ; 0
a4e: 6c 93 st X, r22
2014-11-19 23:57:35 +01:00
}
}
void printDec(uint16_t wert) {
print((wert/10000)+'0');
print(((wert/1000)%10)+'0');
print(((wert/100)%10)+'0');
a50: 29 81 ldd r18, Y+1 ; 0x01
a52: 3a 81 ldd r19, Y+2 ; 0x02
a54: 36 95 lsr r19
a56: 27 95 ror r18
a58: 36 95 lsr r19
a5a: 27 95 ror r18
a5c: ab e7 ldi r26, 0x7B ; 123
a5e: b4 e1 ldi r27, 0x14 ; 20
a60: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3>
a64: 96 95 lsr r25
a66: 87 95 ror r24
a68: 80 5d subi r24, 0xD0 ; 208
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
a6a: 90 81 ld r25, Z
a6c: 95 ff sbrs r25, 5
a6e: fd cf rjmp .-6 ; 0xa6a <main+0x452>
2014-11-19 23:57:35 +01:00
UDR0 = c;
a70: a6 ec ldi r26, 0xC6 ; 198
a72: b0 e0 ldi r27, 0x00 ; 0
a74: 8c 93 st X, r24
2014-11-19 23:57:35 +01:00
}
void printDec(uint16_t wert) {
print((wert/10000)+'0');
print(((wert/1000)%10)+'0');
print(((wert/100)%10)+'0');
print(((wert/10)%10)+'0');
a76: 29 81 ldd r18, Y+1 ; 0x01
a78: 3a 81 ldd r19, Y+2 ; 0x02
a7a: ad ec ldi r26, 0xCD ; 205
a7c: bc ec ldi r27, 0xCC ; 204
a7e: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3>
a82: 96 95 lsr r25
a84: 87 95 ror r24
a86: 96 95 lsr r25
a88: 87 95 ror r24
a8a: 96 95 lsr r25
a8c: 87 95 ror r24
a8e: 9c 83 std Y+4, r25 ; 0x04
a90: 8b 83 std Y+3, r24 ; 0x03
a92: 9c 01 movw r18, r24
a94: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3>
a98: 96 95 lsr r25
a9a: 87 95 ror r24
a9c: 96 95 lsr r25
a9e: 87 95 ror r24
aa0: 96 95 lsr r25
aa2: 87 95 ror r24
aa4: 9c 01 movw r18, r24
aa6: 22 0f add r18, r18
aa8: 33 1f adc r19, r19
aaa: 88 0f add r24, r24
aac: 99 1f adc r25, r25
aae: 88 0f add r24, r24
ab0: 99 1f adc r25, r25
ab2: 88 0f add r24, r24
ab4: 99 1f adc r25, r25
ab6: 82 0f add r24, r18
ab8: 93 1f adc r25, r19
aba: 2b 81 ldd r18, Y+3 ; 0x03
abc: 3c 81 ldd r19, Y+4 ; 0x04
abe: 28 1b sub r18, r24
ac0: 39 0b sbc r19, r25
ac2: c9 01 movw r24, r18
ac4: 80 5d subi r24, 0xD0 ; 208
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
ac6: 90 81 ld r25, Z
ac8: 95 ff sbrs r25, 5
aca: fd cf rjmp .-6 ; 0xac6 <main+0x4ae>
2014-11-19 23:57:35 +01:00
UDR0 = c;
acc: a6 ec ldi r26, 0xC6 ; 198
ace: b0 e0 ldi r27, 0x00 ; 0
ad0: 8c 93 st X, r24
2014-11-19 23:57:35 +01:00
void printDec(uint16_t wert) {
print((wert/10000)+'0');
print(((wert/1000)%10)+'0');
print(((wert/100)%10)+'0');
print(((wert/10)%10)+'0');
print((wert%10)+'0');
ad2: 29 81 ldd r18, Y+1 ; 0x01
ad4: 3a 81 ldd r19, Y+2 ; 0x02
ad6: ad ec ldi r26, 0xCD ; 205
ad8: bc ec ldi r27, 0xCC ; 204
ada: 0e 94 aa 08 call 0x1154 ; 0x1154 <__umulhisi3>
ade: 96 95 lsr r25
ae0: 87 95 ror r24
ae2: 96 95 lsr r25
ae4: 87 95 ror r24
ae6: 96 95 lsr r25
ae8: 87 95 ror r24
aea: 9c 01 movw r18, r24
aec: 22 0f add r18, r18
aee: 33 1f adc r19, r19
af0: 88 0f add r24, r24
af2: 99 1f adc r25, r25
af4: 88 0f add r24, r24
af6: 99 1f adc r25, r25
af8: 88 0f add r24, r24
afa: 99 1f adc r25, r25
afc: 82 0f add r24, r18
afe: 93 1f adc r25, r19
b00: 29 81 ldd r18, Y+1 ; 0x01
b02: 3a 81 ldd r19, Y+2 ; 0x02
b04: 28 1b sub r18, r24
b06: 39 0b sbc r19, r25
b08: c9 01 movw r24, r18
b0a: 80 5d subi r24, 0xD0 ; 208
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b0c: 90 81 ld r25, Z
b0e: 95 ff sbrs r25, 5
b10: fd cf rjmp .-6 ; 0xb0c <main+0x4f4>
UDR0 = c;
b12: a6 ec ldi r26, 0xC6 ; 198
b14: b0 e0 ldi r27, 0x00 ; 0
b16: 8c 93 st X, r24
b18: a3 e6 ldi r26, 0x63 ; 99
b1a: b1 e0 ldi r27, 0x01 ; 1
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
b1c: 90 e2 ldi r25, 0x20 ; 32
b1e: 9d 01 movw r18, r26
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b20: 80 81 ld r24, Z
b22: 85 ff sbrs r24, 5
b24: fd cf rjmp .-6 ; 0xb20 <main+0x508>
UDR0 = c;
b26: a6 ec ldi r26, 0xC6 ; 198
b28: b0 e0 ldi r27, 0x00 ; 0
b2a: 9c 93 st X, r25
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
b2c: d9 01 movw r26, r18
b2e: 9d 91 ld r25, X+
b30: 9d 01 movw r18, r26
b32: 91 11 cpse r25, r1
b34: f5 cf rjmp .-22 ; 0xb20 <main+0x508>
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b36: 80 81 ld r24, Z
b38: 85 ff sbrs r24, 5
b3a: fd cf rjmp .-6 ; 0xb36 <main+0x51e>
UDR0 = c;
b3c: a6 ec ldi r26, 0xC6 ; 198
b3e: b0 e0 ldi r27, 0x00 ; 0
b40: dc 92 st X, r13
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b42: 80 81 ld r24, Z
b44: 85 ff sbrs r24, 5
b46: fd cf rjmp .-6 ; 0xb42 <main+0x52a>
UDR0 = c;
b48: a6 ec ldi r26, 0xC6 ; 198
b4a: b0 e0 ldi r27, 0x00 ; 0
b4c: 3c 92 st X, r3
}
if(comp.is_active()) {
b4e: 00 b6 in r0, 0x30 ; 48
b50: 05 fe sbrs r0, 5
b52: 2a c0 rjmp .+84 ; 0xba8 <main+0x590>
if(doorstatus == 0) {
b54: 21 10 cpse r2, r1
b56: 52 c0 rjmp .+164 ; 0xbfc <main+0x5e4>
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
b58: d7 01 movw r26, r14
b5a: bc 92 st X, r11
this->fademap[1][index] = green;
b5c: d8 01 movw r26, r16
b5e: 1c 92 st X, r1
this->fademap[2][index] = blue;
b60: d4 01 movw r26, r8
b62: 1c 92 st X, r1
this->fademap[3][index] = time;
b64: 24 e6 ldi r18, 0x64 ; 100
b66: d3 01 movw r26, r6
b68: 2c 93 st X, r18
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
b6a: d2 01 movw r26, r4
b6c: cc 92 st X, r12
b6e: ad e6 ldi r26, 0x6D ; 109
b70: b1 e0 ldi r27, 0x01 ; 1
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
b72: 94 e5 ldi r25, 0x54 ; 84
b74: 9d 01 movw r18, r26
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b76: 80 81 ld r24, Z
b78: 85 ff sbrs r24, 5
b7a: fd cf rjmp .-6 ; 0xb76 <main+0x55e>
UDR0 = c;
b7c: a6 ec ldi r26, 0xC6 ; 198
b7e: b0 e0 ldi r27, 0x00 ; 0
b80: 9c 93 st X, r25
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
b82: d9 01 movw r26, r18
b84: 9d 91 ld r25, X+
b86: 9d 01 movw r18, r26
b88: 91 11 cpse r25, r1
b8a: f5 cf rjmp .-22 ; 0xb76 <main+0x55e>
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b8c: 80 81 ld r24, Z
b8e: 85 ff sbrs r24, 5
b90: fd cf rjmp .-6 ; 0xb8c <main+0x574>
UDR0 = c;
b92: a6 ec ldi r26, 0xC6 ; 198
b94: b0 e0 ldi r27, 0x00 ; 0
b96: dc 92 st X, r13
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
b98: 80 81 ld r24, Z
b9a: 85 ff sbrs r24, 5
b9c: fd cf rjmp .-6 ; 0xb98 <main+0x580>
2014-11-19 23:57:35 +01:00
UDR0 = c;
b9e: a6 ec ldi r26, 0xC6 ; 198
ba0: b0 e0 ldi r27, 0x00 ; 0
ba2: 3c 92 st X, r3
doorstatus = 1;
ba4: 2c 2c mov r2, r12
ba6: 2a c0 rjmp .+84 ; 0xbfc <main+0x5e4>
stripe.fadeto(0xFF,0x00,0x00,100);
Serial.println("T<>r Zu...");
}
} else {
if(doorstatus == 1) {
ba8: b1 e0 ldi r27, 0x01 ; 1
baa: 2b 12 cpse r2, r27
bac: 27 c0 rjmp .+78 ; 0xbfc <main+0x5e4>
bae: a7 e7 ldi r26, 0x77 ; 119
bb0: b1 e0 ldi r27, 0x01 ; 1
sei();
init();
println("Uart done!");
2014-11-19 23:57:35 +01:00
}
void print(const char *text) {
while (*text)
bb2: 94 e5 ldi r25, 0x54 ; 84
bb4: 9d 01 movw r18, r26
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
bb6: 80 81 ld r24, Z
bb8: 85 ff sbrs r24, 5
bba: fd cf rjmp .-6 ; 0xbb6 <main+0x59e>
2014-11-19 23:57:35 +01:00
UDR0 = c;
bbc: a6 ec ldi r26, 0xC6 ; 198
bbe: b0 e0 ldi r27, 0x00 ; 0
bc0: 9c 93 st X, r25
sei();
init();
println("Uart done!");
}
void print(const char *text) {
while (*text)
bc2: d9 01 movw r26, r18
bc4: 9d 91 ld r25, X+
bc6: 9d 01 movw r18, r26
bc8: 91 11 cpse r25, r1
bca: f5 cf rjmp .-22 ; 0xbb6 <main+0x59e>
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
bcc: 80 81 ld r24, Z
bce: 85 ff sbrs r24, 5
bd0: fd cf rjmp .-6 ; 0xbcc <main+0x5b4>
2014-11-19 23:57:35 +01:00
UDR0 = c;
bd2: a6 ec ldi r26, 0xC6 ; 198
bd4: b0 e0 ldi r27, 0x00 ; 0
bd6: dc 92 st X, r13
2014-11-19 23:57:35 +01:00
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B= (0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); //Enable TXEN im Register UCR TX-Data Enable
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
bd8: 80 81 ld r24, Z
bda: 85 ff sbrs r24, 5
bdc: fd cf rjmp .-6 ; 0xbd8 <main+0x5c0>
2014-11-19 23:57:35 +01:00
UDR0 = c;
bde: a6 ec ldi r26, 0xC6 ; 198
be0: b0 e0 ldi r27, 0x00 ; 0
be2: 3c 92 st X, r3
}
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->fademap[0][index] = red;
be4: d7 01 movw r26, r14
be6: 1c 92 st X, r1
this->fademap[1][index] = green;
be8: d8 01 movw r26, r16
bea: bc 92 st X, r11
this->fademap[2][index] = blue;
bec: d4 01 movw r26, r8
bee: 1c 92 st X, r1
this->fademap[3][index] = time;
bf0: 22 e3 ldi r18, 0x32 ; 50
bf2: d3 01 movw r26, r6
bf4: 2c 93 st X, r18
OCR2A = 0;
}
}
void fadeto(uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
this->setfadecolor(0, red, green, blue, time);
this->fade_zylk = 1;
bf6: d2 01 movw r26, r4
bf8: cc 92 st X, r12
doorstatus = 0;
bfa: 21 2c mov r2, r1
bfc: 87 e8 ldi r24, 0x87 ; 135
bfe: 93 e1 ldi r25, 0x13 ; 19
c00: 01 97 sbiw r24, 0x01 ; 1
c02: f1 f7 brne .-4 ; 0xc00 <main+0x5e8>
c04: 00 c0 rjmp .+0 ; 0xc06 <main+0x5ee>
c06: 00 00 nop
namespace avrlib {
2014-11-19 23:57:35 +01:00
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
c08: 29 98 cbi 0x05, 1 ; 5
c0a: 9f ed ldi r25, 0xDF ; 223
c0c: aa e0 ldi r26, 0x0A ; 10
c0e: b6 e0 ldi r27, 0x06 ; 6
c10: 91 50 subi r25, 0x01 ; 1
c12: a0 40 sbci r26, 0x00 ; 0
c14: b0 40 sbci r27, 0x00 ; 0
c16: e1 f7 brne .-8 ; 0xc10 <main+0x5f8>
c18: 00 c0 rjmp .+0 ; 0xc1a <main+0x602>
c1a: 00 00 nop
c1c: 29 9a sbi 0x05, 1 ; 5
c1e: 85 cd rjmp .-1270 ; 0x72a <main+0x112>
00000c20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>:
c20: 55 9a sbi 0x0a, 5 ; 10
c22: 53 9a sbi 0x0a, 3 ; 10
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
c24: 23 9a sbi 0x04, 3 ; 4
float virtualcolor[3];
void init() {
stripered::make_output();
stripegreen::make_output();
stripeblue::make_output();
this->fade_zylk = 0;
c26: fc 01 movw r30, r24
c28: 10 82 st Z, r1
// Mode: Phase correct PWM top=0xFF
// OC0A output: Disconnected
// Timer Period: 0,06375 ms
// Output Pulse(s):
// OC0B Period: 0,06375 ms Width: 0 us
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00);
c2a: 81 e0 ldi r24, 0x01 ; 1
c2c: 84 bd out 0x24, r24 ; 36
TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00);
c2e: 94 e0 ldi r25, 0x04 ; 4
c30: 95 bd out 0x25, r25 ; 37
TCNT0=0x00;
c32: 16 bc out 0x26, r1 ; 38
// Timer Period: 3,2768 ms
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
c34: 10 92 80 00 sts 0x0080, r1
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
c38: 92 e0 ldi r25, 0x02 ; 2
c3a: 90 93 81 00 sts 0x0081, r25
TCNT1H=0x00;
c3e: 10 92 85 00 sts 0x0085, r1
TCNT1L=0x00;
c42: 10 92 84 00 sts 0x0084, r1
// Mode: Phase correct PWM top=0xFF
// Timer Period: 0,06375 ms
// Output Pulse(s):
// OC2A Period: 0,06375 ms Width: 0 us
// OC2B Period: 0,06375 ms Width: 0 us
ASSR=(0<<EXCLK) | (0<<AS2);
c46: 10 92 b6 00 sts 0x00B6, r1
TCCR2A=(0<<COM2A0) | (0<<COM2B0) | (0<<WGM21) | (1<<WGM20);
c4a: e0 eb ldi r30, 0xB0 ; 176
c4c: f0 e0 ldi r31, 0x00 ; 0
c4e: 80 83 st Z, r24
TCCR2B=(0<<WGM22) | (1<<CS22) | (0<<CS21) | (1<<CS20);
c50: 95 e0 ldi r25, 0x05 ; 5
c52: 90 93 b1 00 sts 0x00B1, r25
TCNT2=0x00;
c56: 10 92 b2 00 sts 0x00B2, r1
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);
c5a: 10 92 6e 00 sts 0x006E, r1
// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
c5e: 80 93 6f 00 sts 0x006F, r24
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2);
c62: 10 92 70 00 sts 0x0070, r1
2014-11-19 23:57:35 +01:00
}
void timerOn() {
// OC0B output: Non-Inverted PWM
// OC2A output: Non-Inverted PWM
// OC2B output: Non-Inverted PWM
TCCR0A |= (1<<COM0B1);
c66: 84 b5 in r24, 0x24 ; 36
c68: 80 62 ori r24, 0x20 ; 32
c6a: 84 bd out 0x24, r24 ; 36
TCCR2A |= (1<<COM2A1) | (1<<COM2B1);
c6c: 80 81 ld r24, Z
c6e: 80 6a ori r24, 0xA0 ; 160
c70: 80 83 st Z, r24
this->initTimer();
this->color(0, 0, 0);
}
void sp(uint8_t i, uint8_t c) {
switch(i) {
case 0: OCR0B = c; break; //ROT
c72: 18 bc out 0x28, r1 ; 40
case 1: OCR2B = c; break; //GR<47>N
c74: 10 92 b4 00 sts 0x00B4, r1
case 2: OCR2A = c; break; //BLAU
c78: 10 92 b3 00 sts 0x00B3, r1
c7c: 08 95 ret
00000c7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>:
// Interrupt on any change on pins PCINT16-23: Off
EICRA=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);
EIMSK=(0<<INT1) | (1<<INT0);
EIFR=(0<<INTF1) | (0<<INTF0);
}
uint8_t read8bit() {
c7e: 20 e0 ldi r18, 0x00 ; 0
c80: 30 e0 ldi r19, 0x00 ; 0
uint8_t r = 0;
c82: 80 e0 ldi r24, 0x00 ; 0
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
c84: 61 e0 ldi r22, 0x01 ; 1
c86: 70 e0 ldi r23, 0x00 ; 0
static void set_high() { set(true); }
static void set_low() { set(false); }
static bool read() { return value(); }
static void pullup() { set_high(); }
static void wait_is_set() { do { } while (!(Port::pin() & (1<<Pin))); }
c88: 4a 9b sbis 0x09, 2 ; 9
c8a: fe cf rjmp .-4 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
c8c: ef e9 ldi r30, 0x9F ; 159
c8e: ff e0 ldi r31, 0x0F ; 15
c90: 31 97 sbiw r30, 0x01 ; 1
c92: f1 f7 brne .-4 ; 0xc90 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x12>
c94: 00 c0 rjmp .+0 ; 0xc96 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x18>
c96: 00 00 nop
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
c98: 4a 9b sbis 0x09, 2 ; 9
c9a: 08 c0 rjmp .+16 ; 0xcac <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e>
r |= (1<<i);
c9c: ab 01 movw r20, r22
c9e: 02 2e mov r0, r18
ca0: 02 c0 rjmp .+4 ; 0xca6 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x28>
ca2: 44 0f add r20, r20
ca4: 55 1f adc r21, r21
ca6: 0a 94 dec r0
ca8: e2 f7 brpl .-8 ; 0xca2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x24>
caa: 84 2b or r24, r20
}
for(uint8_t j=0;j<50;j++) {
if(!intpin::value()) {
cac: 4a 99 sbic 0x09, 2 ; 9
cae: 0f c0 rjmp .+30 ; 0xcce <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x50>
cb0: 08 c0 rjmp .+16 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44>
cb2: 4a 9b sbis 0x09, 2 ; 9
cb4: 06 c0 rjmp .+12 ; 0xcc2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x44>
cb6: f5 e8 ldi r31, 0x85 ; 133
cb8: fa 95 dec r31
cba: f1 f7 brne .-4 ; 0xcb8 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x3a>
cbc: 00 00 nop
cbe: 91 50 subi r25, 0x01 ; 1
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
}
for(uint8_t j=0;j<50;j++) {
cc0: c1 f7 brne .-16 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34>
cc2: 2f 5f subi r18, 0xFF ; 255
cc4: 3f 4f sbci r19, 0xFF ; 255
EIMSK=(0<<INT1) | (1<<INT0);
EIFR=(0<<INTF1) | (0<<INTF0);
}
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
cc6: 28 30 cpi r18, 0x08 ; 8
cc8: 31 05 cpc r19, r1
cca: f1 f6 brne .-68 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa>
ccc: 08 95 ret
cce: 45 e8 ldi r20, 0x85 ; 133
cd0: 4a 95 dec r20
cd2: f1 f7 brne .-4 ; 0xcd0 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x52>
cd4: 00 00 nop
cd6: 91 e3 ldi r25, 0x31 ; 49
cd8: ec cf rjmp .-40 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34>
00000cda <__vector_1>:
_delay_ms(99);
led.green(1);
}
}
ISR(INT0_vect) {
cda: 1f 92 push r1
cdc: 0f 92 push r0
cde: 0f b6 in r0, 0x3f ; 63
ce0: 0f 92 push r0
ce2: 11 24 eor r1, r1
ce4: 2f 93 push r18
ce6: 3f 93 push r19
ce8: 4f 93 push r20
cea: 5f 93 push r21
cec: 6f 93 push r22
cee: 7f 93 push r23
cf0: 8f 93 push r24
cf2: 9f 93 push r25
cf4: af 93 push r26
cf6: bf 93 push r27
cf8: cf 93 push r28
cfa: ef 93 push r30
cfc: ff 93 push r31
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
cfe: 28 9a sbi 0x05, 0 ; 5
public:
IR() {
this->init();
}
int read() {
if(intpin::value()) { //Is High, Abbort
d00: 4a 99 sbic 0x09, 2 ; 9
d02: 79 c0 rjmp .+242 ; 0xdf6 <__vector_1+0x11c>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
d04: 8f e1 ldi r24, 0x1F ; 31
d06: 9e e4 ldi r25, 0x4E ; 78
d08: 01 97 sbiw r24, 0x01 ; 1
d0a: f1 f7 brne .-4 ; 0xd08 <__vector_1+0x2e>
d0c: 00 c0 rjmp .+0 ; 0xd0e <__vector_1+0x34>
d0e: 00 00 nop
return 254;
2014-11-19 23:57:35 +01:00
}
_delay_ms(4); //Wait 4ms
if(intpin::value()) { //Is High, Abbort
d10: 4a 99 sbic 0x09, 2 ; 9
d12: 71 c0 rjmp .+226 ; 0xdf6 <__vector_1+0x11c>
d14: 4a 9b sbis 0x09, 2 ; 9
d16: fe cf rjmp .-4 ; 0xd14 <__vector_1+0x3a>
static void wait_is_clear() { do {} while ((Port::pin() & (1<<Pin))); }
d18: 4a 99 sbic 0x09, 2 ; 9
d1a: fe cf rjmp .-4 ; 0xd18 <__vector_1+0x3e>
d1c: 80 e0 ldi r24, 0x00 ; 0
d1e: 90 e0 ldi r25, 0x00 ; 0
d20: 60 e0 ldi r22, 0x00 ; 0
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
d22: 41 e0 ldi r20, 0x01 ; 1
d24: 50 e0 ldi r21, 0x00 ; 0
static void set_high() { set(true); }
static void set_low() { set(false); }
static bool read() { return value(); }
static void pullup() { set_high(); }
static void wait_is_set() { do { } while (!(Port::pin() & (1<<Pin))); }
d26: 4a 9b sbis 0x09, 2 ; 9
d28: fe cf rjmp .-4 ; 0xd26 <__vector_1+0x4c>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
d2a: ef e9 ldi r30, 0x9F ; 159
d2c: ff e0 ldi r31, 0x0F ; 15
d2e: 31 97 sbiw r30, 0x01 ; 1
d30: f1 f7 brne .-4 ; 0xd2e <__vector_1+0x54>
d32: 00 c0 rjmp .+0 ; 0xd34 <__vector_1+0x5a>
d34: 00 00 nop
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
d36: 4a 9b sbis 0x09, 2 ; 9
d38: 08 c0 rjmp .+16 ; 0xd4a <__vector_1+0x70>
r |= (1<<i);
d3a: 9a 01 movw r18, r20
d3c: 08 2e mov r0, r24
d3e: 02 c0 rjmp .+4 ; 0xd44 <__vector_1+0x6a>
d40: 22 0f add r18, r18
d42: 33 1f adc r19, r19
d44: 0a 94 dec r0
d46: e2 f7 brpl .-8 ; 0xd40 <__vector_1+0x66>
d48: 62 2b or r22, r18
}
for(uint8_t j=0;j<50;j++) {
if(!intpin::value()) {
d4a: 4a 99 sbic 0x09, 2 ; 9
d4c: 66 c0 rjmp .+204 ; 0xe1a <__vector_1+0x140>
d4e: 08 c0 rjmp .+16 ; 0xd60 <__vector_1+0x86>
d50: 4a 9b sbis 0x09, 2 ; 9
d52: 06 c0 rjmp .+12 ; 0xd60 <__vector_1+0x86>
d54: f5 e8 ldi r31, 0x85 ; 133
d56: fa 95 dec r31
d58: f1 f7 brne .-4 ; 0xd56 <__vector_1+0x7c>
d5a: 00 00 nop
d5c: 21 50 subi r18, 0x01 ; 1
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
}
for(uint8_t j=0;j<50;j++) {
d5e: c1 f7 brne .-16 ; 0xd50 <__vector_1+0x76>
d60: 01 96 adiw r24, 0x01 ; 1
EIMSK=(0<<INT1) | (1<<INT0);
EIFR=(0<<INTF1) | (0<<INTF0);
}
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
d62: 88 30 cpi r24, 0x08 ; 8
d64: 91 05 cpc r25, r1
d66: f9 f6 brne .-66 ; 0xd26 <__vector_1+0x4c>
}
intpin::wait_is_set(); //Wait for the rest of the init.
intpin::wait_is_clear(); // Init Complete, wait for first Byte
//Read First Byte must be 0!
if(this->read8bit() != 0) { //Is first Byte not 0 Abbort;
d68: 61 11 cpse r22, r1
d6a: 39 c0 rjmp .+114 ; 0xdde <__vector_1+0x104>
d6c: 80 e0 ldi r24, 0x00 ; 0
d6e: 90 e0 ldi r25, 0x00 ; 0
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
d70: 41 e0 ldi r20, 0x01 ; 1
d72: 50 e0 ldi r21, 0x00 ; 0
d74: 4a 9b sbis 0x09, 2 ; 9
d76: fe cf rjmp .-4 ; 0xd74 <__vector_1+0x9a>
d78: ef e9 ldi r30, 0x9F ; 159
d7a: ff e0 ldi r31, 0x0F ; 15
d7c: 31 97 sbiw r30, 0x01 ; 1
d7e: f1 f7 brne .-4 ; 0xd7c <__vector_1+0xa2>
d80: 00 c0 rjmp .+0 ; 0xd82 <__vector_1+0xa8>
d82: 00 00 nop
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
d84: 4a 9b sbis 0x09, 2 ; 9
d86: 08 c0 rjmp .+16 ; 0xd98 <__vector_1+0xbe>
r |= (1<<i);
d88: 9a 01 movw r18, r20
d8a: 08 2e mov r0, r24
d8c: 02 c0 rjmp .+4 ; 0xd92 <__vector_1+0xb8>
d8e: 22 0f add r18, r18
d90: 33 1f adc r19, r19
d92: 0a 94 dec r0
d94: e2 f7 brpl .-8 ; 0xd8e <__vector_1+0xb4>
d96: 62 2b or r22, r18
}
for(uint8_t j=0;j<50;j++) {
if(!intpin::value()) {
d98: 4a 99 sbic 0x09, 2 ; 9
d9a: 39 c0 rjmp .+114 ; 0xe0e <__vector_1+0x134>
d9c: 08 c0 rjmp .+16 ; 0xdae <__vector_1+0xd4>
d9e: 4a 9b sbis 0x09, 2 ; 9
da0: 06 c0 rjmp .+12 ; 0xdae <__vector_1+0xd4>
da2: f5 e8 ldi r31, 0x85 ; 133
da4: fa 95 dec r31
da6: f1 f7 brne .-4 ; 0xda4 <__vector_1+0xca>
da8: 00 00 nop
daa: 21 50 subi r18, 0x01 ; 1
intpin::wait_is_set();
_delay_us(800);
if(intpin::read()) {
r |= (1<<i);
}
for(uint8_t j=0;j<50;j++) {
dac: c1 f7 brne .-16 ; 0xd9e <__vector_1+0xc4>
dae: 01 96 adiw r24, 0x01 ; 1
EIMSK=(0<<INT1) | (1<<INT0);
EIFR=(0<<INTF1) | (0<<INTF0);
}
uint8_t read8bit() {
uint8_t r = 0;
for (uint8_t i=0;i<8;i++) {
db0: 88 30 cpi r24, 0x08 ; 8
db2: 91 05 cpc r25, r1
db4: f9 f6 brne .-66 ; 0xd74 <__vector_1+0x9a>
//Read First Byte must be 0!
if(this->read8bit() != 0) { //Is first Byte not 0 Abbort;
return 255;
}
//Read Second Byte must be 239!
if(this->read8bit() != 239) {
db6: 6f 3e cpi r22, 0xEF ; 239
db8: 91 f4 brne .+36 ; 0xdde <__vector_1+0x104>
return 255;
}
//Read Byte 3 and 4 (Data Byte and Checksum Byte!
uint8_t a = this->read8bit();
dba: 84 e8 ldi r24, 0x84 ; 132
dbc: 91 e0 ldi r25, 0x01 ; 1
dbe: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>
dc2: c8 2f mov r28, r24
uint8_t b = this->read8bit();
dc4: 84 e8 ldi r24, 0x84 ; 132
dc6: 91 e0 ldi r25, 0x01 ; 1
dc8: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>
//Make Checksum Byte 3 + 4 must be 255!
if(a+b != 255) {
dcc: 28 2f mov r18, r24
dce: 30 e0 ldi r19, 0x00 ; 0
dd0: 2c 0f add r18, r28
dd2: 31 1d adc r19, r1
dd4: 2f 3f cpi r18, 0xFF ; 255
dd6: 31 05 cpc r19, r1
dd8: 11 f4 brne .+4 ; 0xdde <__vector_1+0x104>
}
//The Interrupt Function
void interrupt() {
led.red(1);
uint8_t code = this->read();
if(code == 255) {
dda: cf 3f cpi r28, 0xFF ; 255
ddc: 51 f4 brne .+20 ; 0xdf2 <__vector_1+0x118>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
dde: 2f e7 ldi r18, 0x7F ; 127
de0: 34 e8 ldi r19, 0x84 ; 132
de2: 8e e1 ldi r24, 0x1E ; 30
de4: 21 50 subi r18, 0x01 ; 1
de6: 30 40 sbci r19, 0x00 ; 0
de8: 80 40 sbci r24, 0x00 ; 0
dea: e1 f7 brne .-8 ; 0xde4 <__vector_1+0x10a>
dec: 00 c0 rjmp .+0 ; 0xdee <__vector_1+0x114>
dee: 00 00 nop
df0: 0b c0 rjmp .+22 ; 0xe08 <__vector_1+0x12e>
_delay_ms(500);
} else if(code == 254) {
df2: ce 3f cpi r28, 0xFE ; 254
df4: 39 f4 brne .+14 ; 0xe04 <__vector_1+0x12a>
df6: e7 e8 ldi r30, 0x87 ; 135
df8: f3 e1 ldi r31, 0x13 ; 19
dfa: 31 97 sbiw r30, 0x01 ; 1
dfc: f1 f7 brne .-4 ; 0xdfa <__vector_1+0x120>
dfe: 00 c0 rjmp .+0 ; 0xe00 <__vector_1+0x126>
e00: 00 00 nop
e02: 02 c0 rjmp .+4 ; 0xe08 <__vector_1+0x12e>
_delay_ms(1);
} else {
this->_code = code;
e04: c0 93 85 01 sts 0x0185, r28
e08: 28 98 cbi 0x05, 0 ; 5
}
led.red(0);
EIFR |= (1<<INTF0);
e0a: e0 9a sbi 0x1c, 0 ; 28
e0c: 0c c0 rjmp .+24 ; 0xe26 <__vector_1+0x14c>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
e0e: f5 e8 ldi r31, 0x85 ; 133
e10: fa 95 dec r31
e12: f1 f7 brne .-4 ; 0xe10 <__vector_1+0x136>
e14: 00 00 nop
e16: 21 e3 ldi r18, 0x31 ; 49
e18: c2 cf rjmp .-124 ; 0xd9e <__vector_1+0xc4>
e1a: 25 e8 ldi r18, 0x85 ; 133
e1c: 2a 95 dec r18
e1e: f1 f7 brne .-4 ; 0xe1c <__vector_1+0x142>
e20: 00 00 nop
e22: 21 e3 ldi r18, 0x31 ; 49
e24: 95 cf rjmp .-214 ; 0xd50 <__vector_1+0x76>
ir.interrupt();
}
e26: ff 91 pop r31
e28: ef 91 pop r30
e2a: cf 91 pop r28
e2c: bf 91 pop r27
e2e: af 91 pop r26
e30: 9f 91 pop r25
e32: 8f 91 pop r24
e34: 7f 91 pop r23
e36: 6f 91 pop r22
e38: 5f 91 pop r21
e3a: 4f 91 pop r20
e3c: 3f 91 pop r19
e3e: 2f 91 pop r18
e40: 0f 90 pop r0
e42: 0f be out 0x3f, r0 ; 63
e44: 0f 90 pop r0
e46: 1f 90 pop r1
e48: 18 95 reti
00000e4a <_GLOBAL__sub_I_Serial>:
*/
#include "peripheral.h"
#include <util/delay.h>
uartclass Serial;
e4a: 85 eb ldi r24, 0xB5 ; 181
e4c: 91 e0 ldi r25, 0x01 ; 1
e4e: 0e 94 a0 02 call 0x540 ; 0x540 <_ZN4UartILm9600EEC1Ev>
template <typename PortR, int pin_red, typename PortG, int pin_green, typename PortB, int pin_blue>
class Stripe {
public:
Stripe() {
this->init();
e52: 88 e8 ldi r24, 0x88 ; 136
e54: 91 e0 ldi r25, 0x01 ; 1
e56: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN6StripeIN6avrlib5portdELi5ES1_Li3ENS0_5portbELi3EE4initEv>
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e5a: 20 9a sbi 0x04, 0 ; 4
e5c: 21 9a sbi 0x04, 1 ; 4
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e5e: 28 98 cbi 0x05, 0 ; 5
e60: 29 98 cbi 0x05, 1 ; 5
e62: 56 98 cbi 0x0a, 6 ; 10
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
e64: 5e 98 cbi 0x0b, 6 ; 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; }
e66: 57 98 cbi 0x0a, 7 ; 10
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
e68: 5f 98 cbi 0x0b, 7 ; 11
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=(0<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
e6a: 10 be out 0x30, r1 ; 48
ADCSRB=(0<<ACME);
e6c: 10 92 7b 00 sts 0x007B, r1
// Digital input buffer on AIN0: Off
// Digital input buffer on AIN1: Off
DIDR1=(1<<AIN0D) | (1<<AIN1D);
e70: 83 e0 ldi r24, 0x03 ; 3
e72: 80 93 7f 00 sts 0x007F, r24
static uint8_t pin() { return PINB; }
static void pin(uint8_t v) { PINB = v; }
static uint8_t dir() { return DDRB; }
static void dir(uint8_t v) { DDRB = v; }
e76: 20 9a sbi 0x04, 0 ; 4
e78: 21 9a sbi 0x04, 1 ; 4
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e7a: 28 98 cbi 0x05, 0 ; 5
e7c: 29 98 cbi 0x05, 1 ; 5
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; }
e7e: 52 98 cbi 0x0a, 2 ; 10
namespace avrlib {
struct portd
{
static uint8_t port() { return PORTD; }
static void port(uint8_t v) { PORTD = v; }
e80: 5a 98 cbi 0x0b, 2 ; 11
private:
Led led;
uint8_t _code;
void init() {
intpin::make_input();
this->_code = 255;
e82: 8f ef ldi r24, 0xFF ; 255
e84: 80 93 85 01 sts 0x0185, r24
// INT0 Mode: Falling Edge
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-14: Off
// Interrupt on any change on pins PCINT16-23: Off
EICRA=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);
e88: 82 e0 ldi r24, 0x02 ; 2
e8a: 80 93 69 00 sts 0x0069, r24
EIMSK=(0<<INT1) | (1<<INT0);
e8e: 81 e0 ldi r24, 0x01 ; 1
e90: 8d bb out 0x1d, r24 ; 29
EIFR=(0<<INTF1) | (0<<INTF0);
e92: 1c ba out 0x1c, r1 ; 28
e94: 08 95 ret
00000e96 <__subsf3>:
e96: 50 58 subi r21, 0x80 ; 128
00000e98 <__addsf3>:
e98: bb 27 eor r27, r27
e9a: aa 27 eor r26, r26
e9c: 0e d0 rcall .+28 ; 0xeba <__addsf3x>
e9e: 08 c1 rjmp .+528 ; 0x10b0 <__fp_round>
ea0: f9 d0 rcall .+498 ; 0x1094 <__fp_pscA>
ea2: 30 f0 brcs .+12 ; 0xeb0 <__addsf3+0x18>
ea4: fe d0 rcall .+508 ; 0x10a2 <__fp_pscB>
ea6: 20 f0 brcs .+8 ; 0xeb0 <__addsf3+0x18>
ea8: 31 f4 brne .+12 ; 0xeb6 <__addsf3+0x1e>
eaa: 9f 3f cpi r25, 0xFF ; 255
eac: 11 f4 brne .+4 ; 0xeb2 <__addsf3+0x1a>
eae: 1e f4 brtc .+6 ; 0xeb6 <__addsf3+0x1e>
eb0: ee c0 rjmp .+476 ; 0x108e <__fp_nan>
eb2: 0e f4 brtc .+2 ; 0xeb6 <__addsf3+0x1e>
eb4: e0 95 com r30
eb6: e7 fb bst r30, 7
eb8: e4 c0 rjmp .+456 ; 0x1082 <__fp_inf>
00000eba <__addsf3x>:
eba: e9 2f mov r30, r25
ebc: 0a d1 rcall .+532 ; 0x10d2 <__fp_split3>
ebe: 80 f3 brcs .-32 ; 0xea0 <__addsf3+0x8>
ec0: ba 17 cp r27, r26
ec2: 62 07 cpc r22, r18
ec4: 73 07 cpc r23, r19
ec6: 84 07 cpc r24, r20
ec8: 95 07 cpc r25, r21
eca: 18 f0 brcs .+6 ; 0xed2 <__addsf3x+0x18>
ecc: 71 f4 brne .+28 ; 0xeea <__addsf3x+0x30>
ece: 9e f5 brtc .+102 ; 0xf36 <__addsf3x+0x7c>
ed0: 22 c1 rjmp .+580 ; 0x1116 <__fp_zero>
ed2: 0e f4 brtc .+2 ; 0xed6 <__addsf3x+0x1c>
ed4: e0 95 com r30
ed6: 0b 2e mov r0, r27
ed8: ba 2f mov r27, r26
eda: a0 2d mov r26, r0
edc: 0b 01 movw r0, r22
ede: b9 01 movw r22, r18
ee0: 90 01 movw r18, r0
ee2: 0c 01 movw r0, r24
ee4: ca 01 movw r24, r20
ee6: a0 01 movw r20, r0
ee8: 11 24 eor r1, r1
eea: ff 27 eor r31, r31
eec: 59 1b sub r21, r25
eee: 99 f0 breq .+38 ; 0xf16 <__addsf3x+0x5c>
ef0: 59 3f cpi r21, 0xF9 ; 249
ef2: 50 f4 brcc .+20 ; 0xf08 <__addsf3x+0x4e>
ef4: 50 3e cpi r21, 0xE0 ; 224
ef6: 68 f1 brcs .+90 ; 0xf52 <__addsf3x+0x98>
ef8: 1a 16 cp r1, r26
efa: f0 40 sbci r31, 0x00 ; 0
efc: a2 2f mov r26, r18
efe: 23 2f mov r18, r19
f00: 34 2f mov r19, r20
f02: 44 27 eor r20, r20
f04: 58 5f subi r21, 0xF8 ; 248
f06: f3 cf rjmp .-26 ; 0xeee <__addsf3x+0x34>
f08: 46 95 lsr r20
f0a: 37 95 ror r19
f0c: 27 95 ror r18
f0e: a7 95 ror r26
f10: f0 40 sbci r31, 0x00 ; 0
f12: 53 95 inc r21
f14: c9 f7 brne .-14 ; 0xf08 <__addsf3x+0x4e>
f16: 7e f4 brtc .+30 ; 0xf36 <__addsf3x+0x7c>
f18: 1f 16 cp r1, r31
f1a: ba 0b sbc r27, r26
f1c: 62 0b sbc r22, r18
f1e: 73 0b sbc r23, r19
f20: 84 0b sbc r24, r20
f22: ba f0 brmi .+46 ; 0xf52 <__addsf3x+0x98>
f24: 91 50 subi r25, 0x01 ; 1
f26: a1 f0 breq .+40 ; 0xf50 <__addsf3x+0x96>
f28: ff 0f add r31, r31
f2a: bb 1f adc r27, r27
f2c: 66 1f adc r22, r22
f2e: 77 1f adc r23, r23
f30: 88 1f adc r24, r24
f32: c2 f7 brpl .-16 ; 0xf24 <__addsf3x+0x6a>
f34: 0e c0 rjmp .+28 ; 0xf52 <__addsf3x+0x98>
f36: ba 0f add r27, r26
f38: 62 1f adc r22, r18
f3a: 73 1f adc r23, r19
f3c: 84 1f adc r24, r20
f3e: 48 f4 brcc .+18 ; 0xf52 <__addsf3x+0x98>
f40: 87 95 ror r24
f42: 77 95 ror r23
f44: 67 95 ror r22
f46: b7 95 ror r27
f48: f7 95 ror r31
f4a: 9e 3f cpi r25, 0xFE ; 254
f4c: 08 f0 brcs .+2 ; 0xf50 <__addsf3x+0x96>
f4e: b3 cf rjmp .-154 ; 0xeb6 <__addsf3+0x1e>
f50: 93 95 inc r25
f52: 88 0f add r24, r24
f54: 08 f0 brcs .+2 ; 0xf58 <__addsf3x+0x9e>
f56: 99 27 eor r25, r25
f58: ee 0f add r30, r30
f5a: 97 95 ror r25
f5c: 87 95 ror r24
f5e: 08 95 ret
00000f60 <__cmpsf2>:
f60: 6c d0 rcall .+216 ; 0x103a <__fp_cmp>
f62: 08 f4 brcc .+2 ; 0xf66 <__cmpsf2+0x6>
f64: 81 e0 ldi r24, 0x01 ; 1
f66: 08 95 ret
00000f68 <__fixunssfsi>:
f68: bc d0 rcall .+376 ; 0x10e2 <__fp_splitA>
f6a: 88 f0 brcs .+34 ; 0xf8e <__fixunssfsi+0x26>
f6c: 9f 57 subi r25, 0x7F ; 127
f6e: 90 f0 brcs .+36 ; 0xf94 <__fixunssfsi+0x2c>
f70: b9 2f mov r27, r25
f72: 99 27 eor r25, r25
f74: b7 51 subi r27, 0x17 ; 23
f76: a0 f0 brcs .+40 ; 0xfa0 <__fixunssfsi+0x38>
f78: d1 f0 breq .+52 ; 0xfae <__fixunssfsi+0x46>
f7a: 66 0f add r22, r22
f7c: 77 1f adc r23, r23
f7e: 88 1f adc r24, r24
f80: 99 1f adc r25, r25
f82: 1a f0 brmi .+6 ; 0xf8a <__fixunssfsi+0x22>
f84: ba 95 dec r27
f86: c9 f7 brne .-14 ; 0xf7a <__fixunssfsi+0x12>
f88: 12 c0 rjmp .+36 ; 0xfae <__fixunssfsi+0x46>
f8a: b1 30 cpi r27, 0x01 ; 1
f8c: 81 f0 breq .+32 ; 0xfae <__fixunssfsi+0x46>
f8e: c3 d0 rcall .+390 ; 0x1116 <__fp_zero>
f90: b1 e0 ldi r27, 0x01 ; 1
f92: 08 95 ret
f94: c0 c0 rjmp .+384 ; 0x1116 <__fp_zero>
f96: 67 2f mov r22, r23
f98: 78 2f mov r23, r24
f9a: 88 27 eor r24, r24
f9c: b8 5f subi r27, 0xF8 ; 248
f9e: 39 f0 breq .+14 ; 0xfae <__fixunssfsi+0x46>
fa0: b9 3f cpi r27, 0xF9 ; 249
fa2: cc f3 brlt .-14 ; 0xf96 <__fixunssfsi+0x2e>
fa4: 86 95 lsr r24
fa6: 77 95 ror r23
fa8: 67 95 ror r22
faa: b3 95 inc r27
fac: d9 f7 brne .-10 ; 0xfa4 <__fixunssfsi+0x3c>
fae: 3e f4 brtc .+14 ; 0xfbe <__fixunssfsi+0x56>
fb0: 90 95 com r25
fb2: 80 95 com r24
fb4: 70 95 com r23
fb6: 61 95 neg r22
fb8: 7f 4f sbci r23, 0xFF ; 255
fba: 8f 4f sbci r24, 0xFF ; 255
fbc: 9f 4f sbci r25, 0xFF ; 255
fbe: 08 95 ret
00000fc0 <__floatunsisf>:
fc0: e8 94 clt
fc2: 09 c0 rjmp .+18 ; 0xfd6 <__floatsisf+0x12>
00000fc4 <__floatsisf>:
fc4: 97 fb bst r25, 7
fc6: 3e f4 brtc .+14 ; 0xfd6 <__floatsisf+0x12>
fc8: 90 95 com r25
fca: 80 95 com r24
fcc: 70 95 com r23
fce: 61 95 neg r22
fd0: 7f 4f sbci r23, 0xFF ; 255
fd2: 8f 4f sbci r24, 0xFF ; 255
fd4: 9f 4f sbci r25, 0xFF ; 255
fd6: 99 23 and r25, r25
fd8: a9 f0 breq .+42 ; 0x1004 <__floatsisf+0x40>
fda: f9 2f mov r31, r25
fdc: 96 e9 ldi r25, 0x96 ; 150
fde: bb 27 eor r27, r27
fe0: 93 95 inc r25
fe2: f6 95 lsr r31
fe4: 87 95 ror r24
fe6: 77 95 ror r23
fe8: 67 95 ror r22
fea: b7 95 ror r27
fec: f1 11 cpse r31, r1
fee: f8 cf rjmp .-16 ; 0xfe0 <__floatsisf+0x1c>
ff0: fa f4 brpl .+62 ; 0x1030 <__floatsisf+0x6c>
ff2: bb 0f add r27, r27
ff4: 11 f4 brne .+4 ; 0xffa <__floatsisf+0x36>
ff6: 60 ff sbrs r22, 0
ff8: 1b c0 rjmp .+54 ; 0x1030 <__floatsisf+0x6c>
ffa: 6f 5f subi r22, 0xFF ; 255
ffc: 7f 4f sbci r23, 0xFF ; 255
ffe: 8f 4f sbci r24, 0xFF ; 255
1000: 9f 4f sbci r25, 0xFF ; 255
1002: 16 c0 rjmp .+44 ; 0x1030 <__floatsisf+0x6c>
1004: 88 23 and r24, r24
1006: 11 f0 breq .+4 ; 0x100c <__floatsisf+0x48>
1008: 96 e9 ldi r25, 0x96 ; 150
100a: 11 c0 rjmp .+34 ; 0x102e <__floatsisf+0x6a>
100c: 77 23 and r23, r23
100e: 21 f0 breq .+8 ; 0x1018 <__floatsisf+0x54>
1010: 9e e8 ldi r25, 0x8E ; 142
1012: 87 2f mov r24, r23
1014: 76 2f mov r23, r22
1016: 05 c0 rjmp .+10 ; 0x1022 <__floatsisf+0x5e>
1018: 66 23 and r22, r22
101a: 71 f0 breq .+28 ; 0x1038 <__floatsisf+0x74>
101c: 96 e8 ldi r25, 0x86 ; 134
101e: 86 2f mov r24, r22
1020: 70 e0 ldi r23, 0x00 ; 0
1022: 60 e0 ldi r22, 0x00 ; 0
1024: 2a f0 brmi .+10 ; 0x1030 <__floatsisf+0x6c>
1026: 9a 95 dec r25
1028: 66 0f add r22, r22
102a: 77 1f adc r23, r23
102c: 88 1f adc r24, r24
102e: da f7 brpl .-10 ; 0x1026 <__floatsisf+0x62>
1030: 88 0f add r24, r24
1032: 96 95 lsr r25
1034: 87 95 ror r24
1036: 97 f9 bld r25, 7
1038: 08 95 ret
0000103a <__fp_cmp>:
103a: 99 0f add r25, r25
103c: 00 08 sbc r0, r0
103e: 55 0f add r21, r21
1040: aa 0b sbc r26, r26
1042: e0 e8 ldi r30, 0x80 ; 128
1044: fe ef ldi r31, 0xFE ; 254
1046: 16 16 cp r1, r22
1048: 17 06 cpc r1, r23
104a: e8 07 cpc r30, r24
104c: f9 07 cpc r31, r25
104e: c0 f0 brcs .+48 ; 0x1080 <__fp_cmp+0x46>
1050: 12 16 cp r1, r18
1052: 13 06 cpc r1, r19
1054: e4 07 cpc r30, r20
1056: f5 07 cpc r31, r21
1058: 98 f0 brcs .+38 ; 0x1080 <__fp_cmp+0x46>
105a: 62 1b sub r22, r18
105c: 73 0b sbc r23, r19
105e: 84 0b sbc r24, r20
1060: 95 0b sbc r25, r21
1062: 39 f4 brne .+14 ; 0x1072 <__fp_cmp+0x38>
1064: 0a 26 eor r0, r26
1066: 61 f0 breq .+24 ; 0x1080 <__fp_cmp+0x46>
1068: 23 2b or r18, r19
106a: 24 2b or r18, r20
106c: 25 2b or r18, r21
106e: 21 f4 brne .+8 ; 0x1078 <__fp_cmp+0x3e>
1070: 08 95 ret
1072: 0a 26 eor r0, r26
1074: 09 f4 brne .+2 ; 0x1078 <__fp_cmp+0x3e>
1076: a1 40 sbci r26, 0x01 ; 1
1078: a6 95 lsr r26
107a: 8f ef ldi r24, 0xFF ; 255
107c: 81 1d adc r24, r1
107e: 81 1d adc r24, r1
1080: 08 95 ret
00001082 <__fp_inf>:
1082: 97 f9 bld r25, 7
1084: 9f 67 ori r25, 0x7F ; 127
1086: 80 e8 ldi r24, 0x80 ; 128
1088: 70 e0 ldi r23, 0x00 ; 0
108a: 60 e0 ldi r22, 0x00 ; 0
108c: 08 95 ret
0000108e <__fp_nan>:
108e: 9f ef ldi r25, 0xFF ; 255
1090: 80 ec ldi r24, 0xC0 ; 192
1092: 08 95 ret
00001094 <__fp_pscA>:
1094: 00 24 eor r0, r0
1096: 0a 94 dec r0
1098: 16 16 cp r1, r22
109a: 17 06 cpc r1, r23
109c: 18 06 cpc r1, r24
109e: 09 06 cpc r0, r25
10a0: 08 95 ret
000010a2 <__fp_pscB>:
10a2: 00 24 eor r0, r0
10a4: 0a 94 dec r0
10a6: 12 16 cp r1, r18
10a8: 13 06 cpc r1, r19
10aa: 14 06 cpc r1, r20
10ac: 05 06 cpc r0, r21
10ae: 08 95 ret
000010b0 <__fp_round>:
10b0: 09 2e mov r0, r25
10b2: 03 94 inc r0
10b4: 00 0c add r0, r0
10b6: 11 f4 brne .+4 ; 0x10bc <__fp_round+0xc>
10b8: 88 23 and r24, r24
10ba: 52 f0 brmi .+20 ; 0x10d0 <__fp_round+0x20>
10bc: bb 0f add r27, r27
10be: 40 f4 brcc .+16 ; 0x10d0 <__fp_round+0x20>
10c0: bf 2b or r27, r31
10c2: 11 f4 brne .+4 ; 0x10c8 <__fp_round+0x18>
10c4: 60 ff sbrs r22, 0
10c6: 04 c0 rjmp .+8 ; 0x10d0 <__fp_round+0x20>
10c8: 6f 5f subi r22, 0xFF ; 255
10ca: 7f 4f sbci r23, 0xFF ; 255
10cc: 8f 4f sbci r24, 0xFF ; 255
10ce: 9f 4f sbci r25, 0xFF ; 255
10d0: 08 95 ret
000010d2 <__fp_split3>:
10d2: 57 fd sbrc r21, 7
10d4: 90 58 subi r25, 0x80 ; 128
10d6: 44 0f add r20, r20
10d8: 55 1f adc r21, r21
10da: 59 f0 breq .+22 ; 0x10f2 <__fp_splitA+0x10>
10dc: 5f 3f cpi r21, 0xFF ; 255
10de: 71 f0 breq .+28 ; 0x10fc <__fp_splitA+0x1a>
10e0: 47 95 ror r20
000010e2 <__fp_splitA>:
10e2: 88 0f add r24, r24
10e4: 97 fb bst r25, 7
10e6: 99 1f adc r25, r25
10e8: 61 f0 breq .+24 ; 0x1102 <__fp_splitA+0x20>
10ea: 9f 3f cpi r25, 0xFF ; 255
10ec: 79 f0 breq .+30 ; 0x110c <__fp_splitA+0x2a>
10ee: 87 95 ror r24
10f0: 08 95 ret
10f2: 12 16 cp r1, r18
10f4: 13 06 cpc r1, r19
10f6: 14 06 cpc r1, r20
10f8: 55 1f adc r21, r21
10fa: f2 cf rjmp .-28 ; 0x10e0 <__fp_split3+0xe>
10fc: 46 95 lsr r20
10fe: f1 df rcall .-30 ; 0x10e2 <__fp_splitA>
1100: 08 c0 rjmp .+16 ; 0x1112 <__fp_splitA+0x30>
1102: 16 16 cp r1, r22
1104: 17 06 cpc r1, r23
1106: 18 06 cpc r1, r24
1108: 99 1f adc r25, r25
110a: f1 cf rjmp .-30 ; 0x10ee <__fp_splitA+0xc>
110c: 86 95 lsr r24
110e: 71 05 cpc r23, r1
1110: 61 05 cpc r22, r1
1112: 08 94 sec
1114: 08 95 ret
00001116 <__fp_zero>:
1116: e8 94 clt
00001118 <__fp_szero>:
1118: bb 27 eor r27, r27
111a: 66 27 eor r22, r22
111c: 77 27 eor r23, r23
111e: cb 01 movw r24, r22
1120: 97 f9 bld r25, 7
1122: 08 95 ret
00001124 <__gesf2>:
1124: 8a df rcall .-236 ; 0x103a <__fp_cmp>
1126: 08 f4 brcc .+2 ; 0x112a <__gesf2+0x6>
1128: 8f ef ldi r24, 0xFF ; 255
112a: 08 95 ret
0000112c <__divmodhi4>:
112c: 97 fb bst r25, 7
112e: 07 2e mov r0, r23
1130: 16 f4 brtc .+4 ; 0x1136 <__divmodhi4+0xa>
1132: 00 94 com r0
1134: 07 d0 rcall .+14 ; 0x1144 <__divmodhi4_neg1>
1136: 77 fd sbrc r23, 7
1138: 09 d0 rcall .+18 ; 0x114c <__divmodhi4_neg2>
113a: 0e 94 b6 08 call 0x116c ; 0x116c <__udivmodhi4>
113e: 07 fc sbrc r0, 7
1140: 05 d0 rcall .+10 ; 0x114c <__divmodhi4_neg2>
1142: 3e f4 brtc .+14 ; 0x1152 <__divmodhi4_exit>
00001144 <__divmodhi4_neg1>:
1144: 90 95 com r25
1146: 81 95 neg r24
1148: 9f 4f sbci r25, 0xFF ; 255
114a: 08 95 ret
0000114c <__divmodhi4_neg2>:
114c: 70 95 com r23
114e: 61 95 neg r22
1150: 7f 4f sbci r23, 0xFF ; 255
00001152 <__divmodhi4_exit>:
1152: 08 95 ret
00001154 <__umulhisi3>:
1154: a2 9f mul r26, r18
1156: b0 01 movw r22, r0
1158: b3 9f mul r27, r19
115a: c0 01 movw r24, r0
115c: a3 9f mul r26, r19
115e: 01 d0 rcall .+2 ; 0x1162 <__umulhisi3+0xe>
1160: b2 9f mul r27, r18
1162: 70 0d add r23, r0
1164: 81 1d adc r24, r1
1166: 11 24 eor r1, r1
1168: 91 1d adc r25, r1
116a: 08 95 ret
0000116c <__udivmodhi4>:
116c: aa 1b sub r26, r26
116e: bb 1b sub r27, r27
1170: 51 e1 ldi r21, 0x11 ; 17
1172: 07 c0 rjmp .+14 ; 0x1182 <__udivmodhi4_ep>
00001174 <__udivmodhi4_loop>:
1174: aa 1f adc r26, r26
1176: bb 1f adc r27, r27
1178: a6 17 cp r26, r22
117a: b7 07 cpc r27, r23
117c: 10 f0 brcs .+4 ; 0x1182 <__udivmodhi4_ep>
117e: a6 1b sub r26, r22
1180: b7 0b sbc r27, r23
00001182 <__udivmodhi4_ep>:
1182: 88 1f adc r24, r24
1184: 99 1f adc r25, r25
1186: 5a 95 dec r21
1188: a9 f7 brne .-22 ; 0x1174 <__udivmodhi4_loop>
118a: 80 95 com r24
118c: 90 95 com r25
118e: bc 01 movw r22, r24
1190: cd 01 movw r24, r26
1192: 08 95 ret
00001194 <__tablejump2__>:
1194: ee 0f add r30, r30
1196: ff 1f adc r31, r31
00001198 <__tablejump__>:
1198: 05 90 lpm r0, Z+
119a: f4 91 lpm r31, Z
119c: e0 2d mov r30, r0
119e: 09 94 ijmp
000011a0 <_exit>:
11a0: f8 94 cli
000011a2 <__stop_program>:
11a2: ff cf rjmp .-2 ; 0x11a2 <__stop_program>