2014-09-05 01:39:40 +02:00
|
|
|
|
|
|
|
|
|
Door.elf: file format elf32-avr
|
|
|
|
|
|
|
|
|
|
Sections:
|
|
|
|
|
Idx Name Size VMA LMA File off Algn
|
2015-02-10 12:05:04 +01:00
|
|
|
|
0 .data 00000084 00800100 000011a4 00001238 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, ALLOC, LOAD, DATA
|
2015-02-10 12:05:04 +01:00
|
|
|
|
1 .text 000011a4 00000000 00000000 00000094 2**1
|
2014-11-16 18:10:00 +01:00
|
|
|
|
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
2015-02-10 12:05:04 +01:00
|
|
|
|
2 .bss 00000032 00800184 00800184 000012bc 2**0
|
2014-11-19 23:57:35 +01:00
|
|
|
|
ALLOC
|
2015-02-10 12:05:04 +01:00
|
|
|
|
3 .stab 00001968 00000000 00000000 000012bc 2**2
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
4 .stabstr 000005b5 00000000 00000000 00002c24 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
5 .comment 0000002f 00000000 00000000 000031d9 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6 .debug_aranges 00000060 00000000 00000000 00003208 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
7 .debug_info 0000384a 00000000 00000000 00003268 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8 .debug_abbrev 000004fd 00000000 00000000 00006ab2 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9 .debug_line 000005f9 00000000 00000000 00006faf 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
10 .debug_frame 000001b8 00000000 00000000 000075a8 2**2
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
11 .debug_str 00001435 00000000 00000000 00007760 2**0
|
2014-09-05 01:39:40 +02:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
12 .debug_loc 000017a5 00000000 00000000 00008b95 2**0
|
2014-11-19 23:57:35 +01:00
|
|
|
|
CONTENTS, READONLY, DEBUGGING
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
0: 0c 94 35 00 jmp 0x6a ; 0x6a <__ctors_end>
|
2015-02-10 12:05:04 +01:00
|
|
|
|
4: 0c 94 6d 06 jmp 0xcda ; 0xcda <__vector_1>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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>:
|
2015-02-10 12:05:04 +01:00
|
|
|
|
68: 25 07 cpc r18, r21
|
2014-11-19 23:57:35 +01:00
|
|
|
|
|
|
|
|
|
0000006a <__ctors_end>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
76: 11 e0 ldi r17, 0x01 ; 1
|
|
|
|
|
78: a0 e0 ldi r26, 0x00 ; 0
|
|
|
|
|
7a: b1 e0 ldi r27, 0x01 ; 1
|
2015-02-10 12:05:04 +01:00
|
|
|
|
7c: e4 ea ldi r30, 0xA4 ; 164
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
94: 1d 92 st X+, r1
|
2014-11-19 23:57:35 +01:00
|
|
|
|
|
|
|
|
|
00000096 <.do_clear_bss_start>:
|
2015-02-10 12:05:04 +01:00
|
|
|
|
96: a6 3b cpi r26, 0xB6 ; 182
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
a8: 0e 94 cc 08 call 0x1198 ; 0x1198 <__tablejump__>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
ac: c8 36 cpi r28, 0x68 ; 104
|
|
|
|
|
ae: d1 07 cpc r29, r17
|
|
|
|
|
b0: c9 f7 brne .-14 ; 0xa4 <__do_global_ctors+0x8>
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
ba: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
|
2014-11-19 23:57:35 +01:00
|
|
|
|
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
|
|
|
|
this->fademap[2][index] = blue;
|
|
|
|
|
this->fademap[3][index] = time;
|
|
|
|
|
}
|
|
|
|
|
void interrupt() {
|
|
|
|
|
if(this->fade_zylk > 0) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/
|
2015-02-09 18:10:07 +01:00
|
|
|
|
} else {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fadesteps[1] = (this->fademap[1][this->fade_zylk-1]-OCR2B)/this->fademap[3][this->fade_zylk-1]; //Calc Green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
this->fadesteps[2] = (this->fademap[2][this->fade_zylk-1]-OCR2A)/this->fademap[3][this->fade_zylk-1]; //Calc Blue;*/
|
2015-02-09 18:10:07 +01:00
|
|
|
|
} else {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
2015-02-10 12:05:04 +01:00
|
|
|
|
/*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>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
stripe.interrupt();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#include <avr/interrupt.h>
|
|
|
|
|
|
|
|
|
|
template <uint32_t baudrate>
|
|
|
|
|
class Uart {
|
|
|
|
|
public:
|
|
|
|
|
Uart() {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
540: cf 93 push r28
|
|
|
|
|
542: df 93 push r29
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
544: 78 94 sei
|
2015-02-08 00:22:32 +01:00
|
|
|
|
void print(uint8_t wert) {
|
|
|
|
|
uart_putchar(wert);
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
private:
|
|
|
|
|
void init() {
|
|
|
|
|
UBRR0L = (F_CPU / (baudrate * 16L) - 1); //Teiler wird gesetzt
|
2015-02-10 12:05:04 +01:00
|
|
|
|
546: 81 e8 ldi r24, 0x81 ; 129
|
|
|
|
|
548: 80 93 c4 00 sts 0x00C4, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
54c: 10 92 c0 00 sts 0x00C0, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
550: 88 e0 ldi r24, 0x08 ; 8
|
|
|
|
|
552: 80 93 c1 00 sts 0x00C1, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UCSR0C= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0); //8N1
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
562: e0 ec ldi r30, 0xC0 ; 192
|
|
|
|
|
564: f0 e0 ldi r31, 0x00 ; 0
|
2014-11-19 23:57:35 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
566: c6 ec ldi r28, 0xC6 ; 198
|
|
|
|
|
568: d0 e0 ldi r29, 0x00 ; 0
|
2015-02-08 00:22:32 +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
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
uint8_t uart_putchar(uint8_t c) {
|
|
|
|
|
loop_until_bit_is_set(UCSR0A, UDRE0); //Ausgabe des Zeichens
|
2015-02-10 12:05:04 +01:00
|
|
|
|
56a: 80 81 ld r24, Z
|
|
|
|
|
56c: 85 ff sbrs r24, 5
|
|
|
|
|
56e: fd cf rjmp .-6 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
570: 98 83 st Y, r25
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
572: 9d 91 ld r25, X+
|
|
|
|
|
574: 91 11 cpse r25, r1
|
|
|
|
|
576: f9 cf rjmp .-14 ; 0x56a <_ZN4UartILm9600EEC1Ev+0x2a>
|
2015-02-08 00:22:32 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
592: 8a e0 ldi r24, 0x0A ; 10
|
|
|
|
|
594: 80 93 c6 00 sts 0x00C6, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
public:
|
|
|
|
|
Uart() {
|
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
2015-02-10 12:05:04 +01:00
|
|
|
|
598: df 91 pop r29
|
|
|
|
|
59a: cf 91 pop r28
|
|
|
|
|
59c: 08 95 ret
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
void setcolor(uint8_t mask) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
(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>:
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
print("0");
|
|
|
|
|
}
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
void println(const char *text) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
5cc: cf 93 push r28
|
|
|
|
|
5ce: df 93 push r29
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
print("0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void println(const char *text) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
5dc: e0 ec ldi r30, 0xC0 ; 192
|
|
|
|
|
5de: f0 e0 ldi r31, 0x00 ; 0
|
2014-11-19 23:57:35 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
5ea: 98 83 st Y, r25
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
60c: 8a e0 ldi r24, 0x0A ; 10
|
|
|
|
|
60e: 80 93 c6 00 sts 0x00C6, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
void println(const char *text) {
|
|
|
|
|
print(text);
|
|
|
|
|
print("\r");
|
|
|
|
|
print("\n");
|
|
|
|
|
}
|
2015-02-10 12:05:04 +01:00
|
|
|
|
612: df 91 pop r29
|
|
|
|
|
614: cf 91 pop r28
|
|
|
|
|
616: 08 95 ret
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
2015-02-10 12:05:04 +01:00
|
|
|
|
00000618 <main>:
|
2015-02-09 18:10:07 +01:00
|
|
|
|
ledclass led;
|
2015-02-08 00:22:32 +01:00
|
|
|
|
compclass comp;
|
|
|
|
|
irclass ir;
|
|
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
|
{
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
624: 78 94 sei
|
2015-02-09 18:10:07 +01:00
|
|
|
|
uint8_t doorstatus = 0;
|
2015-02-08 00:22:32 +01:00
|
|
|
|
stripe.setcolor(stripe.RED);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
Serial.println("Rot!");
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(100);
|
|
|
|
|
stripe.setcolor(stripe.GREEN);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
Serial.println("Gr<47>n!");
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(100);
|
|
|
|
|
stripe.setcolor(stripe.BLUE);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
Serial.println("Blau!");
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(100);
|
|
|
|
|
stripe.setcolor(stripe.WHITE);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
Serial.println("Wei<65>, alles Initialisert! Habe Fertig und damit ab zum Normalbetrieb!");
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portb
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTB; }
|
|
|
|
|
static void port(uint8_t v) { PORTB = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6c6: 29 9a sbi 0x05, 1 ; 5
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(100);
|
|
|
|
|
led.green(1);
|
|
|
|
|
stripe.setcolor(stripe.BLACK);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
irclass ir;
|
|
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
|
{
|
|
|
|
|
sei();
|
|
|
|
|
uint8_t doorstatus = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6d2: 21 2c mov r2, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
led.red(0);
|
|
|
|
|
EIFR |= (1<<INTF0);
|
|
|
|
|
}
|
|
|
|
|
uint8_t getCode() {
|
|
|
|
|
uint8_t ret = this->_code;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6d4: 45 e8 ldi r20, 0x85 ; 133
|
|
|
|
|
6d6: 51 e0 ldi r21, 0x01 ; 1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
this->_code = 255;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6d8: bb 24 eor r11, r11
|
|
|
|
|
6da: ba 94 dec r11
|
|
|
|
|
6dc: ab 2c mov r10, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
6ea: 0e e8 ldi r16, 0x8E ; 142
|
|
|
|
|
6ec: 11 e0 ldi r17, 0x01 ; 1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
71e: e0 ec ldi r30, 0xC0 ; 192
|
|
|
|
|
720: f0 e0 ldi r31, 0x00 ; 0
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
led.red(0);
|
|
|
|
|
EIFR |= (1<<INTF0);
|
|
|
|
|
}
|
|
|
|
|
uint8_t getCode() {
|
|
|
|
|
uint8_t ret = this->_code;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
72a: da 01 movw r26, r20
|
|
|
|
|
72c: 8c 91 ld r24, X
|
2015-02-08 00:22:32 +01:00
|
|
|
|
this->_code = 255;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
72e: ac 92 st X, r10
|
2015-02-09 18:10:07 +01:00
|
|
|
|
|
|
|
|
|
uint8_t remotetimer = 10;
|
2015-02-08 00:22:32 +01:00
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
uint8_t c = ir.getCode();
|
|
|
|
|
switch(c) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR2A = 0;
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
void higher() {
|
|
|
|
|
if(OCR0B <= 250) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
7da: 88 b5 in r24, 0x28 ; 40
|
|
|
|
|
7dc: 8b 3f cpi r24, 0xFB ; 251
|
|
|
|
|
7de: 20 f4 brcc .+8 ; 0x7e8 <main+0x1d0>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR0B = OCR0B + 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR0B = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
7e8: 18 bc out 0x28, r1 ; 40
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
if(OCR2B <= 250) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR2B = OCR2B + 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR2B = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
7fc: a4 eb ldi r26, 0xB4 ; 180
|
|
|
|
|
7fe: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
800: 1c 92 st X, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
if(OCR2A <= 250) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR2A = OCR2A + 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR2A = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
void on() {
|
|
|
|
|
this->timerOn();
|
|
|
|
|
}
|
|
|
|
|
void lower() {
|
|
|
|
|
if(OCR0B >= 5) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
81c: 88 b5 in r24, 0x28 ; 40
|
|
|
|
|
81e: 85 30 cpi r24, 0x05 ; 5
|
|
|
|
|
820: 20 f0 brcs .+8 ; 0x82a <main+0x212>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR0B = OCR0B - 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR0B = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
82a: 18 bc out 0x28, r1 ; 40
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
if(OCR2B >= 5) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR2B = OCR2B - 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR2B = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
83e: a4 eb ldi r26, 0xB4 ; 180
|
|
|
|
|
840: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
842: 1c 92 st X, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
if(OCR2A >= 5) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
OCR2A = OCR2A - 5;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
} else {
|
|
|
|
|
OCR2A = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
void timerOff() {
|
|
|
|
|
// OC0B output: Disconnected
|
|
|
|
|
// OC2A output: Disconnected
|
|
|
|
|
// OC2B output: Disconnected
|
|
|
|
|
TCCR0A &= ~(1<<COM0B1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
85e: 84 b5 in r24, 0x24 ; 36
|
|
|
|
|
860: 8f 7d andi r24, 0xDF ; 223
|
|
|
|
|
862: 84 bd out 0x24, r24 ; 36
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR2A &= ~((1<<COM2A1) | (1<<COM2B1));
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portd
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTD; }
|
|
|
|
|
static void port(uint8_t v) { PORTD = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
86e: 5d 98 cbi 0x0b, 5 ; 11
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
870: 55 9a sbi 0x0a, 5 ; 10
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portd
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTD; }
|
|
|
|
|
static void port(uint8_t v) { PORTD = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
872: 5b 98 cbi 0x0b, 3 ; 11
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
874: 53 9a sbi 0x0a, 3 ; 10
|
|
|
|
|
876: 2b 98 cbi 0x05, 3 ; 5
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
878: 23 9a sbi 0x04, 3 ; 4
|
|
|
|
|
87a: 69 c1 rjmp .+722 ; 0xb4e <main+0x536>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
void timerOn() {
|
|
|
|
|
// OC0B output: Non-Inverted PWM
|
|
|
|
|
// OC2A output: Non-Inverted PWM
|
|
|
|
|
// OC2B output: Non-Inverted PWM
|
|
|
|
|
TCCR0A |= (1<<COM0B1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
87c: 84 b5 in r24, 0x24 ; 36
|
|
|
|
|
87e: 80 62 ori r24, 0x20 ; 32
|
|
|
|
|
880: 84 bd out 0x24, r24 ; 36
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR2A |= (1<<COM2A1) | (1<<COM2B1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
88e: d7 01 movw r26, r14
|
|
|
|
|
890: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
892: d8 01 movw r26, r16
|
|
|
|
|
894: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
896: d4 01 movw r26, r8
|
|
|
|
|
898: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
89a: d3 01 movw r26, r6
|
|
|
|
|
89c: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
89e: d2 01 movw r26, r4
|
|
|
|
|
8a0: cc 92 st X, r12
|
|
|
|
|
8a2: 55 c1 rjmp .+682 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8a4: d7 01 movw r26, r14
|
|
|
|
|
8a6: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8a8: d8 01 movw r26, r16
|
|
|
|
|
8aa: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8ac: d4 01 movw r26, r8
|
|
|
|
|
8ae: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8b0: d3 01 movw r26, r6
|
|
|
|
|
8b2: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8b4: d2 01 movw r26, r4
|
|
|
|
|
8b6: cc 92 st X, r12
|
|
|
|
|
8b8: 4a c1 rjmp .+660 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8ba: d7 01 movw r26, r14
|
|
|
|
|
8bc: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8be: d8 01 movw r26, r16
|
|
|
|
|
8c0: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8c2: d4 01 movw r26, r8
|
|
|
|
|
8c4: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8c6: d3 01 movw r26, r6
|
|
|
|
|
8c8: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8ca: d2 01 movw r26, r4
|
|
|
|
|
8cc: cc 92 st X, r12
|
|
|
|
|
8ce: 3f c1 rjmp .+638 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8d0: d7 01 movw r26, r14
|
|
|
|
|
8d2: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8d4: d8 01 movw r26, r16
|
|
|
|
|
8d6: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8d8: d4 01 movw r26, r8
|
|
|
|
|
8da: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8dc: d3 01 movw r26, r6
|
|
|
|
|
8de: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8e0: d2 01 movw r26, r4
|
|
|
|
|
8e2: cc 92 st X, r12
|
|
|
|
|
8e4: 34 c1 rjmp .+616 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8e6: d7 01 movw r26, r14
|
|
|
|
|
8e8: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8ea: 20 e4 ldi r18, 0x40 ; 64
|
|
|
|
|
8ec: d8 01 movw r26, r16
|
|
|
|
|
8ee: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8f0: d4 01 movw r26, r8
|
|
|
|
|
8f2: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8f4: d3 01 movw r26, r6
|
|
|
|
|
8f6: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8f8: d2 01 movw r26, r4
|
|
|
|
|
8fa: cc 92 st X, r12
|
|
|
|
|
8fc: 28 c1 rjmp .+592 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
8fe: d7 01 movw r26, r14
|
|
|
|
|
900: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
902: d8 01 movw r26, r16
|
|
|
|
|
904: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
906: 20 e4 ldi r18, 0x40 ; 64
|
|
|
|
|
908: d4 01 movw r26, r8
|
|
|
|
|
90a: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
90c: d3 01 movw r26, r6
|
|
|
|
|
90e: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
910: d2 01 movw r26, r4
|
|
|
|
|
912: cc 92 st X, r12
|
|
|
|
|
914: 1c c1 rjmp .+568 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
916: 20 e4 ldi r18, 0x40 ; 64
|
|
|
|
|
918: d7 01 movw r26, r14
|
|
|
|
|
91a: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
91c: d8 01 movw r26, r16
|
|
|
|
|
91e: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
920: d4 01 movw r26, r8
|
|
|
|
|
922: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
924: d3 01 movw r26, r6
|
|
|
|
|
926: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
928: d2 01 movw r26, r4
|
|
|
|
|
92a: cc 92 st X, r12
|
|
|
|
|
92c: 10 c1 rjmp .+544 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
92e: d7 01 movw r26, r14
|
|
|
|
|
930: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
932: 20 e8 ldi r18, 0x80 ; 128
|
|
|
|
|
934: d8 01 movw r26, r16
|
|
|
|
|
936: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
938: d4 01 movw r26, r8
|
|
|
|
|
93a: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
93c: d3 01 movw r26, r6
|
|
|
|
|
93e: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
940: d2 01 movw r26, r4
|
|
|
|
|
942: cc 92 st X, r12
|
|
|
|
|
944: 04 c1 rjmp .+520 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
946: d7 01 movw r26, r14
|
|
|
|
|
948: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
94a: d8 01 movw r26, r16
|
|
|
|
|
94c: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
94e: 20 e8 ldi r18, 0x80 ; 128
|
|
|
|
|
950: d4 01 movw r26, r8
|
|
|
|
|
952: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
954: d3 01 movw r26, r6
|
|
|
|
|
956: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
958: d2 01 movw r26, r4
|
|
|
|
|
95a: cc 92 st X, r12
|
|
|
|
|
95c: f8 c0 rjmp .+496 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
95e: 20 e8 ldi r18, 0x80 ; 128
|
|
|
|
|
960: d7 01 movw r26, r14
|
|
|
|
|
962: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
964: d8 01 movw r26, r16
|
|
|
|
|
966: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
968: d4 01 movw r26, r8
|
|
|
|
|
96a: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
96c: d3 01 movw r26, r6
|
|
|
|
|
96e: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
970: d2 01 movw r26, r4
|
|
|
|
|
972: cc 92 st X, r12
|
|
|
|
|
974: ec c0 rjmp .+472 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
976: d7 01 movw r26, r14
|
|
|
|
|
978: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
97a: 20 ec ldi r18, 0xC0 ; 192
|
|
|
|
|
97c: d8 01 movw r26, r16
|
|
|
|
|
97e: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
980: d4 01 movw r26, r8
|
|
|
|
|
982: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
984: d3 01 movw r26, r6
|
|
|
|
|
986: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
988: d2 01 movw r26, r4
|
|
|
|
|
98a: cc 92 st X, r12
|
|
|
|
|
98c: e0 c0 rjmp .+448 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
98e: d7 01 movw r26, r14
|
|
|
|
|
990: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
992: d8 01 movw r26, r16
|
|
|
|
|
994: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
996: 20 ec ldi r18, 0xC0 ; 192
|
|
|
|
|
998: d4 01 movw r26, r8
|
|
|
|
|
99a: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
99c: d3 01 movw r26, r6
|
|
|
|
|
99e: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9a0: d2 01 movw r26, r4
|
|
|
|
|
9a2: cc 92 st X, r12
|
|
|
|
|
9a4: d4 c0 rjmp .+424 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9a6: 20 ec ldi r18, 0xC0 ; 192
|
|
|
|
|
9a8: d7 01 movw r26, r14
|
|
|
|
|
9aa: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9ac: d8 01 movw r26, r16
|
|
|
|
|
9ae: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9b0: d4 01 movw r26, r8
|
|
|
|
|
9b2: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9b4: d3 01 movw r26, r6
|
|
|
|
|
9b6: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9b8: d2 01 movw r26, r4
|
|
|
|
|
9ba: cc 92 st X, r12
|
|
|
|
|
9bc: c8 c0 rjmp .+400 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9be: d7 01 movw r26, r14
|
|
|
|
|
9c0: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9c2: d8 01 movw r26, r16
|
|
|
|
|
9c4: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9c6: d4 01 movw r26, r8
|
|
|
|
|
9c8: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9ca: d3 01 movw r26, r6
|
|
|
|
|
9cc: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9ce: d2 01 movw r26, r4
|
|
|
|
|
9d0: cc 92 st X, r12
|
|
|
|
|
9d2: bd c0 rjmp .+378 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9d4: d7 01 movw r26, r14
|
|
|
|
|
9d6: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9d8: d8 01 movw r26, r16
|
|
|
|
|
9da: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9dc: d4 01 movw r26, r8
|
|
|
|
|
9de: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9e0: d3 01 movw r26, r6
|
|
|
|
|
9e2: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9e4: d2 01 movw r26, r4
|
|
|
|
|
9e6: cc 92 st X, r12
|
|
|
|
|
9e8: b2 c0 rjmp .+356 ; 0xb4e <main+0x536>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9ea: d7 01 movw r26, r14
|
|
|
|
|
9ec: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9ee: d8 01 movw r26, r16
|
|
|
|
|
9f0: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9f2: d4 01 movw r26, r8
|
|
|
|
|
9f4: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9f6: d3 01 movw r26, r6
|
|
|
|
|
9f8: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
OCR2A = 0;
|
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
9fa: d2 01 movw r26, r4
|
|
|
|
|
9fc: cc 92 st X, r12
|
|
|
|
|
9fe: a7 c0 rjmp .+334 ; 0xb4e <main+0x536>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
case 19: break; //Button FADE
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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 %
|
2015-02-08 00:22:32 +01:00
|
|
|
|
case 23: break; //Button SMOOTH
|
|
|
|
|
default: Serial.printDec(c); Serial.println(" Pressed!"); break; //Code den ich nicht kenne
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
UCSR0A= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
|
2015-02-07 18:10:00 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
a08: 80 81 ld r24, Z
|
|
|
|
|
a0a: 85 ff sbrs r24, 5
|
|
|
|
|
a0c: fd cf rjmp .-6 ; 0xa08 <main+0x3f0>
|
2015-02-07 18:10:00 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-07 18:10:00 +01:00
|
|
|
|
text++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void printDec(uint16_t wert) {
|
|
|
|
|
print((wert/10000)+'0');
|
2014-11-19 23:57:35 +01:00
|
|
|
|
print(((wert/1000)%10)+'0');
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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');
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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');
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
a82: 96 95 lsr r25
|
|
|
|
|
a84: 87 95 ror r24
|
|
|
|
|
a86: 96 95 lsr r25
|
|
|
|
|
a88: 87 95 ror r24
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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');
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b0c: 90 81 ld r25, Z
|
|
|
|
|
b0e: 95 ff sbrs r25, 5
|
|
|
|
|
b10: fd cf rjmp .-6 ; 0xb0c <main+0x4f4>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b1c: 90 e2 ldi r25, 0x20 ; 32
|
|
|
|
|
b1e: 9d 01 movw r18, r26
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b20: 80 81 ld r24, Z
|
|
|
|
|
b22: 85 ff sbrs r24, 5
|
|
|
|
|
b24: fd cf rjmp .-6 ; 0xb20 <main+0x508>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b26: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
b28: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
b2a: 9c 93 st X, r25
|
2015-02-09 18:10:07 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b36: 80 81 ld r24, Z
|
|
|
|
|
b38: 85 ff sbrs r24, 5
|
|
|
|
|
b3a: fd cf rjmp .-6 ; 0xb36 <main+0x51e>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b3c: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
b3e: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
b40: dc 92 st X, r13
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b42: 80 81 ld r24, Z
|
|
|
|
|
b44: 85 ff sbrs r24, 5
|
|
|
|
|
b46: fd cf rjmp .-6 ; 0xb42 <main+0x52a>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b48: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
b4a: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
b4c: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
if(comp.is_active()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b4e: 00 b6 in r0, 0x30 ; 48
|
|
|
|
|
b50: 05 fe sbrs r0, 5
|
|
|
|
|
b52: 2a c0 rjmp .+84 ; 0xba8 <main+0x590>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
if(doorstatus == 0) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b54: 21 10 cpse r2, r1
|
|
|
|
|
b56: 52 c0 rjmp .+164 ; 0xbfc <main+0x5e4>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b58: d7 01 movw r26, r14
|
|
|
|
|
b5a: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b5c: d8 01 movw r26, r16
|
|
|
|
|
b5e: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b60: d4 01 movw r26, r8
|
|
|
|
|
b62: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b64: 24 e6 ldi r18, 0x64 ; 100
|
|
|
|
|
b66: d3 01 movw r26, r6
|
|
|
|
|
b68: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-09 18:10:07 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b72: 94 e5 ldi r25, 0x54 ; 84
|
|
|
|
|
b74: 9d 01 movw r18, r26
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b76: 80 81 ld r24, Z
|
|
|
|
|
b78: 85 ff sbrs r24, 5
|
|
|
|
|
b7a: fd cf rjmp .-6 ; 0xb76 <main+0x55e>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b7c: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
b7e: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
b80: 9c 93 st X, r25
|
2015-02-09 18:10:07 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-09 18:10:07 +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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b8c: 80 81 ld r24, Z
|
|
|
|
|
b8e: 85 ff sbrs r24, 5
|
|
|
|
|
b90: fd cf rjmp .-6 ; 0xb8c <main+0x574>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
UDR0 = c;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
b9e: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
ba0: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
ba2: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
doorstatus = 1;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
ba4: 2c 2c mov r2, r12
|
|
|
|
|
ba6: 2a c0 rjmp .+84 ; 0xbfc <main+0x5e4>
|
2015-02-09 18:10:07 +01:00
|
|
|
|
stripe.fadeto(0xFF,0x00,0x00,100);
|
|
|
|
|
Serial.println("T<>r Zu...");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if(doorstatus == 1) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
bbc: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
bbe: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
bc0: 9c 93 st X, r25
|
2015-02-08 00:22:32 +01:00
|
|
|
|
sei();
|
|
|
|
|
init();
|
|
|
|
|
println("Uart done!");
|
|
|
|
|
}
|
|
|
|
|
void print(const char *text) {
|
|
|
|
|
while (*text)
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
bde: a6 ec ldi r26, 0xC6 ; 198
|
|
|
|
|
be0: b0 e0 ldi r27, 0x00 ; 0
|
|
|
|
|
be2: 3c 92 st X, r3
|
2015-02-09 18:10:07 +01:00
|
|
|
|
}
|
|
|
|
|
void setfadecolor(uint8_t index, uint8_t red, uint8_t green, uint8_t blue, uint8_t time) {
|
|
|
|
|
this->fademap[0][index] = red;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
be4: d7 01 movw r26, r14
|
|
|
|
|
be6: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[1][index] = green;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
be8: d8 01 movw r26, r16
|
|
|
|
|
bea: bc 92 st X, r11
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[2][index] = blue;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
bec: d4 01 movw r26, r8
|
|
|
|
|
bee: 1c 92 st X, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
this->fademap[3][index] = time;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
bf0: 22 e3 ldi r18, 0x32 ; 50
|
|
|
|
|
bf2: d3 01 movw r26, r6
|
|
|
|
|
bf4: 2c 93 st X, r18
|
2015-02-09 18:10:07 +01:00
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
bf6: d2 01 movw r26, r4
|
|
|
|
|
bf8: cc 92 st X, r12
|
2015-02-09 18:10:07 +01:00
|
|
|
|
doorstatus = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
2014-11-19 23:57:35 +01:00
|
|
|
|
|
2015-02-08 00:22:32 +01:00
|
|
|
|
struct portb
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTB; }
|
|
|
|
|
static void port(uint8_t v) { PORTB = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c24: 23 9a sbi 0x04, 3 ; 4
|
|
|
|
|
float virtualcolor[3];
|
2015-02-09 18:10:07 +01:00
|
|
|
|
void init() {
|
|
|
|
|
stripered::make_output();
|
|
|
|
|
stripegreen::make_output();
|
|
|
|
|
stripeblue::make_output();
|
|
|
|
|
this->fade_zylk = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c26: fc 01 movw r30, r24
|
|
|
|
|
c28: 10 82 st Z, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// 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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c2a: 81 e0 ldi r24, 0x01 ; 1
|
|
|
|
|
c2c: 84 bd out 0x24, r24 ; 36
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c2e: 94 e0 ldi r25, 0x04 ; 4
|
|
|
|
|
c30: 95 bd out 0x25, r25 ; 37
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCNT0=0x00;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c32: 16 bc out 0x26, r1 ; 38
|
2015-02-09 18:10:07 +01:00
|
|
|
|
// 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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c34: 10 92 80 00 sts 0x0080, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c38: 92 e0 ldi r25, 0x02 ; 2
|
|
|
|
|
c3a: 90 93 81 00 sts 0x0081, r25
|
2015-02-09 18:10:07 +01:00
|
|
|
|
TCNT1H=0x00;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c3e: 10 92 85 00 sts 0x0085, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
TCNT1L=0x00;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c42: 10 92 84 00 sts 0x0084, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// 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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c46: 10 92 b6 00 sts 0x00B6, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR2A=(0<<COM2A0) | (0<<COM2B0) | (0<<WGM21) | (1<<WGM20);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c4a: e0 eb ldi r30, 0xB0 ; 176
|
|
|
|
|
c4c: f0 e0 ldi r31, 0x00 ; 0
|
|
|
|
|
c4e: 80 83 st Z, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR2B=(0<<WGM22) | (1<<CS22) | (0<<CS21) | (1<<CS20);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c50: 95 e0 ldi r25, 0x05 ; 5
|
|
|
|
|
c52: 90 93 b1 00 sts 0x00B1, r25
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCNT2=0x00;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c56: 10 92 b2 00 sts 0x00B2, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// Timer/Counter 0 Interrupt(s) initialization
|
|
|
|
|
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c5a: 10 92 6e 00 sts 0x006E, r1
|
2015-02-09 18:10:07 +01:00
|
|
|
|
// Timer/Counter 1 Interrupt(s) initialization
|
|
|
|
|
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c5e: 80 93 6f 00 sts 0x006F, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// Timer/Counter 2 Interrupt(s) initialization
|
|
|
|
|
TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c62: 10 92 70 00 sts 0x0070, r1
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
void timerOn() {
|
|
|
|
|
// OC0B output: Non-Inverted PWM
|
|
|
|
|
// OC2A output: Non-Inverted PWM
|
|
|
|
|
// OC2B output: Non-Inverted PWM
|
|
|
|
|
TCCR0A |= (1<<COM0B1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c66: 84 b5 in r24, 0x24 ; 36
|
|
|
|
|
c68: 80 62 ori r24, 0x20 ; 32
|
|
|
|
|
c6a: 84 bd out 0x24, r24 ; 36
|
2015-02-08 00:22:32 +01:00
|
|
|
|
TCCR2A |= (1<<COM2A1) | (1<<COM2B1);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// 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() {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c7e: 20 e0 ldi r18, 0x00 ; 0
|
|
|
|
|
c80: 30 e0 ldi r19, 0x00 ; 0
|
2015-02-08 00:22:32 +01:00
|
|
|
|
uint8_t r = 0;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c82: 80 e0 ldi r24, 0x00 ; 0
|
2015-02-08 00:22:32 +01:00
|
|
|
|
for (uint8_t i=0;i<8;i++) {
|
|
|
|
|
intpin::wait_is_set();
|
|
|
|
|
_delay_us(800);
|
|
|
|
|
if(intpin::read()) {
|
|
|
|
|
r |= (1<<i);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c84: 61 e0 ldi r22, 0x01 ; 1
|
|
|
|
|
c86: 70 e0 ldi r23, 0x00 ; 0
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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))); }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c88: 4a 9b sbis 0x09, 2 ; 9
|
|
|
|
|
c8a: fe cf rjmp .-4 ; 0xc88 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0xa>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
c98: 4a 9b sbis 0x09, 2 ; 9
|
|
|
|
|
c9a: 08 c0 rjmp .+16 ; 0xcac <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x2e>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
r |= (1<<i);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
|
|
|
|
if(!intpin::value()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
intpin::wait_is_set();
|
|
|
|
|
_delay_us(800);
|
|
|
|
|
if(intpin::read()) {
|
|
|
|
|
r |= (1<<i);
|
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
cc0: c1 f7 brne .-16 ; 0xcb2 <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv+0x34>
|
|
|
|
|
cc2: 2f 5f subi r18, 0xFF ; 255
|
|
|
|
|
cc4: 3f 4f sbci r19, 0xFF ; 255
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(99);
|
|
|
|
|
led.green(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ISR(INT0_vect) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portb
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTB; }
|
|
|
|
|
static void port(uint8_t v) { PORTB = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
cfe: 28 9a sbi 0x05, 0 ; 5
|
2015-02-08 00:22:32 +01:00
|
|
|
|
public:
|
|
|
|
|
IR() {
|
|
|
|
|
this->init();
|
|
|
|
|
}
|
|
|
|
|
int read() {
|
|
|
|
|
if(intpin::value()) { //Is High, Abbort
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d00: 4a 99 sbic 0x09, 2 ; 9
|
|
|
|
|
d02: 79 c0 rjmp .+242 ; 0xdf6 <__vector_1+0x11c>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
return 254;
|
2014-11-19 23:57:35 +01:00
|
|
|
|
}
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(4); //Wait 4ms
|
|
|
|
|
if(intpin::value()) { //Is High, Abbort
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
static void wait_is_clear() { do {} while ((Port::pin() & (1<<Pin))); }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d22: 41 e0 ldi r20, 0x01 ; 1
|
|
|
|
|
d24: 50 e0 ldi r21, 0x00 ; 0
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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))); }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d26: 4a 9b sbis 0x09, 2 ; 9
|
|
|
|
|
d28: fe cf rjmp .-4 ; 0xd26 <__vector_1+0x4c>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d36: 4a 9b sbis 0x09, 2 ; 9
|
|
|
|
|
d38: 08 c0 rjmp .+16 ; 0xd4a <__vector_1+0x70>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
r |= (1<<i);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
|
|
|
|
if(!intpin::value()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
intpin::wait_is_set();
|
|
|
|
|
_delay_us(800);
|
|
|
|
|
if(intpin::read()) {
|
|
|
|
|
r |= (1<<i);
|
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d5e: c1 f7 brne .-16 ; 0xd50 <__vector_1+0x76>
|
|
|
|
|
d60: 01 96 adiw r24, 0x01 ; 1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d62: 88 30 cpi r24, 0x08 ; 8
|
|
|
|
|
d64: 91 05 cpc r25, r1
|
|
|
|
|
d66: f9 f6 brne .-66 ; 0xd26 <__vector_1+0x4c>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
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;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
d84: 4a 9b sbis 0x09, 2 ; 9
|
|
|
|
|
d86: 08 c0 rjmp .+16 ; 0xd98 <__vector_1+0xbe>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
r |= (1<<i);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
|
|
|
|
if(!intpin::value()) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
intpin::wait_is_set();
|
|
|
|
|
_delay_us(800);
|
|
|
|
|
if(intpin::read()) {
|
|
|
|
|
r |= (1<<i);
|
|
|
|
|
}
|
|
|
|
|
for(uint8_t j=0;j<50;j++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
dac: c1 f7 brne .-16 ; 0xd9e <__vector_1+0xc4>
|
|
|
|
|
dae: 01 96 adiw r24, 0x01 ; 1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
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++) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
db0: 88 30 cpi r24, 0x08 ; 8
|
|
|
|
|
db2: 91 05 cpc r25, r1
|
|
|
|
|
db4: f9 f6 brne .-66 ; 0xd74 <__vector_1+0x9a>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
//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) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
db6: 6f 3e cpi r22, 0xEF ; 239
|
|
|
|
|
db8: 91 f4 brne .+36 ; 0xdde <__vector_1+0x104>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
return 255;
|
|
|
|
|
}
|
|
|
|
|
//Read Byte 3 and 4 (Data Byte and Checksum Byte!
|
|
|
|
|
uint8_t a = this->read8bit();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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
|
2015-02-08 00:22:32 +01:00
|
|
|
|
uint8_t b = this->read8bit();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
dc4: 84 e8 ldi r24, 0x84 ; 132
|
|
|
|
|
dc6: 91 e0 ldi r25, 0x01 ; 1
|
|
|
|
|
dc8: 0e 94 3f 06 call 0xc7e ; 0xc7e <_ZN2IRIN6avrlib5portdELi2E3LedINS0_5portbELi0ELi1EEE8read8bitEv>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
//Make Checksum Byte 3 + 4 must be 255!
|
|
|
|
|
if(a+b != 255) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
//The Interrupt Function
|
|
|
|
|
void interrupt() {
|
|
|
|
|
led.red(1);
|
|
|
|
|
uint8_t code = this->read();
|
|
|
|
|
if(code == 255) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
dda: cf 3f cpi r28, 0xFF ; 255
|
|
|
|
|
ddc: 51 f4 brne .+20 ; 0xdf2 <__vector_1+0x118>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(500);
|
|
|
|
|
} else if(code == 254) {
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
_delay_ms(1);
|
|
|
|
|
} else {
|
|
|
|
|
this->_code = code;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e04: c0 93 85 01 sts 0x0185, r28
|
|
|
|
|
e08: 28 98 cbi 0x05, 0 ; 5
|
2015-02-08 00:22:32 +01:00
|
|
|
|
}
|
|
|
|
|
led.red(0);
|
|
|
|
|
EIFR |= (1<<INTF0);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e0a: e0 9a sbi 0x1c, 0 ; 28
|
|
|
|
|
e0c: 0c c0 rjmp .+24 ; 0xe26 <__vector_1+0x14c>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
#else
|
|
|
|
|
//round up by default
|
|
|
|
|
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__builtin_avr_delay_cycles(__ticks_dc);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
ir.interrupt();
|
|
|
|
|
}
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>:
|
2015-02-08 00:22:32 +01:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "peripheral.h"
|
|
|
|
|
#include <util/delay.h>
|
|
|
|
|
|
|
|
|
|
uartclass Serial;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e4a: 85 eb ldi r24, 0xB5 ; 181
|
|
|
|
|
e4c: 91 e0 ldi r25, 0x01 ; 1
|
|
|
|
|
e4e: 0e 94 a0 02 call 0x540 ; 0x540 <_ZN4UartILm9600EEC1Ev>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
template <typename PortR, int pin_red, typename PortG, int pin_green, typename PortB, int pin_blue>
|
|
|
|
|
class Stripe {
|
|
|
|
|
public:
|
|
|
|
|
Stripe() {
|
|
|
|
|
this->init();
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e5a: 20 9a sbi 0x04, 0 ; 4
|
|
|
|
|
e5c: 21 9a sbi 0x04, 1 ; 4
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portb
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTB; }
|
|
|
|
|
static void port(uint8_t v) { PORTB = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e5e: 28 98 cbi 0x05, 0 ; 5
|
|
|
|
|
e60: 29 98 cbi 0x05, 1 ; 5
|
|
|
|
|
e62: 56 98 cbi 0x0a, 6 ; 10
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portd
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTD; }
|
|
|
|
|
static void port(uint8_t v) { PORTD = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e64: 5e 98 cbi 0x0b, 6 ; 11
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e66: 57 98 cbi 0x0a, 7 ; 10
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portd
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTD; }
|
|
|
|
|
static void port(uint8_t v) { PORTD = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e68: 5f 98 cbi 0x0b, 7 ; 11
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// 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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e6a: 10 be out 0x30, r1 ; 48
|
2015-02-08 00:22:32 +01:00
|
|
|
|
ADCSRB=(0<<ACME);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e6c: 10 92 7b 00 sts 0x007B, r1
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// Digital input buffer on AIN0: Off
|
|
|
|
|
// Digital input buffer on AIN1: Off
|
|
|
|
|
DIDR1=(1<<AIN0D) | (1<<AIN1D);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e70: 83 e0 ldi r24, 0x03 ; 3
|
|
|
|
|
e72: 80 93 7f 00 sts 0x007F, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e76: 20 9a sbi 0x04, 0 ; 4
|
|
|
|
|
e78: 21 9a sbi 0x04, 1 ; 4
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portb
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTB; }
|
|
|
|
|
static void port(uint8_t v) { PORTB = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e7a: 28 98 cbi 0x05, 0 ; 5
|
|
|
|
|
e7c: 29 98 cbi 0x05, 1 ; 5
|
2015-02-08 00:22:32 +01:00
|
|
|
|
|
|
|
|
|
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; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e7e: 52 98 cbi 0x0a, 2 ; 10
|
2015-02-08 00:22:32 +01:00
|
|
|
|
namespace avrlib {
|
|
|
|
|
|
|
|
|
|
struct portd
|
|
|
|
|
{
|
|
|
|
|
static uint8_t port() { return PORTD; }
|
|
|
|
|
static void port(uint8_t v) { PORTD = v; }
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e80: 5a 98 cbi 0x0b, 2 ; 11
|
2015-02-08 00:22:32 +01:00
|
|
|
|
private:
|
|
|
|
|
Led led;
|
|
|
|
|
uint8_t _code;
|
|
|
|
|
void init() {
|
|
|
|
|
intpin::make_input();
|
|
|
|
|
this->_code = 255;
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e82: 8f ef ldi r24, 0xFF ; 255
|
|
|
|
|
e84: 80 93 85 01 sts 0x0185, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
// 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);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e88: 82 e0 ldi r24, 0x02 ; 2
|
|
|
|
|
e8a: 80 93 69 00 sts 0x0069, r24
|
2015-02-08 00:22:32 +01:00
|
|
|
|
EIMSK=(0<<INT1) | (1<<INT0);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
e8e: 81 e0 ldi r24, 0x01 ; 1
|
|
|
|
|
e90: 8d bb out 0x1d, r24 ; 29
|
2015-02-08 00:22:32 +01:00
|
|
|
|
EIFR=(0<<INTF1) | (0<<INTF0);
|
2015-02-10 12:05:04 +01:00
|
|
|
|
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>
|