Added opgave6 with interrupts

This commit is contained in:
2016-02-02 17:36:55 +01:00
parent 88f86376dd
commit 548e467e25
6 changed files with 567 additions and 239 deletions
Binary file not shown.
+251 -121
View File
@@ -3,29 +3,31 @@ MIC-Week1.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 00800100 0000013e 2**0
0 .data 00000002 00800100 00000226 000002ba 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 000000ea 00000000 00000000 00000054 2**1
1 .text 00000226 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .comment 00000030 00000000 00000000 0000013e 2**0
2 .bss 00000006 00800102 00800102 000002bc 2**0
ALLOC
3 .comment 00000030 00000000 00000000 000002bc 2**0
CONTENTS, READONLY
3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000170 2**2
4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000002ec 2**2
CONTENTS, READONLY
4 .debug_aranges 00000040 00000000 00000000 000001ac 2**0
5 .debug_aranges 00000068 00000000 00000000 00000328 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 00000242 00000000 00000000 000001ec 2**0
6 .debug_info 000003fa 00000000 00000000 00000390 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 00000161 00000000 00000000 0000042e 2**0
7 .debug_abbrev 000001cb 00000000 00000000 0000078a 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000001cf 00000000 00000000 0000058f 2**0
8 .debug_line 00000333 00000000 00000000 00000955 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000070 00000000 00000000 00000760 2**2
9 .debug_frame 000000dc 00000000 00000000 00000c88 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00000194 00000000 00000000 000007d0 2**0
10 .debug_str 00000207 00000000 00000000 00000d64 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 000000cf 00000000 00000000 00000964 2**0
11 .debug_loc 00000163 00000000 00000000 00000f6b 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000030 00000000 00000000 00000a33 2**0
12 .debug_ranges 00000058 00000000 00000000 000010ce 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
@@ -33,73 +35,73 @@ 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>
4: 60 c0 rjmp .+192 ; 0xc6 <__bad_interrupt>
6: 00 00 nop
8: 49 c0 rjmp .+146 ; 0x9c <__bad_interrupt>
8: 5e c0 rjmp .+188 ; 0xc6 <__bad_interrupt>
a: 00 00 nop
c: 47 c0 rjmp .+142 ; 0x9c <__bad_interrupt>
c: 5c c0 rjmp .+184 ; 0xc6 <__bad_interrupt>
e: 00 00 nop
10: 45 c0 rjmp .+138 ; 0x9c <__bad_interrupt>
10: 5a c0 rjmp .+180 ; 0xc6 <__bad_interrupt>
12: 00 00 nop
14: 43 c0 rjmp .+134 ; 0x9c <__bad_interrupt>
14: 58 c0 rjmp .+176 ; 0xc6 <__bad_interrupt>
16: 00 00 nop
18: 41 c0 rjmp .+130 ; 0x9c <__bad_interrupt>
18: 56 c0 rjmp .+172 ; 0xc6 <__bad_interrupt>
1a: 00 00 nop
1c: 3f c0 rjmp .+126 ; 0x9c <__bad_interrupt>
1c: 54 c0 rjmp .+168 ; 0xc6 <__bad_interrupt>
1e: 00 00 nop
20: 3d c0 rjmp .+122 ; 0x9c <__bad_interrupt>
20: 52 c0 rjmp .+164 ; 0xc6 <__bad_interrupt>
22: 00 00 nop
24: 3b c0 rjmp .+118 ; 0x9c <__bad_interrupt>
24: 50 c0 rjmp .+160 ; 0xc6 <__bad_interrupt>
26: 00 00 nop
28: 39 c0 rjmp .+114 ; 0x9c <__bad_interrupt>
28: 4e c0 rjmp .+156 ; 0xc6 <__bad_interrupt>
2a: 00 00 nop
2c: 37 c0 rjmp .+110 ; 0x9c <__bad_interrupt>
2c: 4c c0 rjmp .+152 ; 0xc6 <__bad_interrupt>
2e: 00 00 nop
30: 35 c0 rjmp .+106 ; 0x9c <__bad_interrupt>
30: 4a c0 rjmp .+148 ; 0xc6 <__bad_interrupt>
32: 00 00 nop
34: 33 c0 rjmp .+102 ; 0x9c <__bad_interrupt>
34: 48 c0 rjmp .+144 ; 0xc6 <__bad_interrupt>
36: 00 00 nop
38: 31 c0 rjmp .+98 ; 0x9c <__bad_interrupt>
38: 46 c0 rjmp .+140 ; 0xc6 <__bad_interrupt>
3a: 00 00 nop
3c: 2f c0 rjmp .+94 ; 0x9c <__bad_interrupt>
3c: 44 c0 rjmp .+136 ; 0xc6 <__bad_interrupt>
3e: 00 00 nop
40: 2d c0 rjmp .+90 ; 0x9c <__bad_interrupt>
40: 68 c0 rjmp .+208 ; 0x112 <__vector_16>
42: 00 00 nop
44: 2b c0 rjmp .+86 ; 0x9c <__bad_interrupt>
44: 40 c0 rjmp .+128 ; 0xc6 <__bad_interrupt>
46: 00 00 nop
48: 29 c0 rjmp .+82 ; 0x9c <__bad_interrupt>
48: 3e c0 rjmp .+124 ; 0xc6 <__bad_interrupt>
4a: 00 00 nop
4c: 27 c0 rjmp .+78 ; 0x9c <__bad_interrupt>
4c: 3c c0 rjmp .+120 ; 0xc6 <__bad_interrupt>
4e: 00 00 nop
50: 25 c0 rjmp .+74 ; 0x9c <__bad_interrupt>
50: 3a c0 rjmp .+116 ; 0xc6 <__bad_interrupt>
52: 00 00 nop
54: 23 c0 rjmp .+70 ; 0x9c <__bad_interrupt>
54: 38 c0 rjmp .+112 ; 0xc6 <__bad_interrupt>
56: 00 00 nop
58: 21 c0 rjmp .+66 ; 0x9c <__bad_interrupt>
58: 36 c0 rjmp .+108 ; 0xc6 <__bad_interrupt>
5a: 00 00 nop
5c: 1f c0 rjmp .+62 ; 0x9c <__bad_interrupt>
5c: 34 c0 rjmp .+104 ; 0xc6 <__bad_interrupt>
5e: 00 00 nop
60: 1d c0 rjmp .+58 ; 0x9c <__bad_interrupt>
60: 32 c0 rjmp .+100 ; 0xc6 <__bad_interrupt>
62: 00 00 nop
64: 1b c0 rjmp .+54 ; 0x9c <__bad_interrupt>
64: 30 c0 rjmp .+96 ; 0xc6 <__bad_interrupt>
66: 00 00 nop
68: 19 c0 rjmp .+50 ; 0x9c <__bad_interrupt>
68: 2e c0 rjmp .+92 ; 0xc6 <__bad_interrupt>
6a: 00 00 nop
6c: 17 c0 rjmp .+46 ; 0x9c <__bad_interrupt>
6c: 2c c0 rjmp .+88 ; 0xc6 <__bad_interrupt>
6e: 00 00 nop
70: 15 c0 rjmp .+42 ; 0x9c <__bad_interrupt>
70: 2a c0 rjmp .+84 ; 0xc6 <__bad_interrupt>
72: 00 00 nop
74: 13 c0 rjmp .+38 ; 0x9c <__bad_interrupt>
74: 28 c0 rjmp .+80 ; 0xc6 <__bad_interrupt>
76: 00 00 nop
78: 11 c0 rjmp .+34 ; 0x9c <__bad_interrupt>
78: 26 c0 rjmp .+76 ; 0xc6 <__bad_interrupt>
7a: 00 00 nop
7c: 0f c0 rjmp .+30 ; 0x9c <__bad_interrupt>
7c: 24 c0 rjmp .+72 ; 0xc6 <__bad_interrupt>
7e: 00 00 nop
80: 0d c0 rjmp .+26 ; 0x9c <__bad_interrupt>
80: 22 c0 rjmp .+68 ; 0xc6 <__bad_interrupt>
82: 00 00 nop
84: 0b c0 rjmp .+22 ; 0x9c <__bad_interrupt>
84: 20 c0 rjmp .+64 ; 0xc6 <__bad_interrupt>
86: 00 00 nop
88: 09 c0 rjmp .+18 ; 0x9c <__bad_interrupt>
88: 1e c0 rjmp .+60 ; 0xc6 <__bad_interrupt>
...
0000008c <__ctors_end>:
@@ -109,96 +111,224 @@ Disassembly of section .text:
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
98: 1f d0 rcall .+62 ; 0xd8 <main>
9a: 25 c0 rjmp .+74 ; 0xe6 <_exit>
0000009c <__bad_interrupt>:
9c: b1 cf rjmp .-158 ; 0x0 <__vectors>
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: e6 e2 ldi r30, 0x26 ; 38
a0: f2 e0 ldi r31, 0x02 ; 2
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14>
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
ac: a2 30 cpi r26, 0x02 ; 2
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
0000009e <wait>:
void opgave1(void)
{
PORTD = 0b10000000;
wait( 500 );
PORTD = 0b01000000;
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
000000b2 <__do_clear_bss>:
b2: 21 e0 ldi r18, 0x01 ; 1
b4: a2 e0 ldi r26, 0x02 ; 2
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start>
000000c0 <opgave4>:
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: a8 30 cpi r26, 0x08 ; 8
be: b2 07 cpc r27, r18
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: a2 d0 rcall .+324 ; 0x208 <main>
c4: ae c0 rjmp .+348 ; 0x222 <_exit>
000000c6 <__bad_interrupt>:
c6: 9c cf rjmp .-200 ; 0x0 <__vectors>
000000c8 <wait>:
wait(pattern[count].delay * speed);
count++;
if(count >= NELEMS(pattern))
{
count = 0;
c8: 18 16 cp r1, r24
ca: 19 06 cpc r1, r25
cc: 0c f5 brge .+66 ; 0x110 <wait+0x48>
ce: 20 91 06 01 lds r18, 0x0106
d2: 30 91 07 01 lds r19, 0x0107
d6: 21 30 cpi r18, 0x01 ; 1
d8: 31 05 cpc r19, r1
da: 51 f0 breq .+20 ; 0xf0 <wait+0x28>
dc: 20 e0 ldi r18, 0x00 ; 0
de: 30 e0 ldi r19, 0x00 ; 0
e0: 0c c0 rjmp .+24 ; 0xfa <wait+0x32>
e2: 40 91 06 01 lds r20, 0x0106
e6: 50 91 07 01 lds r21, 0x0107
ea: 41 30 cpi r20, 0x01 ; 1
ec: 51 05 cpc r21, r1
ee: 29 f4 brne .+10 ; 0xfa <wait+0x32>
f0: 10 92 07 01 sts 0x0107, r1
f4: 10 92 06 01 sts 0x0106, r1
f8: 08 95 ret
fa: ef ec ldi r30, 0xCF ; 207
fc: f7 e0 ldi r31, 0x07 ; 7
fe: 31 97 sbiw r30, 0x01 ; 1
100: f1 f7 brne .-4 ; 0xfe <wait+0x36>
102: 00 c0 rjmp .+0 ; 0x104 <wait+0x3c>
104: 00 00 nop
106: 2f 5f subi r18, 0xFF ; 255
108: 3f 4f sbci r19, 0xFF ; 255
10a: 28 17 cp r18, r24
10c: 39 07 cpc r19, r25
10e: 49 f7 brne .-46 ; 0xe2 <wait+0x1a>
110: 08 95 ret
00000112 <__vector_16>:
112: 1f 92 push r1
114: 0f 92 push r0
116: 0f b6 in r0, 0x3f ; 63
118: 0f 92 push r0
11a: 11 24 eor r1, r1
11c: 2f 93 push r18
11e: 8f 93 push r24
120: 9f 93 push r25
122: 98 9b sbis 0x13, 0 ; 19
124: 1a c0 rjmp .+52 ; 0x15a <__vector_16+0x48>
126: 80 91 04 01 lds r24, 0x0104
12a: 90 91 05 01 lds r25, 0x0105
12e: 89 2b or r24, r25
130: a1 f4 brne .+40 ; 0x15a <__vector_16+0x48>
132: 80 91 00 01 lds r24, 0x0100
136: 90 91 01 01 lds r25, 0x0101
13a: 88 0f add r24, r24
13c: 99 1f adc r25, r25
13e: 90 93 01 01 sts 0x0101, r25
142: 80 93 00 01 sts 0x0100, r24
146: 81 e0 ldi r24, 0x01 ; 1
148: 90 e0 ldi r25, 0x00 ; 0
14a: 90 93 07 01 sts 0x0107, r25
14e: 80 93 06 01 sts 0x0106, r24
152: 90 93 05 01 sts 0x0105, r25
156: 80 93 04 01 sts 0x0104, r24
15a: 99 9b sbis 0x13, 1 ; 19
15c: 1d c0 rjmp .+58 ; 0x198 <__vector_16+0x86>
15e: 80 91 02 01 lds r24, 0x0102
162: 90 91 03 01 lds r25, 0x0103
166: 89 2b or r24, r25
168: b9 f4 brne .+46 ; 0x198 <__vector_16+0x86>
16a: 80 91 00 01 lds r24, 0x0100
16e: 90 91 01 01 lds r25, 0x0101
172: 99 23 and r25, r25
174: 0c f4 brge .+2 ; 0x178 <__vector_16+0x66>
176: 01 96 adiw r24, 0x01 ; 1
178: 95 95 asr r25
17a: 87 95 ror r24
17c: 90 93 01 01 sts 0x0101, r25
180: 80 93 00 01 sts 0x0100, r24
184: 81 e0 ldi r24, 0x01 ; 1
186: 90 e0 ldi r25, 0x00 ; 0
188: 90 93 07 01 sts 0x0107, r25
18c: 80 93 06 01 sts 0x0106, r24
190: 90 93 03 01 sts 0x0103, r25
194: 80 93 02 01 sts 0x0102, r24
198: 83 b3 in r24, 0x13 ; 19
19a: 81 11 cpse r24, r1
19c: 08 c0 rjmp .+16 ; 0x1ae <__vector_16+0x9c>
19e: 10 92 05 01 sts 0x0105, r1
1a2: 10 92 04 01 sts 0x0104, r1
1a6: 10 92 03 01 sts 0x0103, r1
1aa: 10 92 02 01 sts 0x0102, r1
1ae: 80 91 00 01 lds r24, 0x0100
1b2: 90 91 01 01 lds r25, 0x0101
1b6: 84 31 cpi r24, 0x14 ; 20
1b8: 91 05 cpc r25, r1
1ba: 3c f4 brge .+14 ; 0x1ca <__vector_16+0xb8>
1bc: 84 e1 ldi r24, 0x14 ; 20
1be: 90 e0 ldi r25, 0x00 ; 0
1c0: 90 93 01 01 sts 0x0101, r25
1c4: 80 93 00 01 sts 0x0100, r24
1c8: 09 c0 rjmp .+18 ; 0x1dc <__vector_16+0xca>
1ca: 81 3a cpi r24, 0xA1 ; 161
1cc: 9f 40 sbci r25, 0x0F ; 15
1ce: 34 f0 brlt .+12 ; 0x1dc <__vector_16+0xca>
1d0: 80 ea ldi r24, 0xA0 ; 160
1d2: 9f e0 ldi r25, 0x0F ; 15
1d4: 90 93 01 01 sts 0x0101, r25
1d8: 80 93 00 01 sts 0x0100, r24
1dc: 9f 91 pop r25
1de: 8f 91 pop r24
1e0: 2f 91 pop r18
1e2: 0f 90 pop r0
1e4: 0f be out 0x3f, r0 ; 63
1e6: 0f 90 pop r0
1e8: 1f 90 pop r1
1ea: 18 95 reti
000001ec <opgave6>:
}
}
void opgave4(void)
void opgave6(void)
{
wait( 50 );
c0: 82 e3 ldi r24, 0x32 ; 50
c2: 90 e0 ldi r25, 0x00 ; 0
c4: ec df rcall .-40 ; 0x9e <wait>
if (PORTC>= 0x80)
c6: af 9b sbis 0x15, 7 ; 21
c8: 03 c0 rjmp .+6 ; 0xd0 <opgave4+0x10>
{
PORTC= 0x1;
ca: 81 e0 ldi r24, 0x01 ; 1
cc: 85 bb out 0x15, r24 ; 21
ce: 08 95 ret
}
else
{
PORTC = (PORTC<<1);
d0: 85 b3 in r24, 0x15 ; 21
d2: 88 0f add r24, r24
d4: 85 bb out 0x15, r24 ; 21
d6: 08 95 ret
PORTD = 0b10000000;
1ec: 80 e8 ldi r24, 0x80 ; 128
1ee: 82 bb out 0x12, r24 ; 18
wait( blink );
1f0: 80 91 00 01 lds r24, 0x0100
1f4: 90 91 01 01 lds r25, 0x0101
1f8: 67 df rcall .-306 ; 0xc8 <wait>
PORTD = 0b00000000;
1fa: 12 ba out 0x12, r1 ; 18
wait( blink );
1fc: 80 91 00 01 lds r24, 0x0100
200: 90 91 01 01 lds r25, 0x0101
204: 61 cf rjmp .-318 ; 0xc8 <wait>
206: 08 95 ret
000000d8 <main>:
}
00000208 <main>:
}
}
int main(void)
{
DDRD = 0b00000000; //input
d8: 11 ba out 0x11, r1 ; 17
DDRC = 0b11111111; //output
da: 8f ef ldi r24, 0xFF ; 255
dc: 84 bb out 0x14, r24 ; 20
DDRC = 0b00000000; //input
208: 14 ba out 0x14, r1 ; 20
DDRD = 0b11111111; //output
20a: 8f ef ldi r24, 0xFF ; 255
20c: 81 bb out 0x11, r24 ; 17
//Alleen voor opgave 4
PORTC = 0x1;
de: 81 e0 ldi r24, 0x01 ; 1
e0: 85 bb out 0x15, r24 ; 21
while (1)
{
// Prescaler = FCPU/8000000
TCCR0 |= (1 << CS01) | (1 << CS00);
20e: 83 b7 in r24, 0x33 ; 51
210: 83 60 ori r24, 0x03 ; 3
212: 83 bf out 0x33, r24 ; 51
//Enable Overflow Interrupt Enable
TIMSK|=(1<<TOIE0);
214: 87 b7 in r24, 0x37 ; 55
216: 81 60 ori r24, 0x01 ; 1
218: 87 bf out 0x37, r24 ; 55
//Initialize Counter
TCNT0=0;
21a: 12 be out 0x32, r1 ; 50
sei();
21c: 78 94 sei
//opgave1();
//opgave2();
//opgave3();
opgave4();
e2: ee df rcall .-36 ; 0xc0 <opgave4>
if( (PIND) != 0 )
{
speaker( PIND );
}
*/
//opgave4();
//opgave5();
opgave6();
21e: e6 df rcall .-52 ; 0x1ec <opgave6>
//extraopgave();
}
e4: fe cf rjmp .-4 ; 0xe2 <main+0xa>
220: fe cf rjmp .-4 ; 0x21e <main+0x16>
000000e6 <_exit>:
e6: f8 94 cli
00000222 <_exit>:
222: f8 94 cli
000000e8 <__stop_program>:
e8: ff cf rjmp .-2 ; 0xe8 <__stop_program>
00000224 <__stop_program>:
224: ff cf rjmp .-2 ; 0x224 <__stop_program>
+140 -82
View File
@@ -2,6 +2,10 @@ Archive member included to satisfy reference by file (symbol)
c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o (exit)
c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
main.o (__do_copy_data)
c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
Discarded input sections
@@ -11,7 +15,15 @@ Discarded input sections
.data 0x00000000 0x0 main.o
.bss 0x00000000 0x0 main.o
.text.speaker 0x00000000 0x1e main.o
.text.extraopgave
0x00000000 0x10 main.o
.text.opgave1 0x00000000 0x1a main.o
.text.opgave3 0x00000000 0x1c main.o
.text.opgave4 0x00000000 0x1a main.o
.text.opgave5 0x00000000 0x8a main.o
.data.speed 0x00000000 0x2 main.o
.bss.count 0x00000000 0x2 main.o
.data.pattern 0x00000000 0x4b main.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
@@ -28,6 +40,38 @@ Discarded input sections
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
.text.libgcc.fixed
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text.libgcc.fixed
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
.text.libgcc.fixed
0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
Memory Configuration
@@ -146,7 +190,7 @@ END GROUP
.rela.plt
*(.rela.plt)
.text 0x00000000 0xea
.text 0x00000000 0x226
*(.vectors)
.vectors 0x00000000 0x8c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
0x00000000 __vector_default
@@ -185,6 +229,10 @@ END GROUP
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000098 0x1a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o)
0x00000098 __do_copy_data
.init4 0x000000b2 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o)
0x000000b2 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
@@ -195,58 +243,60 @@ END GROUP
*(.init8)
*(.init8)
*(.init9)
.init9 0x00000098 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
.init9 0x000000c2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
*(.init9)
*(.text)
.text 0x0000009c 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
0x0000009c __vector_22
0x0000009c __vector_28
0x0000009c __vector_1
0x0000009c __vector_32
0x0000009c __vector_34
0x0000009c __vector_24
0x0000009c __vector_12
0x0000009c __bad_interrupt
0x0000009c __vector_6
0x0000009c __vector_31
0x0000009c __vector_3
0x0000009c __vector_23
0x0000009c __vector_30
0x0000009c __vector_25
0x0000009c __vector_11
0x0000009c __vector_13
0x0000009c __vector_17
0x0000009c __vector_19
0x0000009c __vector_7
0x0000009c __vector_27
0x0000009c __vector_5
0x0000009c __vector_33
0x0000009c __vector_4
0x0000009c __vector_9
0x0000009c __vector_2
0x0000009c __vector_21
0x0000009c __vector_15
0x0000009c __vector_29
0x0000009c __vector_8
0x0000009c __vector_26
0x0000009c __vector_14
0x0000009c __vector_10
0x0000009c __vector_16
0x0000009c __vector_18
0x0000009c __vector_20
0x0000009e . = ALIGN (0x2)
.text 0x000000c6 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
0x000000c6 __vector_22
0x000000c6 __vector_28
0x000000c6 __vector_1
0x000000c6 __vector_32
0x000000c6 __vector_34
0x000000c6 __vector_24
0x000000c6 __vector_12
0x000000c6 __bad_interrupt
0x000000c6 __vector_6
0x000000c6 __vector_31
0x000000c6 __vector_3
0x000000c6 __vector_23
0x000000c6 __vector_30
0x000000c6 __vector_25
0x000000c6 __vector_11
0x000000c6 __vector_13
0x000000c6 __vector_17
0x000000c6 __vector_19
0x000000c6 __vector_7
0x000000c6 __vector_27
0x000000c6 __vector_5
0x000000c6 __vector_33
0x000000c6 __vector_4
0x000000c6 __vector_9
0x000000c6 __vector_2
0x000000c6 __vector_21
0x000000c6 __vector_15
0x000000c6 __vector_29
0x000000c6 __vector_8
0x000000c6 __vector_26
0x000000c6 __vector_14
0x000000c6 __vector_10
0x000000c6 __vector_18
0x000000c6 __vector_20
0x000000c8 . = ALIGN (0x2)
*(.text.*)
.text.wait 0x0000009e 0x22 main.o
0x0000009e wait
.text.opgave4 0x000000c0 0x18 main.o
0x000000c0 opgave4
.text.main 0x000000d8 0xe main.o
0x000000d8 main
0x000000e6 . = ALIGN (0x2)
.text.wait 0x000000c8 0x4a main.o
0x000000c8 wait
.text.__vector_16
0x00000112 0xda main.o
0x00000112 __vector_16
.text.opgave6 0x000001ec 0x1c main.o
0x000001ec opgave6
.text.main 0x00000208 0x1a main.o
0x00000208 main
0x00000222 . = ALIGN (0x2)
*(.fini9)
.fini9 0x000000e6 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
0x000000e6 _exit
0x000000e6 exit
.fini9 0x00000222 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
0x00000222 _exit
0x00000222 exit
*(.fini9)
*(.fini8)
*(.fini8)
@@ -265,36 +315,44 @@ END GROUP
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000000e6 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
.fini0 0x00000222 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o)
*(.fini0)
0x000000ea _etext = .
0x00000226 _etext = .
.data 0x00800100 0x0 load address 0x000000ea
.data 0x00800100 0x2 load address 0x00000226
0x00800100 PROVIDE (__data_start, .)
*(.data)
*(.data*)
.data.blink 0x00800100 0x2 main.o
0x00800100 blink
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x00800100 . = ALIGN (0x2)
0x00800100 _edata = .
0x00800100 PROVIDE (__data_end, .)
0x00800102 . = ALIGN (0x2)
0x00800102 _edata = .
0x00800102 PROVIDE (__data_end, .)
.bss 0x00800100 0x0
0x00800100 PROVIDE (__bss_start, .)
.bss 0x00800102 0x6
0x00800102 PROVIDE (__bss_start, .)
*(.bss)
*(.bss*)
.bss.b2 0x00800102 0x2 main.o
0x00800102 b2
.bss.b1 0x00800104 0x2 main.o
0x00800104 b1
.bss.reset 0x00800106 0x2 main.o
0x00800106 reset
*(COMMON)
0x00800100 PROVIDE (__bss_end, .)
0x000000ea __data_load_start = LOADADDR (.data)
0x000000ea __data_load_end = (__data_load_start + SIZEOF (.data))
0x00800108 PROVIDE (__bss_end, .)
0x00000226 __data_load_start = LOADADDR (.data)
0x00000228 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800100 0x0
0x00800100 PROVIDE (__noinit_start, .)
.noinit 0x00800108 0x0
0x00800108 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800100 PROVIDE (__noinit_end, .)
0x00800100 _end = .
0x00800100 PROVIDE (__heap_start, .)
0x00800108 PROVIDE (__noinit_end, .)
0x00800108 _end = .
0x00800108 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
@@ -358,38 +416,38 @@ END GROUP
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x40
.debug_aranges 0x00000000 0x68
*(.debug_aranges)
.debug_aranges
0x00000000 0x40 main.o
0x00000000 0x68 main.o
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0x242
.debug_info 0x00000000 0x3fa
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x242 main.o
.debug_info 0x00000000 0x3fa main.o
.debug_abbrev 0x00000000 0x161
.debug_abbrev 0x00000000 0x1cb
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x161 main.o
.debug_abbrev 0x00000000 0x1cb main.o
.debug_line 0x00000000 0x1cf
.debug_line 0x00000000 0x333
*(.debug_line .debug_line.* .debug_line_end)
.debug_line 0x00000000 0x1cf main.o
.debug_line 0x00000000 0x333 main.o
.debug_frame 0x00000000 0x70
.debug_frame 0x00000000 0xdc
*(.debug_frame)
.debug_frame 0x00000000 0x70 main.o
.debug_frame 0x00000000 0xdc main.o
.debug_str 0x00000000 0x194
.debug_str 0x00000000 0x207
*(.debug_str)
.debug_str 0x00000000 0x194 main.o
0x1c8 (size before relaxing)
.debug_str 0x00000000 0x207 main.o
0x23b (size before relaxing)
.debug_loc 0x00000000 0xcf
.debug_loc 0x00000000 0x163
*(.debug_loc)
.debug_loc 0x00000000 0xcf main.o
.debug_loc 0x00000000 0x163 main.o
.debug_macinfo
*(.debug_macinfo)
@@ -409,9 +467,9 @@ END GROUP
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x00000000 0x30
.debug_ranges 0x00000000 0x58
*(.debug_ranges)
.debug_ranges 0x00000000 0x30 main.o
.debug_ranges 0x00000000 0x58 main.o
.debug_macro
*(.debug_macro)
+36 -15
View File
@@ -1,17 +1,38 @@
S01100004D49432D5765656B312E7372656350
S113000045C000004BC0000049C0000047C00000CC
S113001045C0000043C0000041C000003FC00000D4
S11300203DC000003BC0000039C0000037C00000E4
S113003035C0000033C0000031C000002FC00000F4
S11300402DC000002BC0000029C0000027C0000004
S113005025C0000023C0000021C000001FC0000014
S11300601DC000001BC0000019C0000017C0000024
S113007015C0000013C0000011C000000FC0000034
S11300800DC000000BC0000009C0000011241FBEF9
S1130090CFEFD0E1DEBFCDBF1FD025C0B1CF181642
S11300A019066CF420E030E0EFECF7E03197F1F75B
S11300B000C000002F5F3F4F28173907A9F70895A4
S11300C082E390E0ECDFAF9B03C081E085BB089541
S11300D085B3880F85BB089511BA8FEF84BB81E087
S10D00E085BBEEDFFECFF894FFCFDE
S113000045C0000060C000005EC000005CC000008D
S11300105AC0000058C0000056C0000054C0000080
S113002052C0000050C000004EC000004CC0000090
S11300304AC0000048C0000046C0000044C00000A0
S113004068C0000040C000003EC000003CC000008A
S11300503AC0000038C0000036C0000034C00000C0
S113006032C0000030C000002EC000002CC00000D0
S11300702AC0000028C0000026C0000024C00000E0
S113008022C0000020C000001EC0000011241FBEBA
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E6E2FA
S11300A0F2E000E00BBF02C007900D92A230B1074E
S11300B0D9F721E0A2E0B1E001C01D92A830B20757
S11300C0E1F7A2D0AEC09CCF181619060CF520910A
S11300D00601309107012130310551F020E030E074
S11300E00CC040910601509107014130510529F49B
S11300F010920701109206010895EFECF7E0319792
S1130100F1F700C000002F5F3F4F2817390749F768
S113011008951F920F920FB60F9211242F938F936D
S11301209F93989B1AC08091040190910501892B9B
S1130130A1F48091000190910101880F991F90937F
S113014001018093000181E090E090930701809386
S113015006019093050180930401999B1DC0809131
S1130160020190910301892BB9F4809100019091CF
S1130170010199230CF401969595879590930101BB
S11301808093000181E090E0909307018093060141
S1130190909303018093020183B3811108C01092EC
S11301A00501109204011092030110920201809142
S11301B0000190910101843191053CF484E190E0C7
S11301C0909301018093000109C0813A9F4034F06B
S11301D080EA9FE090930101809300019F918F91A9
S11301E02F910F900FBE0F901F90189580E882BB3F
S11301F0809100019091010167DF12BA80910001A2
S11302009091010161CF089514BA8FEF81BB83B738
S1130210836083BF87B7816087BF12BE7894E6DFAF
S1090220FECFF894FFCFAD
S1050226E803E7
S9030000FC
+3
View File
@@ -1,4 +1,5 @@
main.d main.o: .././main.c \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \
@@ -14,6 +15,8 @@ main.d main.o: .././main.c \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
+137 -21
View File
@@ -6,10 +6,14 @@
*/
#define F_CPU 8000000UL
#define NELEMS(x) (sizeof(x) / sizeof(x[0]))
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
int reset = 0;
/******************************************************************/
void wait( int ms )
/*
@@ -24,42 +28,116 @@ Version : DMK, Initial code
{
for (int i=0; i<ms; i++)
{
if(reset == 1)
{
reset = 0;
return;
}
_delay_ms( 1 ); // library function (max 30 ms at 8MHz)
}
}
typedef struct {
unsigned char data;
unsigned int delay ;
} PATTERN_STRUCT;
PATTERN_STRUCT pattern[] = {
{0x00, 100}, {0x01, 100}, {0x02, 100}, {0x04, 100}, {0x10, 100}, {0x20, 100}, {0x40, 100}, {0x80, 100},
{0x00, 100},
{0xAA, 50}, {0x55, 50},
{0xAA, 50}, {0x55, 50},
{0xAA, 50}, {0x55, 50},
{0x00, 100},
{0x81, 100}, {0x42, 100}, {0x24, 100}, {0x18, 100}, {0x0F, 200}, {0xF0, 200}, {0x0F, 200}, {0xF0, 200},
{0x00, 0x00}
};
int count = 0;
int speed = 1;
int blink = 1000;
int b1 = 0;
int b2 = 0;
ISR(TIMER0_OVF_vect) {
if( (0b00000001 & PINC) != 0 && b1 == 0)
{
blink = blink*2;
reset = 1;
b1 = 1;
}
if( (0b00000010 & PINC) != 0 && b2 == 0 )
{
blink = blink/2;
reset = 1;
b2 = 1;
}
if( PINC == 0)
{
b1 = 0;
b2 = 0;
}
if(blink < 20)
{
blink = 20;
}
else if(blink > 4000)
{
blink = 4000;
}
}
int main(void)
{
DDRD = 0b00000000; //input
DDRC = 0b11111111; //output
DDRC = 0b00000000; //input
DDRD = 0b11111111; //output
// Prescaler = FCPU/8000000
TCCR0 |= (1 << CS01) | (1 << CS00);
//Enable Overflow Interrupt Enable
TIMSK|=(1<<TOIE0);
//Initialize Counter
TCNT0=0;
sei();
//Alleen voor opgave 4
PORTC = 0x1;
//PORTC = 0x1;
while (1)
{
//opgave1();
//opgave2();
//opgave3();
opgave4();
//opgave4();
//opgave5();
opgave6();
/*
if( (PIND) != 0 )
{
speaker( PIND );
}
*/
//extraopgave();
}
return 1;
}
void extraopgave(void)
{
if( (PINC) != 0 )
{
speaker( PINC );
}
}
void speaker(int i)
{
//PORTC moet hiervoor output zijn en PORTD input
PORTC = 0b01010101;
//PORTD moet hiervoor output zijn en PORTC input
PORTD = 0b01010101;
wait( i );
PORTC = 0b00000000;
PORTD = 0b00000000;
wait( i );
}
@@ -71,16 +149,54 @@ void opgave1(void)
wait ( 500 );
}
void opgave4(void)
void opgave3(void)
{
wait( 50 );
if (PORTC>= 0x80)
if( (0b00000001 & PINC) != 0 )
{
PORTC= 0x1;
}
else
{
PORTC = (PORTC<<1);
PORTD = 0b10000000;
wait( 100 );
PORTD = 0b00000000;
wait( 100 );
}
}
void opgave4(void)
{
wait( 50 );
if (PORTD>= 0x80)
{
PORTD= 0x1;
}
else
{
PORTD = (PORTD<<1);
}
}
void opgave5(void)
{
if(PINC != 0 )
{
speed = PINC;
}
// Write data to PORTD
PORTD = pattern[count].data;
// wait
wait(pattern[count].delay * speed);
count++;
if(count >= NELEMS(pattern))
{
count = 0;
}
}
void opgave6(void)
{
PORTD = 0b10000000;
wait( blink );
PORTD = 0b00000000;
wait( blink );
}