662 lines
20 KiB
Plaintext
662 lines
20 KiB
Plaintext
|
|
MIC-Week5.elf: file format elf32-avr
|
|
|
|
Sections:
|
|
Idx Name Size VMA LMA File off Algn
|
|
0 .data 00000000 00800100 00800100 0000037c 2**0
|
|
CONTENTS, ALLOC, LOAD, DATA
|
|
1 .text 00000328 00000000 00000000 00000054 2**1
|
|
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
|
2 .comment 00000030 00000000 00000000 0000037c 2**0
|
|
CONTENTS, READONLY
|
|
3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000003ac 2**2
|
|
CONTENTS, READONLY
|
|
4 .debug_aranges 000000c8 00000000 00000000 000003e8 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
5 .debug_info 00000d78 00000000 00000000 000004b0 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
6 .debug_abbrev 00000359 00000000 00000000 00001228 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
7 .debug_line 00000702 00000000 00000000 00001581 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
8 .debug_frame 000001e8 00000000 00000000 00001c84 2**2
|
|
CONTENTS, READONLY, DEBUGGING
|
|
9 .debug_str 00000309 00000000 00000000 00001e6c 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
10 .debug_loc 000005d2 00000000 00000000 00002175 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
11 .debug_ranges 000000c0 00000000 00000000 00002747 2**0
|
|
CONTENTS, READONLY, DEBUGGING
|
|
|
|
Disassembly of section .text:
|
|
|
|
00000000 <__vectors>:
|
|
0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end>
|
|
2: 00 00 nop
|
|
4: 4b c0 rjmp .+150 ; 0x9c <__bad_interrupt>
|
|
6: 00 00 nop
|
|
8: 49 c0 rjmp .+146 ; 0x9c <__bad_interrupt>
|
|
a: 00 00 nop
|
|
c: 47 c0 rjmp .+142 ; 0x9c <__bad_interrupt>
|
|
e: 00 00 nop
|
|
10: 45 c0 rjmp .+138 ; 0x9c <__bad_interrupt>
|
|
12: 00 00 nop
|
|
14: 43 c0 rjmp .+134 ; 0x9c <__bad_interrupt>
|
|
16: 00 00 nop
|
|
18: 41 c0 rjmp .+130 ; 0x9c <__bad_interrupt>
|
|
1a: 00 00 nop
|
|
1c: 3f c0 rjmp .+126 ; 0x9c <__bad_interrupt>
|
|
1e: 00 00 nop
|
|
20: 3d c0 rjmp .+122 ; 0x9c <__bad_interrupt>
|
|
22: 00 00 nop
|
|
24: 3b c0 rjmp .+118 ; 0x9c <__bad_interrupt>
|
|
26: 00 00 nop
|
|
28: 39 c0 rjmp .+114 ; 0x9c <__bad_interrupt>
|
|
2a: 00 00 nop
|
|
2c: 37 c0 rjmp .+110 ; 0x9c <__bad_interrupt>
|
|
2e: 00 00 nop
|
|
30: 35 c0 rjmp .+106 ; 0x9c <__bad_interrupt>
|
|
32: 00 00 nop
|
|
34: 33 c0 rjmp .+102 ; 0x9c <__bad_interrupt>
|
|
36: 00 00 nop
|
|
38: 31 c0 rjmp .+98 ; 0x9c <__bad_interrupt>
|
|
3a: 00 00 nop
|
|
3c: 2f c0 rjmp .+94 ; 0x9c <__bad_interrupt>
|
|
3e: 00 00 nop
|
|
40: 2d c0 rjmp .+90 ; 0x9c <__bad_interrupt>
|
|
42: 00 00 nop
|
|
44: 2b c0 rjmp .+86 ; 0x9c <__bad_interrupt>
|
|
46: 00 00 nop
|
|
48: 29 c0 rjmp .+82 ; 0x9c <__bad_interrupt>
|
|
4a: 00 00 nop
|
|
4c: 27 c0 rjmp .+78 ; 0x9c <__bad_interrupt>
|
|
4e: 00 00 nop
|
|
50: 25 c0 rjmp .+74 ; 0x9c <__bad_interrupt>
|
|
52: 00 00 nop
|
|
54: 23 c0 rjmp .+70 ; 0x9c <__bad_interrupt>
|
|
56: 00 00 nop
|
|
58: 21 c0 rjmp .+66 ; 0x9c <__bad_interrupt>
|
|
5a: 00 00 nop
|
|
5c: 1f c0 rjmp .+62 ; 0x9c <__bad_interrupt>
|
|
5e: 00 00 nop
|
|
60: 1d c0 rjmp .+58 ; 0x9c <__bad_interrupt>
|
|
62: 00 00 nop
|
|
64: 1b c0 rjmp .+54 ; 0x9c <__bad_interrupt>
|
|
66: 00 00 nop
|
|
68: 19 c0 rjmp .+50 ; 0x9c <__bad_interrupt>
|
|
6a: 00 00 nop
|
|
6c: 17 c0 rjmp .+46 ; 0x9c <__bad_interrupt>
|
|
6e: 00 00 nop
|
|
70: 15 c0 rjmp .+42 ; 0x9c <__bad_interrupt>
|
|
72: 00 00 nop
|
|
74: 13 c0 rjmp .+38 ; 0x9c <__bad_interrupt>
|
|
76: 00 00 nop
|
|
78: 11 c0 rjmp .+34 ; 0x9c <__bad_interrupt>
|
|
7a: 00 00 nop
|
|
7c: 0f c0 rjmp .+30 ; 0x9c <__bad_interrupt>
|
|
7e: 00 00 nop
|
|
80: 0d c0 rjmp .+26 ; 0x9c <__bad_interrupt>
|
|
82: 00 00 nop
|
|
84: 0b c0 rjmp .+22 ; 0x9c <__bad_interrupt>
|
|
86: 00 00 nop
|
|
88: 09 c0 rjmp .+18 ; 0x9c <__bad_interrupt>
|
|
...
|
|
|
|
0000008c <__ctors_end>:
|
|
8c: 11 24 eor r1, r1
|
|
8e: 1f be out 0x3f, r1 ; 63
|
|
90: cf ef ldi r28, 0xFF ; 255
|
|
92: d0 e1 ldi r29, 0x10 ; 16
|
|
94: de bf out 0x3e, r29 ; 62
|
|
96: cd bf out 0x3d, r28 ; 61
|
|
98: 86 d0 rcall .+268 ; 0x1a6 <main>
|
|
9a: 44 c1 rjmp .+648 ; 0x324 <_exit>
|
|
|
|
0000009c <__bad_interrupt>:
|
|
9c: b1 cf rjmp .-158 ; 0x0 <__vectors>
|
|
|
|
0000009e <wait>:
|
|
spi_write(i); // digit value: i (= digit place)
|
|
spi_slaveDeSelect(0); // Deselect display chip
|
|
|
|
wait(500);
|
|
}
|
|
}
|
|
9e: 18 16 cp r1, r24
|
|
a0: 19 06 cpc r1, r25
|
|
a2: 6c f4 brge .+26 ; 0xbe <wait+0x20>
|
|
a4: 20 e0 ldi r18, 0x00 ; 0
|
|
a6: 30 e0 ldi r19, 0x00 ; 0
|
|
a8: ef ec ldi r30, 0xCF ; 207
|
|
aa: f7 e0 ldi r31, 0x07 ; 7
|
|
ac: 31 97 sbiw r30, 0x01 ; 1
|
|
ae: f1 f7 brne .-4 ; 0xac <wait+0xe>
|
|
b0: 00 c0 rjmp .+0 ; 0xb2 <wait+0x14>
|
|
b2: 00 00 nop
|
|
b4: 2f 5f subi r18, 0xFF ; 255
|
|
b6: 3f 4f sbci r19, 0xFF ; 255
|
|
b8: 28 17 cp r18, r24
|
|
ba: 39 07 cpc r19, r25
|
|
bc: a9 f7 brne .-22 ; 0xa8 <wait+0xa>
|
|
be: 08 95 ret
|
|
|
|
000000c0 <test2>:
|
|
|
|
int test2(void)
|
|
{
|
|
c0: 6f 92 push r6
|
|
c2: 7f 92 push r7
|
|
c4: 8f 92 push r8
|
|
c6: 9f 92 push r9
|
|
c8: af 92 push r10
|
|
ca: bf 92 push r11
|
|
cc: cf 92 push r12
|
|
ce: df 92 push r13
|
|
d0: ef 92 push r14
|
|
d2: ff 92 push r15
|
|
d4: 0f 93 push r16
|
|
d6: 1f 93 push r17
|
|
d8: cf 93 push r28
|
|
da: df 93 push r29
|
|
DDRB=0x01; // Set PB0 pin as output for display select
|
|
dc: 81 e0 ldi r24, 0x01 ; 1
|
|
de: 87 bb out 0x17, r24 ; 23
|
|
|
|
spi_masterInit(); // Initialize spi module
|
|
e0: 66 d0 rcall .+204 ; 0x1ae <spi_masterInit>
|
|
displayDriverInit(); // Initialize display chip
|
|
e2: 87 d0 rcall .+270 ; 0x1f2 <displayDriverInit>
|
|
int dir = 0;
|
|
int factor = 0;
|
|
|
|
for(int i=-999; i<=9999; i++)
|
|
{
|
|
writeLedDisplay(i);
|
|
e4: 89 e1 ldi r24, 0x19 ; 25
|
|
e6: 9c ef ldi r25, 0xFC ; 252
|
|
e8: ca d0 rcall .+404 ; 0x27e <writeLedDisplay>
|
|
wait(5);
|
|
ea: 85 e0 ldi r24, 0x05 ; 5
|
|
ec: 90 e0 ldi r25, 0x00 ; 0
|
|
ee: d7 df rcall .-82 ; 0x9e <wait>
|
|
|
|
int intsy = 0;
|
|
int dir = 0;
|
|
int factor = 0;
|
|
|
|
for(int i=-999; i<=9999; i++)
|
|
f0: 09 e1 ldi r16, 0x19 ; 25
|
|
f2: 1c ef ldi r17, 0xFC ; 252
|
|
|
|
spi_masterInit(); // Initialize spi module
|
|
displayDriverInit(); // Initialize display chip
|
|
|
|
int intsy = 0;
|
|
int dir = 0;
|
|
f4: e1 2c mov r14, r1
|
|
f6: f1 2c mov r15, r1
|
|
DDRB=0x01; // Set PB0 pin as output for display select
|
|
|
|
spi_masterInit(); // Initialize spi module
|
|
displayDriverInit(); // Initialize display chip
|
|
|
|
int intsy = 0;
|
|
f8: c0 e0 ldi r28, 0x00 ; 0
|
|
fa: d0 e0 ldi r29, 0x00 ; 0
|
|
intsy--;
|
|
|
|
if(intsy < 0x06)
|
|
{
|
|
intsy = 0x06;
|
|
dir = 1;
|
|
fc: aa 24 eor r10, r10
|
|
fe: a3 94 inc r10
|
|
100: b1 2c mov r11, r1
|
|
else
|
|
intsy--;
|
|
|
|
if(intsy < 0x06)
|
|
{
|
|
intsy = 0x06;
|
|
102: 0f 2e mov r0, r31
|
|
104: f6 e0 ldi r31, 0x06 ; 6
|
|
106: cf 2e mov r12, r31
|
|
108: f0 2d mov r31, r0
|
|
10a: d1 2c mov r13, r1
|
|
dir = 1;
|
|
}
|
|
else if(intsy > 0x0F)
|
|
{
|
|
intsy = 0x0F;
|
|
dir = 0;
|
|
10c: 61 2c mov r6, r1
|
|
10e: 71 2c mov r7, r1
|
|
intsy = 0x06;
|
|
dir = 1;
|
|
}
|
|
else if(intsy > 0x0F)
|
|
{
|
|
intsy = 0x0F;
|
|
110: 0f 2e mov r0, r31
|
|
112: ff e0 ldi r31, 0x0F ; 15
|
|
114: 8f 2e mov r8, r31
|
|
116: f0 2d mov r31, r0
|
|
118: 91 2c mov r9, r1
|
|
11a: 0e c0 rjmp .+28 ; 0x138 <test2+0x78>
|
|
int dir = 0;
|
|
int factor = 0;
|
|
|
|
for(int i=-999; i<=9999; i++)
|
|
{
|
|
writeLedDisplay(i);
|
|
11c: c8 01 movw r24, r16
|
|
11e: af d0 rcall .+350 ; 0x27e <writeLedDisplay>
|
|
wait(5);
|
|
120: 85 e0 ldi r24, 0x05 ; 5
|
|
122: 90 e0 ldi r25, 0x00 ; 0
|
|
124: bc df rcall .-136 ; 0x9e <wait>
|
|
126: c8 01 movw r24, r16
|
|
128: 87 50 subi r24, 0x07 ; 7
|
|
12a: 9f 4f sbci r25, 0xFF ; 255
|
|
|
|
if(i < -150 && i > -250)
|
|
12c: 83 36 cpi r24, 0x63 ; 99
|
|
12e: 91 05 cpc r25, r1
|
|
130: 18 f4 brcc .+6 ; 0x138 <test2+0x78>
|
|
wait(75);
|
|
132: 8b e4 ldi r24, 0x4B ; 75
|
|
134: 90 e0 ldi r25, 0x00 ; 0
|
|
136: b3 df rcall .-154 ; 0x9e <wait>
|
|
138: c8 01 movw r24, r16
|
|
13a: 87 59 subi r24, 0x97 ; 151
|
|
13c: 91 09 sbc r25, r1
|
|
|
|
if(i > 150 && i < 250)
|
|
13e: 83 36 cpi r24, 0x63 ; 99
|
|
140: 91 05 cpc r25, r1
|
|
142: 18 f4 brcc .+6 ; 0x14a <test2+0x8a>
|
|
wait(75);
|
|
144: 8b e4 ldi r24, 0x4B ; 75
|
|
146: 90 e0 ldi r25, 0x00 ; 0
|
|
148: aa df rcall .-172 ; 0x9e <wait>
|
|
|
|
if(dir)
|
|
14a: e1 14 cp r14, r1
|
|
14c: f1 04 cpc r15, r1
|
|
14e: 11 f0 breq .+4 ; 0x154 <test2+0x94>
|
|
intsy++;
|
|
150: 21 96 adiw r28, 0x01 ; 1
|
|
152: 01 c0 rjmp .+2 ; 0x156 <test2+0x96>
|
|
else
|
|
intsy--;
|
|
154: 21 97 sbiw r28, 0x01 ; 1
|
|
|
|
if(intsy < 0x06)
|
|
156: c6 30 cpi r28, 0x06 ; 6
|
|
158: d1 05 cpc r29, r1
|
|
15a: 44 f0 brlt .+16 ; 0x16c <test2+0xac>
|
|
{
|
|
intsy = 0x06;
|
|
dir = 1;
|
|
}
|
|
else if(intsy > 0x0F)
|
|
15c: c0 31 cpi r28, 0x10 ; 16
|
|
15e: d1 05 cpc r29, r1
|
|
160: 4c f0 brlt .+18 ; 0x174 <test2+0xb4>
|
|
{
|
|
intsy = 0x0F;
|
|
dir = 0;
|
|
162: e6 2c mov r14, r6
|
|
164: f7 2c mov r15, r7
|
|
intsy = 0x06;
|
|
dir = 1;
|
|
}
|
|
else if(intsy > 0x0F)
|
|
{
|
|
intsy = 0x0F;
|
|
166: c8 2d mov r28, r8
|
|
168: d9 2d mov r29, r9
|
|
16a: 04 c0 rjmp .+8 ; 0x174 <test2+0xb4>
|
|
intsy--;
|
|
|
|
if(intsy < 0x06)
|
|
{
|
|
intsy = 0x06;
|
|
dir = 1;
|
|
16c: ea 2c mov r14, r10
|
|
16e: fb 2c mov r15, r11
|
|
else
|
|
intsy--;
|
|
|
|
if(intsy < 0x06)
|
|
{
|
|
intsy = 0x06;
|
|
170: cc 2d mov r28, r12
|
|
172: dd 2d mov r29, r13
|
|
{
|
|
intsy = 0x0F;
|
|
dir = 0;
|
|
}
|
|
|
|
spi_intensity(intsy);
|
|
174: ce 01 movw r24, r28
|
|
176: 5e d0 rcall .+188 ; 0x234 <spi_intensity>
|
|
|
|
int intsy = 0;
|
|
int dir = 0;
|
|
int factor = 0;
|
|
|
|
for(int i=-999; i<=9999; i++)
|
|
178: 0f 5f subi r16, 0xFF ; 255
|
|
17a: 1f 4f sbci r17, 0xFF ; 255
|
|
17c: 00 31 cpi r16, 0x10 ; 16
|
|
17e: 87 e2 ldi r24, 0x27 ; 39
|
|
180: 18 07 cpc r17, r24
|
|
182: 61 f6 brne .-104 ; 0x11c <test2+0x5c>
|
|
|
|
spi_intensity(intsy);
|
|
}
|
|
|
|
return 1;
|
|
184: 81 e0 ldi r24, 0x01 ; 1
|
|
186: 90 e0 ldi r25, 0x00 ; 0
|
|
188: df 91 pop r29
|
|
18a: cf 91 pop r28
|
|
18c: 1f 91 pop r17
|
|
18e: 0f 91 pop r16
|
|
190: ff 90 pop r15
|
|
192: ef 90 pop r14
|
|
194: df 90 pop r13
|
|
196: cf 90 pop r12
|
|
198: bf 90 pop r11
|
|
19a: af 90 pop r10
|
|
19c: 9f 90 pop r9
|
|
19e: 8f 90 pop r8
|
|
1a0: 7f 90 pop r7
|
|
1a2: 6f 90 pop r6
|
|
1a4: 08 95 ret
|
|
|
|
000001a6 <main>:
|
|
|
|
//opgaveb3();
|
|
//opgaveb4();
|
|
|
|
//test();
|
|
test2();
|
|
1a6: 8c df rcall .-232 ; 0xc0 <test2>
|
|
return 0;
|
|
}
|
|
1a8: 80 e0 ldi r24, 0x00 ; 0
|
|
1aa: 90 e0 ldi r25, 0x00 ; 0
|
|
1ac: 08 95 ret
|
|
|
|
000001ae <spi_masterInit>:
|
|
void displayOff()
|
|
{
|
|
spi_slaveSelect(0); // Select display chip
|
|
spi_write(0x0C); // Register 0B: Shutdown register
|
|
spi_write(0x00); // -> 1 = Normal operation
|
|
spi_slaveDeSelect(0); // Deselect display chip
|
|
1ae: 8f ef ldi r24, 0xFF ; 255
|
|
1b0: 87 bb out 0x17, r24 ; 23
|
|
1b2: bb 98 cbi 0x17, 3 ; 23
|
|
1b4: c0 9a sbi 0x18, 0 ; 24
|
|
1b6: 82 e5 ldi r24, 0x52 ; 82
|
|
1b8: 8d b9 out 0x0d, r24 ; 13
|
|
1ba: 08 95 ret
|
|
|
|
000001bc <spi_write>:
|
|
1bc: 8f b9 out 0x0f, r24 ; 15
|
|
1be: 77 9b sbis 0x0e, 7 ; 14
|
|
1c0: fe cf rjmp .-4 ; 0x1be <spi_write+0x2>
|
|
1c2: 08 95 ret
|
|
|
|
000001c4 <spi_slaveSelect>:
|
|
1c4: 98 b3 in r25, 0x18 ; 24
|
|
1c6: 21 e0 ldi r18, 0x01 ; 1
|
|
1c8: 30 e0 ldi r19, 0x00 ; 0
|
|
1ca: 02 c0 rjmp .+4 ; 0x1d0 <spi_slaveSelect+0xc>
|
|
1cc: 22 0f add r18, r18
|
|
1ce: 33 1f adc r19, r19
|
|
1d0: 8a 95 dec r24
|
|
1d2: e2 f7 brpl .-8 ; 0x1cc <spi_slaveSelect+0x8>
|
|
1d4: 20 95 com r18
|
|
1d6: 29 23 and r18, r25
|
|
1d8: 28 bb out 0x18, r18 ; 24
|
|
1da: 08 95 ret
|
|
|
|
000001dc <spi_slaveDeSelect>:
|
|
1dc: 98 b3 in r25, 0x18 ; 24
|
|
1de: 21 e0 ldi r18, 0x01 ; 1
|
|
1e0: 30 e0 ldi r19, 0x00 ; 0
|
|
1e2: 02 c0 rjmp .+4 ; 0x1e8 <spi_slaveDeSelect+0xc>
|
|
1e4: 22 0f add r18, r18
|
|
1e6: 33 1f adc r19, r19
|
|
1e8: 8a 95 dec r24
|
|
1ea: e2 f7 brpl .-8 ; 0x1e4 <spi_slaveDeSelect+0x8>
|
|
1ec: 29 2b or r18, r25
|
|
1ee: 28 bb out 0x18, r18 ; 24
|
|
1f0: 08 95 ret
|
|
|
|
000001f2 <displayDriverInit>:
|
|
1f2: 80 e0 ldi r24, 0x00 ; 0
|
|
1f4: e7 df rcall .-50 ; 0x1c4 <spi_slaveSelect>
|
|
1f6: 89 e0 ldi r24, 0x09 ; 9
|
|
1f8: e1 df rcall .-62 ; 0x1bc <spi_write>
|
|
1fa: 8f ef ldi r24, 0xFF ; 255
|
|
1fc: df df rcall .-66 ; 0x1bc <spi_write>
|
|
1fe: 80 e0 ldi r24, 0x00 ; 0
|
|
200: ed df rcall .-38 ; 0x1dc <spi_slaveDeSelect>
|
|
202: 80 e0 ldi r24, 0x00 ; 0
|
|
204: df df rcall .-66 ; 0x1c4 <spi_slaveSelect>
|
|
206: 8a e0 ldi r24, 0x0A ; 10
|
|
208: d9 df rcall .-78 ; 0x1bc <spi_write>
|
|
20a: 8f e0 ldi r24, 0x0F ; 15
|
|
20c: d7 df rcall .-82 ; 0x1bc <spi_write>
|
|
20e: 80 e0 ldi r24, 0x00 ; 0
|
|
210: e5 df rcall .-54 ; 0x1dc <spi_slaveDeSelect>
|
|
212: 80 e0 ldi r24, 0x00 ; 0
|
|
214: d7 df rcall .-82 ; 0x1c4 <spi_slaveSelect>
|
|
216: 8b e0 ldi r24, 0x0B ; 11
|
|
218: d1 df rcall .-94 ; 0x1bc <spi_write>
|
|
21a: 83 e0 ldi r24, 0x03 ; 3
|
|
21c: cf df rcall .-98 ; 0x1bc <spi_write>
|
|
21e: 80 e0 ldi r24, 0x00 ; 0
|
|
220: dd df rcall .-70 ; 0x1dc <spi_slaveDeSelect>
|
|
222: 80 e0 ldi r24, 0x00 ; 0
|
|
224: cf df rcall .-98 ; 0x1c4 <spi_slaveSelect>
|
|
226: 8c e0 ldi r24, 0x0C ; 12
|
|
228: c9 df rcall .-110 ; 0x1bc <spi_write>
|
|
22a: 81 e0 ldi r24, 0x01 ; 1
|
|
22c: c7 df rcall .-114 ; 0x1bc <spi_write>
|
|
22e: 80 e0 ldi r24, 0x00 ; 0
|
|
230: d5 cf rjmp .-86 ; 0x1dc <spi_slaveDeSelect>
|
|
232: 08 95 ret
|
|
|
|
00000234 <spi_intensity>:
|
|
234: cf 93 push r28
|
|
236: df 93 push r29
|
|
238: ec 01 movw r28, r24
|
|
23a: 99 23 and r25, r25
|
|
23c: 14 f4 brge .+4 ; 0x242 <spi_intensity+0xe>
|
|
23e: c0 e0 ldi r28, 0x00 ; 0
|
|
240: d0 e0 ldi r29, 0x00 ; 0
|
|
242: 80 e0 ldi r24, 0x00 ; 0
|
|
244: bf df rcall .-130 ; 0x1c4 <spi_slaveSelect>
|
|
246: 8a e0 ldi r24, 0x0A ; 10
|
|
248: b9 df rcall .-142 ; 0x1bc <spi_write>
|
|
24a: ce 01 movw r24, r28
|
|
24c: 60 97 sbiw r28, 0x10 ; 16
|
|
24e: 14 f0 brlt .+4 ; 0x254 <spi_intensity+0x20>
|
|
250: 8f e0 ldi r24, 0x0F ; 15
|
|
252: 90 e0 ldi r25, 0x00 ; 0
|
|
254: b3 df rcall .-154 ; 0x1bc <spi_write>
|
|
256: 80 e0 ldi r24, 0x00 ; 0
|
|
258: c1 df rcall .-126 ; 0x1dc <spi_slaveDeSelect>
|
|
25a: df 91 pop r29
|
|
25c: cf 91 pop r28
|
|
25e: 08 95 ret
|
|
|
|
00000260 <spi_writeWord>:
|
|
}
|
|
|
|
void spi_writeWord( unsigned char adress, unsigned char data )
|
|
{
|
|
260: cf 93 push r28
|
|
262: df 93 push r29
|
|
264: d8 2f mov r29, r24
|
|
266: c6 2f mov r28, r22
|
|
spi_slaveSelect(0); // Select display chip
|
|
268: 80 e0 ldi r24, 0x00 ; 0
|
|
26a: ac df rcall .-168 ; 0x1c4 <spi_slaveSelect>
|
|
spi_write(adress); // Write address
|
|
26c: 8d 2f mov r24, r29
|
|
26e: a6 df rcall .-180 ; 0x1bc <spi_write>
|
|
spi_write(data); // Write data
|
|
270: 8c 2f mov r24, r28
|
|
272: a4 df rcall .-184 ; 0x1bc <spi_write>
|
|
spi_slaveDeSelect(0); // Deselect display chip
|
|
274: 80 e0 ldi r24, 0x00 ; 0
|
|
276: b2 df rcall .-156 ; 0x1dc <spi_slaveDeSelect>
|
|
}
|
|
278: df 91 pop r29
|
|
27a: cf 91 pop r28
|
|
27c: 08 95 ret
|
|
|
|
0000027e <writeLedDisplay>:
|
|
|
|
void writeLedDisplay( int value )
|
|
{
|
|
27e: cf 93 push r28
|
|
280: df 93 push r29
|
|
if(value > 9999 || value < -999)
|
|
282: 9c 01 movw r18, r24
|
|
284: 29 51 subi r18, 0x19 ; 25
|
|
286: 3c 4f sbci r19, 0xFC ; 252
|
|
288: 27 3f cpi r18, 0xF7 ; 247
|
|
28a: 3a 42 sbci r19, 0x2A ; 42
|
|
28c: 08 f5 brcc .+66 ; 0x2d0 <writeLedDisplay+0x52>
|
|
return;
|
|
|
|
if(value < 0)
|
|
28e: 99 23 and r25, r25
|
|
290: 44 f4 brge .+16 ; 0x2a2 <writeLedDisplay+0x24>
|
|
{
|
|
value = value - (value + value);
|
|
292: cc 27 eor r28, r28
|
|
294: dd 27 eor r29, r29
|
|
296: c8 1b sub r28, r24
|
|
298: d9 0b sbc r29, r25
|
|
spi_writeWord(4, 10);
|
|
29a: 6a e0 ldi r22, 0x0A ; 10
|
|
29c: 84 e0 ldi r24, 0x04 ; 4
|
|
29e: e0 df rcall .-64 ; 0x260 <spi_writeWord>
|
|
2a0: 06 c0 rjmp .+12 ; 0x2ae <writeLedDisplay+0x30>
|
|
}
|
|
else
|
|
{
|
|
//Display 4
|
|
int d4 = value / 1000;
|
|
value = value % 1000;
|
|
2a2: 68 ee ldi r22, 0xE8 ; 232
|
|
2a4: 73 e0 ldi r23, 0x03 ; 3
|
|
2a6: 17 d0 rcall .+46 ; 0x2d6 <__divmodhi4>
|
|
2a8: ec 01 movw r28, r24
|
|
spi_writeWord(4, d4);
|
|
2aa: 84 e0 ldi r24, 0x04 ; 4
|
|
2ac: d9 df rcall .-78 ; 0x260 <spi_writeWord>
|
|
}
|
|
|
|
//Display 3
|
|
int d3 = value / 100;
|
|
value = value % 100;
|
|
2ae: ce 01 movw r24, r28
|
|
2b0: 64 e6 ldi r22, 0x64 ; 100
|
|
2b2: 70 e0 ldi r23, 0x00 ; 0
|
|
2b4: 10 d0 rcall .+32 ; 0x2d6 <__divmodhi4>
|
|
2b6: ec 01 movw r28, r24
|
|
spi_writeWord(3, d3);
|
|
2b8: 83 e0 ldi r24, 0x03 ; 3
|
|
2ba: d2 df rcall .-92 ; 0x260 <spi_writeWord>
|
|
|
|
//Display 2
|
|
int d2 = value / 10;
|
|
2bc: ce 01 movw r24, r28
|
|
2be: 6a e0 ldi r22, 0x0A ; 10
|
|
2c0: 70 e0 ldi r23, 0x00 ; 0
|
|
2c2: 09 d0 rcall .+18 ; 0x2d6 <__divmodhi4>
|
|
2c4: c8 2f mov r28, r24
|
|
value = value % 10;
|
|
spi_writeWord(2, d2);
|
|
2c6: 82 e0 ldi r24, 0x02 ; 2
|
|
2c8: cb df rcall .-106 ; 0x260 <spi_writeWord>
|
|
|
|
//Display 1
|
|
int d1 = value;
|
|
spi_writeWord(1, d1);
|
|
2ca: 6c 2f mov r22, r28
|
|
2cc: 81 e0 ldi r24, 0x01 ; 1
|
|
2ce: c8 df rcall .-112 ; 0x260 <spi_writeWord>
|
|
2d0: df 91 pop r29
|
|
2d2: cf 91 pop r28
|
|
2d4: 08 95 ret
|
|
|
|
000002d6 <__divmodhi4>:
|
|
2d6: 97 fb bst r25, 7
|
|
2d8: 07 2e mov r0, r23
|
|
2da: 16 f4 brtc .+4 ; 0x2e0 <__divmodhi4+0xa>
|
|
2dc: 00 94 com r0
|
|
2de: 06 d0 rcall .+12 ; 0x2ec <__divmodhi4_neg1>
|
|
2e0: 77 fd sbrc r23, 7
|
|
2e2: 08 d0 rcall .+16 ; 0x2f4 <__divmodhi4_neg2>
|
|
2e4: 0b d0 rcall .+22 ; 0x2fc <__udivmodhi4>
|
|
2e6: 07 fc sbrc r0, 7
|
|
2e8: 05 d0 rcall .+10 ; 0x2f4 <__divmodhi4_neg2>
|
|
2ea: 3e f4 brtc .+14 ; 0x2fa <__divmodhi4_exit>
|
|
|
|
000002ec <__divmodhi4_neg1>:
|
|
2ec: 90 95 com r25
|
|
2ee: 81 95 neg r24
|
|
2f0: 9f 4f sbci r25, 0xFF ; 255
|
|
2f2: 08 95 ret
|
|
|
|
000002f4 <__divmodhi4_neg2>:
|
|
2f4: 70 95 com r23
|
|
2f6: 61 95 neg r22
|
|
2f8: 7f 4f sbci r23, 0xFF ; 255
|
|
|
|
000002fa <__divmodhi4_exit>:
|
|
2fa: 08 95 ret
|
|
|
|
000002fc <__udivmodhi4>:
|
|
2fc: aa 1b sub r26, r26
|
|
2fe: bb 1b sub r27, r27
|
|
300: 51 e1 ldi r21, 0x11 ; 17
|
|
302: 07 c0 rjmp .+14 ; 0x312 <__udivmodhi4_ep>
|
|
|
|
00000304 <__udivmodhi4_loop>:
|
|
304: aa 1f adc r26, r26
|
|
306: bb 1f adc r27, r27
|
|
308: a6 17 cp r26, r22
|
|
30a: b7 07 cpc r27, r23
|
|
30c: 10 f0 brcs .+4 ; 0x312 <__udivmodhi4_ep>
|
|
30e: a6 1b sub r26, r22
|
|
310: b7 0b sbc r27, r23
|
|
|
|
00000312 <__udivmodhi4_ep>:
|
|
312: 88 1f adc r24, r24
|
|
314: 99 1f adc r25, r25
|
|
316: 5a 95 dec r21
|
|
318: a9 f7 brne .-22 ; 0x304 <__udivmodhi4_loop>
|
|
31a: 80 95 com r24
|
|
31c: 90 95 com r25
|
|
31e: bc 01 movw r22, r24
|
|
320: cd 01 movw r24, r26
|
|
322: 08 95 ret
|
|
|
|
00000324 <_exit>:
|
|
324: f8 94 cli
|
|
|
|
00000326 <__stop_program>:
|
|
326: ff cf rjmp .-2 ; 0x326 <__stop_program>
|