Added week 5

This commit is contained in:
2016-03-15 11:25:29 +01:00
parent e29d649780
commit 4faa4ee134
17 changed files with 1993 additions and 0 deletions
+6
View File
@@ -11,6 +11,8 @@ Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "MIC-Week3", "..\MIC-Week3\M
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "MIC-Week4", "..\MIC-Week4\MIC-Week4.cproj", "{A7BD1991-6E26-4C61-A739-4CB38ED58191}"
EndProject
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "MIC-Week5", "..\MIC-Week5\MIC-Week5.cproj", "{FEE1DB3A-F9C3-4A60-B915-11FDD71ADFFF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
@@ -33,6 +35,10 @@ Global
{A7BD1991-6E26-4C61-A739-4CB38ED58191}.Debug|AVR.Build.0 = Debug|AVR
{A7BD1991-6E26-4C61-A739-4CB38ED58191}.Release|AVR.ActiveCfg = Release|AVR
{A7BD1991-6E26-4C61-A739-4CB38ED58191}.Release|AVR.Build.0 = Release|AVR
{FEE1DB3A-F9C3-4A60-B915-11FDD71ADFFF}.Debug|AVR.ActiveCfg = Debug|AVR
{FEE1DB3A-F9C3-4A60-B915-11FDD71ADFFF}.Debug|AVR.Build.0 = Debug|AVR
{FEE1DB3A-F9C3-4A60-B915-11FDD71ADFFF}.Release|AVR.ActiveCfg = Release|AVR
{FEE1DB3A-F9C3-4A60-B915-11FDD71ADFFF}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+1
View File
@@ -0,0 +1 @@
:00000001FF
+597
View File
@@ -0,0 +1,597 @@
MIC-Week5.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000000e 00800100 000002d4 00000348 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 000002d4 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .comment 00000030 00000000 00000000 00000356 2**0
CONTENTS, READONLY
3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000388 2**2
CONTENTS, READONLY
4 .debug_aranges 000000b8 00000000 00000000 000003c4 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 000009fa 00000000 00000000 0000047c 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 00000479 00000000 00000000 00000e76 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000005bc 00000000 00000000 000012ef 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000168 00000000 00000000 000018ac 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 00000281 00000000 00000000 00001a14 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_loc 00000472 00000000 00000000 00001c95 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000088 00000000 00000000 00002107 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end>
2: 00 00 nop
4: 60 c0 rjmp .+192 ; 0xc6 <__bad_interrupt>
6: 00 00 nop
8: 5e c0 rjmp .+188 ; 0xc6 <__bad_interrupt>
a: 00 00 nop
c: 5c c0 rjmp .+184 ; 0xc6 <__bad_interrupt>
e: 00 00 nop
10: 5a c0 rjmp .+180 ; 0xc6 <__bad_interrupt>
12: 00 00 nop
14: 58 c0 rjmp .+176 ; 0xc6 <__bad_interrupt>
16: 00 00 nop
18: 56 c0 rjmp .+172 ; 0xc6 <__bad_interrupt>
1a: 00 00 nop
1c: 54 c0 rjmp .+168 ; 0xc6 <__bad_interrupt>
1e: 00 00 nop
20: 52 c0 rjmp .+164 ; 0xc6 <__bad_interrupt>
22: 00 00 nop
24: 50 c0 rjmp .+160 ; 0xc6 <__bad_interrupt>
26: 00 00 nop
28: 4e c0 rjmp .+156 ; 0xc6 <__bad_interrupt>
2a: 00 00 nop
2c: 4c c0 rjmp .+152 ; 0xc6 <__bad_interrupt>
2e: 00 00 nop
30: 4a c0 rjmp .+148 ; 0xc6 <__bad_interrupt>
32: 00 00 nop
34: 48 c0 rjmp .+144 ; 0xc6 <__bad_interrupt>
36: 00 00 nop
38: 46 c0 rjmp .+140 ; 0xc6 <__bad_interrupt>
3a: 00 00 nop
3c: 44 c0 rjmp .+136 ; 0xc6 <__bad_interrupt>
3e: 00 00 nop
40: 42 c0 rjmp .+132 ; 0xc6 <__bad_interrupt>
42: 00 00 nop
44: 40 c0 rjmp .+128 ; 0xc6 <__bad_interrupt>
46: 00 00 nop
48: 3e c0 rjmp .+124 ; 0xc6 <__bad_interrupt>
4a: 00 00 nop
4c: 3c c0 rjmp .+120 ; 0xc6 <__bad_interrupt>
4e: 00 00 nop
50: 3a c0 rjmp .+116 ; 0xc6 <__bad_interrupt>
52: 00 00 nop
54: 38 c0 rjmp .+112 ; 0xc6 <__bad_interrupt>
56: 00 00 nop
58: 36 c0 rjmp .+108 ; 0xc6 <__bad_interrupt>
5a: 00 00 nop
5c: 34 c0 rjmp .+104 ; 0xc6 <__bad_interrupt>
5e: 00 00 nop
60: 32 c0 rjmp .+100 ; 0xc6 <__bad_interrupt>
62: 00 00 nop
64: 30 c0 rjmp .+96 ; 0xc6 <__bad_interrupt>
66: 00 00 nop
68: 2e c0 rjmp .+92 ; 0xc6 <__bad_interrupt>
6a: 00 00 nop
6c: 2c c0 rjmp .+88 ; 0xc6 <__bad_interrupt>
6e: 00 00 nop
70: 2a c0 rjmp .+84 ; 0xc6 <__bad_interrupt>
72: 00 00 nop
74: 28 c0 rjmp .+80 ; 0xc6 <__bad_interrupt>
76: 00 00 nop
78: 26 c0 rjmp .+76 ; 0xc6 <__bad_interrupt>
7a: 00 00 nop
7c: 24 c0 rjmp .+72 ; 0xc6 <__bad_interrupt>
7e: 00 00 nop
80: 22 c0 rjmp .+68 ; 0xc6 <__bad_interrupt>
82: 00 00 nop
84: 20 c0 rjmp .+64 ; 0xc6 <__bad_interrupt>
86: 00 00 nop
88: 1e c0 rjmp .+60 ; 0xc6 <__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
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: e4 ed ldi r30, 0xD4 ; 212
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: ae 30 cpi r26, 0x0E ; 14
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
b2: 21 e0 ldi r18, 0x01 ; 1
b4: ae e0 ldi r26, 0x0E ; 14
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start>
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: ae 30 cpi r26, 0x0E ; 14
be: b2 07 cpc r27, r18
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: b9 d0 rcall .+370 ; 0x236 <main>
c4: 05 c1 rjmp .+522 ; 0x2d0 <_exit>
000000c6 <__bad_interrupt>:
c6: 9c cf rjmp .-200 ; 0x0 <__vectors>
000000c8 <display_char>:
}
}
void display_char( unsigned char dat )
{
PORTC = dat & 0xF0; // hoge nibble
c8: 98 2f mov r25, r24
ca: 90 7f andi r25, 0xF0 ; 240
cc: 95 bb out 0x15, r25 ; 21
PORTC = PORTC | 0x0C; // Enable on (EN = 1, RS=1),
ce: 95 b3 in r25, 0x15 ; 21
d0: 9c 60 ori r25, 0x0C ; 12
d2: 95 bb out 0x15, r25 ; 21
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
d4: ef e9 ldi r30, 0x9F ; 159
d6: ff e0 ldi r31, 0x0F ; 15
d8: 31 97 sbiw r30, 0x01 ; 1
da: f1 f7 brne .-4 ; 0xd8 <display_char+0x10>
dc: 00 c0 rjmp .+0 ; 0xde <display_char+0x16>
de: 00 00 nop
_delay_ms(2); // wait 1 ms
PORTC = 0x04; // Enable off (EN = 0, RS = 1)
e0: 94 e0 ldi r25, 0x04 ; 4
e2: 95 bb out 0x15, r25 ; 21
e4: ef e9 ldi r30, 0x9F ; 159
e6: ff e0 ldi r31, 0x0F ; 15
e8: 31 97 sbiw r30, 0x01 ; 1
ea: f1 f7 brne .-4 ; 0xe8 <display_char+0x20>
ec: 00 c0 rjmp .+0 ; 0xee <display_char+0x26>
ee: 00 00 nop
_delay_ms(2); // wait 1 ms
PORTC = (dat & 0x0F) << 4; // lage nibble
f0: f0 e1 ldi r31, 0x10 ; 16
f2: 8f 9f mul r24, r31
f4: c0 01 movw r24, r0
f6: 11 24 eor r1, r1
f8: 85 bb out 0x15, r24 ; 21
PORTC = PORTC | 0x0C; // Enable on (RS=1),
fa: 85 b3 in r24, 0x15 ; 21
fc: 8c 60 ori r24, 0x0C ; 12
fe: 85 bb out 0x15, r24 ; 21
100: 8f e9 ldi r24, 0x9F ; 159
102: 9f e0 ldi r25, 0x0F ; 15
104: 01 97 sbiw r24, 0x01 ; 1
106: f1 f7 brne .-4 ; 0x104 <display_char+0x3c>
108: 00 c0 rjmp .+0 ; 0x10a <display_char+0x42>
10a: 00 00 nop
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x00; // stop
10c: 15 ba out 0x15, r1 ; 21
10e: 08 95 ret
00000110 <lcd_command>:
// (EN=0 RS=0)
}
void lcd_command ( unsigned char dat )
{
PORTC = dat & 0xF0; // hoge nibble
110: 98 2f mov r25, r24
112: 90 7f andi r25, 0xF0 ; 240
114: 95 bb out 0x15, r25 ; 21
PORTC = PORTC | 0x08; // data (RS=0),
116: ab 9a sbi 0x15, 3 ; 21
118: ef e9 ldi r30, 0x9F ; 159
11a: ff e0 ldi r31, 0x0F ; 15
11c: 31 97 sbiw r30, 0x01 ; 1
11e: f1 f7 brne .-4 ; 0x11c <lcd_command+0xc>
120: 00 c0 rjmp .+0 ; 0x122 <lcd_command+0x12>
122: 00 00 nop
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x04; // stop (EN = 0)
124: 94 e0 ldi r25, 0x04 ; 4
126: 95 bb out 0x15, r25 ; 21
128: ef e9 ldi r30, 0x9F ; 159
12a: ff e0 ldi r31, 0x0F ; 15
12c: 31 97 sbiw r30, 0x01 ; 1
12e: f1 f7 brne .-4 ; 0x12c <lcd_command+0x1c>
130: 00 c0 rjmp .+0 ; 0x132 <lcd_command+0x22>
132: 00 00 nop
_delay_ms(2); // wait 1 ms
PORTC = (dat & 0x0F) << 4; // lage nibble
134: f0 e1 ldi r31, 0x10 ; 16
136: 8f 9f mul r24, r31
138: c0 01 movw r24, r0
13a: 11 24 eor r1, r1
13c: 85 bb out 0x15, r24 ; 21
PORTC = PORTC | 0x08; // data (RS=0),
13e: ab 9a sbi 0x15, 3 ; 21
140: 8f e9 ldi r24, 0x9F ; 159
142: 9f e0 ldi r25, 0x0F ; 15
144: 01 97 sbiw r24, 0x01 ; 1
146: f1 f7 brne .-4 ; 0x144 <lcd_command+0x34>
148: 00 c0 rjmp .+0 ; 0x14a <lcd_command+0x3a>
14a: 00 00 nop
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x00; // stop
14c: 15 ba out 0x15, r1 ; 21
14e: 08 95 ret
00000150 <display_text>:
_delay_ms(100);
}
void display_text( int line, char *text )
{
150: cf 93 push r28
152: df 93 push r29
154: eb 01 movw r28, r22
// eerst de eerste 8 karakters = regel 1
if(line)
156: 89 2b or r24, r25
158: 19 f0 breq .+6 ; 0x160 <display_text+0x10>
{
// eerste pos regel 1
lcd_command(0xC0);
15a: 80 ec ldi r24, 0xC0 ; 192
15c: d9 df rcall .-78 ; 0x110 <lcd_command>
15e: 02 c0 rjmp .+4 ; 0x164 <display_text+0x14>
}
else
{
// regel 0
lcd_command(0x80);
160: 80 e8 ldi r24, 0x80 ; 128
162: d6 df rcall .-84 ; 0x110 <lcd_command>
}
int count = 0;
while (text[count] != '\0') {
164: 88 81 ld r24, Y
166: 88 23 and r24, r24
168: 59 f0 breq .+22 ; 0x180 <display_text+0x30>
16a: 21 96 adiw r28, 0x01 ; 1
display_char( text[count] );
16c: ad df rcall .-166 ; 0xc8 <display_char>
16e: 8f e9 ldi r24, 0x9F ; 159
170: 9f e0 ldi r25, 0x0F ; 15
172: 01 97 sbiw r24, 0x01 ; 1
174: f1 f7 brne .-4 ; 0x172 <display_text+0x22>
176: 00 c0 rjmp .+0 ; 0x178 <display_text+0x28>
178: 00 00 nop
lcd_command(0x80);
}
int count = 0;
while (text[count] != '\0') {
17a: 89 91 ld r24, Y+
17c: 81 11 cpse r24, r1
17e: f6 cf rjmp .-20 ; 0x16c <display_text+0x1c>
display_char( text[count] );
count++;
_delay_ms(2);
}
}
180: df 91 pop r29
182: cf 91 pop r28
184: 08 95 ret
00000186 <clear_display>:
void clear_display()
{
lcd_command(0b00000001);
186: 81 e0 ldi r24, 0x01 ; 1
188: c3 df rcall .-122 ; 0x110 <lcd_command>
lcd_command(0b10000000);
18a: 80 e8 ldi r24, 0x80 ; 128
18c: c1 cf rjmp .-126 ; 0x110 <lcd_command>
18e: 08 95 ret
00000190 <lcd_init>:
void display_char(unsigned char dat);
void lcd_command(unsigned char dat);
void lcd_init()
{
DDRC = 0b11111111;
190: 8f ef ldi r24, 0xFF ; 255
192: 84 bb out 0x14, r24 ; 20
194: 2f ef ldi r18, 0xFF ; 255
196: 80 e7 ldi r24, 0x70 ; 112
198: 92 e0 ldi r25, 0x02 ; 2
19a: 21 50 subi r18, 0x01 ; 1
19c: 80 40 sbci r24, 0x00 ; 0
19e: 90 40 sbci r25, 0x00 ; 0
1a0: e1 f7 brne .-8 ; 0x19a <lcd_init+0xa>
1a2: 00 c0 rjmp .+0 ; 0x1a4 <lcd_init+0x14>
1a4: 00 00 nop
_delay_ms(100);
// return home
lcd_command( 0x02 );
1a6: 82 e0 ldi r24, 0x02 ; 2
1a8: b3 df rcall .-154 ; 0x110 <lcd_command>
1aa: 2f e7 ldi r18, 0x7F ; 127
1ac: 88 e3 ldi r24, 0x38 ; 56
1ae: 91 e0 ldi r25, 0x01 ; 1
1b0: 21 50 subi r18, 0x01 ; 1
1b2: 80 40 sbci r24, 0x00 ; 0
1b4: 90 40 sbci r25, 0x00 ; 0
1b6: e1 f7 brne .-8 ; 0x1b0 <lcd_init+0x20>
1b8: 00 c0 rjmp .+0 ; 0x1ba <lcd_init+0x2a>
1ba: 00 00 nop
// mode: 4 bits interface data, 2 lines, 5x8 dots
_delay_ms(50);
lcd_command( 0x28 );
1bc: 88 e2 ldi r24, 0x28 ; 40
1be: a8 df rcall .-176 ; 0x110 <lcd_command>
1c0: 2f e7 ldi r18, 0x7F ; 127
1c2: 88 e3 ldi r24, 0x38 ; 56
1c4: 91 e0 ldi r25, 0x01 ; 1
1c6: 21 50 subi r18, 0x01 ; 1
1c8: 80 40 sbci r24, 0x00 ; 0
1ca: 90 40 sbci r25, 0x00 ; 0
1cc: e1 f7 brne .-8 ; 0x1c6 <lcd_init+0x36>
1ce: 00 c0 rjmp .+0 ; 0x1d0 <lcd_init+0x40>
1d0: 00 00 nop
// display: on, cursor off, blinking off
_delay_ms(50);
lcd_command( 0x0C );
1d2: 8c e0 ldi r24, 0x0C ; 12
1d4: 9d df rcall .-198 ; 0x110 <lcd_command>
1d6: 2f e7 ldi r18, 0x7F ; 127
1d8: 88 e3 ldi r24, 0x38 ; 56
1da: 91 e0 ldi r25, 0x01 ; 1
1dc: 21 50 subi r18, 0x01 ; 1
1de: 80 40 sbci r24, 0x00 ; 0
1e0: 90 40 sbci r25, 0x00 ; 0
1e2: e1 f7 brne .-8 ; 0x1dc <lcd_init+0x4c>
1e4: 00 c0 rjmp .+0 ; 0x1e6 <lcd_init+0x56>
1e6: 00 00 nop
// entry mode: cursor to right, no shift
_delay_ms(50);
lcd_command( 0x06 );
1e8: 86 e0 ldi r24, 0x06 ; 6
1ea: 92 df rcall .-220 ; 0x110 <lcd_command>
1ec: 2f e7 ldi r18, 0x7F ; 127
1ee: 88 e3 ldi r24, 0x38 ; 56
1f0: 91 e0 ldi r25, 0x01 ; 1
1f2: 21 50 subi r18, 0x01 ; 1
1f4: 80 40 sbci r24, 0x00 ; 0
1f6: 90 40 sbci r25, 0x00 ; 0
1f8: e1 f7 brne .-8 ; 0x1f2 <lcd_init+0x62>
1fa: 00 c0 rjmp .+0 ; 0x1fc <lcd_init+0x6c>
1fc: 00 00 nop
// RAM address: 0, first position, line 1
_delay_ms(50);
clear_display();
1fe: c3 df rcall .-122 ; 0x186 <clear_display>
200: 2f ef ldi r18, 0xFF ; 255
202: 80 e7 ldi r24, 0x70 ; 112
204: 92 e0 ldi r25, 0x02 ; 2
206: 21 50 subi r18, 0x01 ; 1
208: 80 40 sbci r24, 0x00 ; 0
20a: 90 40 sbci r25, 0x00 ; 0
20c: e1 f7 brne .-8 ; 0x206 <lcd_init+0x76>
20e: 00 c0 rjmp .+0 ; 0x210 <lcd_init+0x80>
210: 00 00 nop
212: 08 95 ret
00000214 <wait>:
// wait(): busy waiting for 'ms' millisecond
// Used library: util/delay.h
void wait( int ms )
{
for (int tms=0; tms<ms; tms++)
214: 18 16 cp r1, r24
216: 19 06 cpc r1, r25
218: 6c f4 brge .+26 ; 0x234 <wait+0x20>
21a: 20 e0 ldi r18, 0x00 ; 0
21c: 30 e0 ldi r19, 0x00 ; 0
21e: ef ec ldi r30, 0xCF ; 207
220: f7 e0 ldi r31, 0x07 ; 7
222: 31 97 sbiw r30, 0x01 ; 1
224: f1 f7 brne .-4 ; 0x222 <wait+0xe>
226: 00 c0 rjmp .+0 ; 0x228 <wait+0x14>
228: 00 00 nop
22a: 2f 5f subi r18, 0xFF ; 255
22c: 3f 4f sbci r19, 0xFF ; 255
22e: 28 17 cp r18, r24
230: 39 07 cpc r19, r25
232: a9 f7 brne .-22 ; 0x21e <wait+0xa>
234: 08 95 ret
00000236 <main>:
}
// send/receive uart - dB-meter
int main( void )
{
236: cf 93 push r28
238: df 93 push r29
23a: cd b7 in r28, 0x3d ; 61
23c: de b7 in r29, 0x3e ; 62
23e: 60 97 sbiw r28, 0x10 ; 16
240: 0f b6 in r0, 0x3f ; 63
242: f8 94 cli
244: de bf out 0x3e, r29 ; 62
246: 0f be out 0x3f, r0 ; 63
248: cd bf out 0x3d, r28 ; 61
char buffer[16]; // declare string buffer
DDRB = 0xFF; // set PORTB for output
24a: 8f ef ldi r24, 0xFF ; 255
24c: 87 bb out 0x17, r24 ; 23
lcd_init(); // initialize LCD-display
24e: a0 df rcall .-192 ; 0x190 <lcd_init>
usart0_init(); // initialize USART0
250: 1c d0 rcall .+56 ; 0x28a <usart0_init>
usart0_start();
252: 24 d0 rcall .+72 ; 0x29c <usart0_start>
wait(100);
254: 84 e6 ldi r24, 0x64 ; 100
256: 90 e0 ldi r25, 0x00 ; 0
258: dd df rcall .-70 ; 0x214 <wait>
display_text(1, "Test display");
25a: 60 e0 ldi r22, 0x00 ; 0
25c: 71 e0 ldi r23, 0x01 ; 1
25e: 81 e0 ldi r24, 0x01 ; 1
260: 90 e0 ldi r25, 0x00 ; 0
262: 76 df rcall .-276 ; 0x150 <display_text>
wait(100);
264: 84 e6 ldi r24, 0x64 ; 100
266: 90 e0 ldi r25, 0x00 ; 0
268: d5 df rcall .-86 ; 0x214 <wait>
while (1)
{
wait(50); // every 50 ms (busy waiting)
26a: 82 e3 ldi r24, 0x32 ; 50
26c: 90 e0 ldi r25, 0x00 ; 0
26e: d2 df rcall .-92 ; 0x214 <wait>
PORTB ^= BIT(7); // toggle bit 7 for testing
270: 88 b3 in r24, 0x18 ; 24
272: 80 58 subi r24, 0x80 ; 128
274: 88 bb out 0x18, r24 ; 24
uart0_receiveString( buffer ); // receive string from uart
276: ce 01 movw r24, r28
278: 01 96 adiw r24, 0x01 ; 1
27a: 18 d0 rcall .+48 ; 0x2ac <uart0_receiveString>
// write string to LCD display
display_text(0, buffer);
27c: be 01 movw r22, r28
27e: 6f 5f subi r22, 0xFF ; 255
280: 7f 4f sbci r23, 0xFF ; 255
282: 80 e0 ldi r24, 0x00 ; 0
284: 90 e0 ldi r25, 0x00 ; 0
286: 64 df rcall .-312 ; 0x150 <display_text>
}
288: f0 cf rjmp .-32 ; 0x26a <main+0x34>
0000028a <usart0_init>:
int uart0_sendChar( char ch )
{
while (!(UCSR0A & BIT(UDRE0))) ; // wait until UDRE0 is set: transmit buffer is ready
UDR0 = ch; // send ch
return 0; // OK
}
28a: 10 92 90 00 sts 0x0090, r1
28e: 83 e3 ldi r24, 0x33 ; 51
290: 89 b9 out 0x09, r24 ; 9
292: 86 e0 ldi r24, 0x06 ; 6
294: 80 93 95 00 sts 0x0095, r24
298: 1a b8 out 0x0a, r1 ; 10
29a: 08 95 ret
0000029c <usart0_start>:
29c: 8a b1 in r24, 0x0a ; 10
29e: 88 61 ori r24, 0x18 ; 24
2a0: 8a b9 out 0x0a, r24 ; 10
2a2: 08 95 ret
000002a4 <uart0_receiveChar>:
char uart0_receiveChar( void )
{
while (!(UCSR0A & BIT(RXC0))) ; // if RX0 is set: unread data present in buffer
2a4: 5f 9b sbis 0x0b, 7 ; 11
2a6: fe cf rjmp .-4 ; 0x2a4 <uart0_receiveChar>
return UDR0; // read ch
2a8: 8c b1 in r24, 0x0c ; 12
}
2aa: 08 95 ret
000002ac <uart0_receiveString>:
int uart0_receiveString( char* string)
{
2ac: 0f 93 push r16
2ae: 1f 93 push r17
2b0: cf 93 push r28
2b2: df 93 push r29
2b4: ec 01 movw r28, r24
int stop = 0; // boolean for stop value
char ch;
while (!stop) // while contunie
{
ch = uart0_receiveChar(); // read ch
2b6: f6 df rcall .-20 ; 0x2a4 <uart0_receiveChar>
if ( ch == LF ) // stop at LF
2b8: 8a 30 cpi r24, 0x0A ; 10
2ba: 11 f0 breq .+4 ; 0x2c0 <uart0_receiveString+0x14>
stop = 1;
else
*string++ = ch; // else fill buffer
2bc: 89 93 st Y+, r24
2be: fb cf rjmp .-10 ; 0x2b6 <uart0_receiveString+0xa>
}
*string = '\0'; // string terminator
2c0: 18 82 st Y, r1
return 0;
2c2: 80 e0 ldi r24, 0x00 ; 0
2c4: 90 e0 ldi r25, 0x00 ; 0
2c6: df 91 pop r29
2c8: cf 91 pop r28
2ca: 1f 91 pop r17
2cc: 0f 91 pop r16
2ce: 08 95 ret
000002d0 <_exit>:
2d0: f8 94 cli
000002d2 <__stop_program>:
2d2: ff cf rjmp .-2 ; 0x2d2 <__stop_program>
+527
View File
@@ -0,0 +1,527 @@
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)
Allocating common symbols
Common symbol size file
character 0x1 main.o
Discarded input sections
.data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
.bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
.text 0x00000000 0x0 lcd.o
.data 0x00000000 0x0 lcd.o
.bss 0x00000000 0x0 lcd.o
.text.set_cursor
0x00000000 0x8 lcd.o
.text.shift_display
0x00000000 0x52 lcd.o
.text 0x00000000 0x0 main.o
.data 0x00000000 0x0 main.o
.bss 0x00000000 0x0 main.o
COMMON 0x00000000 0x1 main.o
.text 0x00000000 0x0 uart0.o
.data 0x00000000 0x0 uart0.o
.bss 0x00000000 0x0 uart0.o
.text.uart0_sendChar
0x00000000 0xc uart0.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)
.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(_exit.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(_exit.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(_exit.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(_exit.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(_exit.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(_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
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800100 0x0000ff00 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
user_signatures 0x00850000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
LOAD lcd.o
LOAD main.o
LOAD uart0.o
START GROUP
LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libm.a
END GROUP
START GROUP
LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a
LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libm.a
LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a
LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51\libatmega128.a
END GROUP
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x00000000 0x2d4
*(.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
0x00000000 __vectors
*(.vectors)
*(.progmem.gcc*)
0x0000008c . = ALIGN (0x2)
0x0000008c __trampolines_start = .
*(.trampolines)
.trampolines 0x0000008c 0x0 linker stubs
*(.trampolines*)
0x0000008c __trampolines_end = .
*(.progmem*)
0x0000008c . = ALIGN (0x2)
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x0000008c __ctors_start = .
*(.ctors)
0x0000008c __ctors_end = .
0x0000008c __dtors_start = .
*(.dtors)
0x0000008c __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x0000008c 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
0x0000008c __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x0000008c 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
*(.init2)
*(.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)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.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 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_16
0x000000c6 __vector_18
0x000000c6 __vector_20
0x000000c8 . = ALIGN (0x2)
*(.text.*)
.text.display_char
0x000000c8 0x48 lcd.o
0x000000c8 display_char
.text.lcd_command
0x00000110 0x40 lcd.o
0x00000110 lcd_command
.text.display_text
0x00000150 0x36 lcd.o
0x00000150 display_text
.text.clear_display
0x00000186 0xa lcd.o
0x00000186 clear_display
.text.lcd_init
0x00000190 0x84 lcd.o
0x00000190 lcd_init
.text.wait 0x00000214 0x22 main.o
0x00000214 wait
.text.main 0x00000236 0x54 main.o
0x00000236 main
.text.usart0_init
0x0000028a 0x12 uart0.o
0x0000028a usart0_init
.text.usart0_start
0x0000029c 0x8 uart0.o
0x0000029c usart0_start
.text.uart0_receiveChar
0x000002a4 0x8 uart0.o
0x000002a4 uart0_receiveChar
.text.uart0_receiveString
0x000002ac 0x24 uart0.o
0x000002ac uart0_receiveString
0x000002d0 . = ALIGN (0x2)
*(.fini9)
.fini9 0x000002d0 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)
0x000002d0 _exit
0x000002d0 exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000002d0 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)
0x000002d4 _etext = .
.data 0x00800100 0xe load address 0x000002d4
0x00800100 PROVIDE (__data_start, .)
*(.data)
*(.data*)
*(.rodata)
*(.rodata*)
.rodata.str1.1
0x00800100 0xd main.o
*(.gnu.linkonce.d*)
0x0080010e . = ALIGN (0x2)
*fill* 0x0080010d 0x1
0x0080010e _edata = .
0x0080010e PROVIDE (__data_end, .)
.bss 0x0080010e 0x0
0x0080010e PROVIDE (__bss_start, .)
*(.bss)
*(.bss*)
*(COMMON)
0x0080010e PROVIDE (__bss_end, .)
0x000002d4 __data_load_start = LOADADDR (.data)
0x000002e2 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x0080010e 0x0
0x0080010e PROVIDE (__noinit_start, .)
*(.noinit*)
0x0080010e PROVIDE (__noinit_end, .)
0x0080010e _end = .
0x0080010e PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.user_signatures
*(.user_signatures*)
.stab
*(.stab)
.stabstr
*(.stabstr)
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x00000000 0x30
*(.comment)
.comment 0x00000000 0x30 lcd.o
0x31 (size before relaxing)
.comment 0x00000030 0x31 main.o
.comment 0x00000030 0x31 uart0.o
.note.gnu.avr.deviceinfo
0x00000000 0x3c
.note.gnu.avr.deviceinfo
0x00000000 0x3c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o
.note.gnu.build-id
*(.note.gnu.build-id)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0xb8
*(.debug_aranges)
.debug_aranges
0x00000000 0x50 lcd.o
.debug_aranges
0x00000050 0x28 main.o
.debug_aranges
0x00000078 0x40 uart0.o
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0x9fa
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x5ff lcd.o
.debug_info 0x000005ff 0x2a9 main.o
.debug_info 0x000008a8 0x152 uart0.o
.debug_abbrev 0x00000000 0x479
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x1ac lcd.o
.debug_abbrev 0x000001ac 0x1b1 main.o
.debug_abbrev 0x0000035d 0x11c uart0.o
.debug_line 0x00000000 0x5bc
*(.debug_line .debug_line.* .debug_line_end)
.debug_line 0x00000000 0x2df lcd.o
.debug_line 0x000002df 0x199 main.o
.debug_line 0x00000478 0x144 uart0.o
.debug_frame 0x00000000 0x168
*(.debug_frame)
.debug_frame 0x00000000 0xac lcd.o
.debug_frame 0x000000ac 0x44 main.o
.debug_frame 0x000000f0 0x78 uart0.o
.debug_str 0x00000000 0x281
*(.debug_str)
.debug_str 0x00000000 0x1e5 lcd.o
0x223 (size before relaxing)
.debug_str 0x000001e5 0x5d main.o
0x212 (size before relaxing)
.debug_str 0x00000242 0x3f uart0.o
0x1c0 (size before relaxing)
.debug_loc 0x00000000 0x472
*(.debug_loc)
.debug_loc 0x00000000 0x2e1 lcd.o
.debug_loc 0x000002e1 0xb1 main.o
.debug_loc 0x00000392 0xe0 uart0.o
.debug_macinfo
*(.debug_macinfo)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x00000000 0x88
*(.debug_ranges)
.debug_ranges 0x00000000 0x40 lcd.o
.debug_ranges 0x00000040 0x18 main.o
.debug_ranges 0x00000058 0x30 uart0.o
.debug_macro
*(.debug_macro)
OUTPUT(MIC-Week5.elf elf32-avr)
LOAD linker stubs
+49
View File
@@ -0,0 +1,49 @@
S01100004D49432D5765656B352E737265634C
S113000045C0000060C000005EC000005CC000008D
S11300105AC0000058C0000056C0000054C0000080
S113002052C0000050C000004EC000004CC0000090
S11300304AC0000048C0000046C0000044C00000A0
S113004042C0000040C000003EC000003CC00000B0
S11300503AC0000038C0000036C0000034C00000C0
S113006032C0000030C000002EC000002CC00000D0
S11300702AC0000028C0000026C0000024C00000E0
S113008022C0000020C000001EC0000011241FBEBA
S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E4EDF1
S11300A0F2E000E00BBF02C007900D92AE30B10742
S11300B0D9F721E0AEE0B1E001C01D92AE30B20745
S11300C0E1F7B9D005C19CCF982F907F95BB95B32C
S11300D09C6095BBEFE9FFE03197F1F700C00000A9
S11300E094E095BBEFE9FFE03197F1F700C0000021
S11300F0F0E18F9FC001112485BB85B38C6085BB63
S11301008FE99FE00197F1F700C0000015BA089548
S1130110982F907F95BBAB9AEFE9FFE03197F1F709
S113012000C0000094E095BBEFE9FFE03197F1F7E0
S113013000C00000F0E18F9FC001112485BBAB9A81
S11301408FE99FE00197F1F700C0000015BA089508
S1130150CF93DF93EB01892B19F080ECD9DF02C038
S113016080E8D6DF8881882359F02196ADDF8FE9B6
S11301709FE00197F1F700C0000089918111F6CF4B
S1130180DF91CF91089581E0C3DF80E8C1CF089566
S11301908FEF84BB2FEF80E792E0215080409040A6
S11301A0E1F700C0000082E0B3DF2FE788E391E0CD
S11301B0215080409040E1F700C0000088E2A8DFB1
S11301C02FE788E391E0215080409040E1F700C0A0
S11301D000008CE09DDF2FE788E391E02150804010
S11301E09040E1F700C0000086E092DF2FE788E34B
S11301F091E0215080409040E1F700C00000C3DF4F
S11302002FEF80E792E0215080409040E1F700C05A
S113021000000895181619066CF420E030E0EFECA5
S1130220F7E03197F1F700C000002F5F3F4F281728
S11302303907A9F70895CF93DF93CDB7DEB7609759
S11302400FB6F894DEBF0FBECDBF8FEF87BBA0DF24
S11302501CD024D084E690E0DDDF60E071E081E032
S113026090E076DF84E690E0D5DF82E390E0D2DFB1
S113027088B3805888BBCE01019618D0BE016F5F49
S11302807F4F80E090E064DFF0CF1092900083E332
S113029089B986E0809395001AB808958AB1886177
S11302A08AB908955F9BFECF8CB108950F931F9375
S11302B0CF93DF93EC01F6DF8A3011F08993FBCF03
S11302C0188280E090E0DF91CF911F910F91089503
S10702D0F894FFCFCC
S11102D45465737420646973706C6179000062
S9030000FC
+143
View File
@@ -0,0 +1,143 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
LINKER_SCRIPT_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../lcd.c \
../main.c \
../uart0.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
lcd.o \
main.o \
uart0.o
OBJS_AS_ARGS += \
lcd.o \
main.o \
uart0.o
C_DEPS += \
lcd.d \
main.d \
uart0.d
C_DEPS_AS_ARGS += \
lcd.d \
main.d \
uart0.d
OUTPUT_FILE_PATH +=MIC-Week5.elf
OUTPUT_FILE_PATH_AS_ARGS +=MIC-Week5.elf
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
LINKER_SCRIPT_DEP+=
# AVR32/GNU C Compiler
./%.o: .././%.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler : 4.9.2
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\gcc\dev\atmega128" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
@echo Building target: $@
@echo Invoking: AVR/GNU Linker : 4.9.2
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="MIC-Week5.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mrelax -mmcu=atmega128 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\gcc\dev\atmega128"
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "MIC-Week5.elf" "MIC-Week5.hex"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "MIC-Week5.elf" "MIC-Week5.eep" || exit 0
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "MIC-Week5.elf" > "MIC-Week5.lss"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "MIC-Week5.elf" "MIC-Week5.srec"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "MIC-Week5.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
-$(RM) $(C_DEPS_AS_ARGS)
rm -rf "MIC-Week5.elf" "MIC-Week5.a" "MIC-Week5.hex" "MIC-Week5.lss" "MIC-Week5.eep" "MIC-Week5.map" "MIC-Week5.srec" "MIC-Week5.usersignatures"
+52
View File
@@ -0,0 +1,52 @@
lcd.d lcd.o: .././lcd.c \
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 \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
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\stdlib.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stddef.h \
.././lcd.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:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
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\stdlib.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stddef.h:
.././lcd.h:
+51
View File
@@ -0,0 +1,51 @@
main.d main.o: .././main.c .././uart0.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 \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
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 \
.././lcd.h
.././uart0.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:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
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:
.././lcd.h:
+10
View File
@@ -0,0 +1,10 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
lcd.c
main.c
uart0.c
+48
View File
@@ -0,0 +1,48 @@
uart0.d uart0.o: .././uart0.c .././uart0.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 \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \
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
.././uart0.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:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stdint.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h:
C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include/avr/iom128.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h:
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:
+86
View File
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
<ProjectComponents>
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<CApiVersion></CApiVersion>
<CBundle></CBundle>
<CClass>Device</CClass>
<CGroup>Startup</CGroup>
<CSub></CSub>
<CVariant></CVariant>
<CVendor>Atmel</CVendor>
<CVersion>1.0.0</CVersion>
<DefaultRepoPath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<Description></Description>
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include</AbsolutePath>
<Attribute></Attribute>
<Category>include</Category>
<Condition>C</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>include</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\include\avr\iom128.h</AbsolutePath>
<Attribute></Attribute>
<Category>header</Category>
<Condition>C</Condition>
<FileContentHash>w6TcdtnSFTUbj2H2rTwkDQ==</FileContentHash>
<FileVersion></FileVersion>
<Name>include/avr/iom128.h</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\templates\main.c</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>/Iucm5rMwlKamIcpstJFTw==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.c</Name>
<SelectString>Main file (.c)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\templates\main.cpp</AbsolutePath>
<Attribute>template</Attribute>
<Category>source</Category>
<Condition>C Exe</Condition>
<FileContentHash>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
<FileVersion></FileVersion>
<Name>templates/main.cpp</Name>
<SelectString>Main file (.cpp)</SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
<d4p1:anyType i:type="FileInfo">
<AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.0.91\gcc\dev\atmega128</AbsolutePath>
<Attribute></Attribute>
<Category>libraryPrefix</Category>
<Condition>GCC</Condition>
<FileContentHash i:nil="true" />
<FileVersion></FileVersion>
<Name>gcc/dev/atmega128</Name>
<SelectString></SelectString>
<SourcePath></SourcePath>
</d4p1:anyType>
</Files>
<PackName>ATmega_DFP</PackName>
<PackPath>C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/Atmel.ATmega_DFP.pdsc</PackPath>
<PackVersion>1.0.91</PackVersion>
<PresentInProject>true</PresentInProject>
<ReferenceConditionId>ATmega128</ReferenceConditionId>
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string></d4p1:string>
</RteComponents>
<Status>Resolved</Status>
<VersionMode>Fixed</VersionMode>
<IsComponentInAtProject>true</IsComponentInAtProject>
</ProjectComponent>
</ProjectComponents>
</Store>
+130
View File
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>7.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{fee1db3a-f9c3-4a60-b915-11fdd71adfff}</ProjectGuid>
<avrdevice>ATmega128</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>MIC-Week5</AssemblyName>
<Name>MIC-Week5</Name>
<RootNamespace>MIC-Week5</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<CacheFlash>true</CacheFlash>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress />
<UncachedRange />
<preserveEEPROM>true</preserveEEPROM>
<OverrideVtorValue />
<BootSegment>2</BootSegment>
<eraseonlaunchrule>1</eraseonlaunchrule>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.28.1" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega128 -B "%24(PackRepoDir)\Atmel\ATmega_DFP\1.0.91\gcc\dev\atmega128"</avrgcc.common.Device>
<avrgcc.common.optimization.RelaxBranches>True</avrgcc.common.optimization.RelaxBranches>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\Atmel\ATmega_DFP\1.0.91\include</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega128 -B "%24(PackRepoDir)\Atmel\ATmega_DFP\1.0.91\gcc\dev\atmega128"</avrgcc.common.Device>
<avrgcc.common.optimization.RelaxBranches>True</avrgcc.common.optimization.RelaxBranches>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\Atmel\ATmega_DFP\1.0.91\include</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="lcd.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcd.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="main.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="uart0.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="uart0.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+124
View File
@@ -0,0 +1,124 @@
/*
* lcd.c
*
* Created: 23-2-2016 14:06:31
* Author: kenny
*/
#define F_CPU 8000000UL //CPU op 8MHz
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include "lcd.h"
//LOCAL
void display_char(unsigned char dat);
void lcd_command(unsigned char dat);
void lcd_init()
{
DDRC = 0b11111111;
_delay_ms(100);
// return home
lcd_command( 0x02 );
// mode: 4 bits interface data, 2 lines, 5x8 dots
_delay_ms(50);
lcd_command( 0x28 );
// display: on, cursor off, blinking off
_delay_ms(50);
lcd_command( 0x0C );
// entry mode: cursor to right, no shift
_delay_ms(50);
lcd_command( 0x06 );
// RAM address: 0, first position, line 1
_delay_ms(50);
clear_display();
_delay_ms(100);
}
void display_text( int line, char *text )
{
// eerst de eerste 8 karakters = regel 1
if(line)
{
// eerste pos regel 1
lcd_command(0xC0);
}
else
{
// regel 0
lcd_command(0x80);
}
int count = 0;
while (text[count] != '\0') {
display_char( text[count] );
count++;
_delay_ms(2);
}
}
void clear_display()
{
lcd_command(0b00000001);
lcd_command(0b10000000);
}
void set_cursor(int position)
{
position = position | (1<<7);
lcd_command(position);
}
void shift_display(int left, int count)
{
unsigned char data = left ? 0b00011100 : 0b00011000;
for (int i=0; i<count; i++) {
lcd_command(data);
_delay_ms(2);
}
}
void display_char( unsigned char dat )
{
PORTC = dat & 0xF0; // hoge nibble
PORTC = PORTC | 0x0C; // Enable on (EN = 1, RS=1),
_delay_ms(2); // wait 1 ms
PORTC = 0x04; // Enable off (EN = 0, RS = 1)
_delay_ms(2); // wait 1 ms
PORTC = (dat & 0x0F) << 4; // lage nibble
PORTC = PORTC | 0x0C; // Enable on (RS=1),
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x00; // stop
// (EN=0 RS=0)
}
void lcd_command ( unsigned char dat )
{
PORTC = dat & 0xF0; // hoge nibble
PORTC = PORTC | 0x08; // data (RS=0),
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x04; // stop (EN = 0)
_delay_ms(2); // wait 1 ms
PORTC = (dat & 0x0F) << 4; // lage nibble
PORTC = PORTC | 0x08; // data (RS=0),
// start (EN=1)
_delay_ms(2); // wait 1 ms
PORTC = 0x00; // stop
// (EN=0 RS=0)
}
+19
View File
@@ -0,0 +1,19 @@
/*
* lcd.h
*
* Created: 23-2-2016 14:06:44
* Author: kenny
*/
#ifndef LCD_H_
#define LCD_H_
void lcd_init();
void display_text(int line, char *str);
void display_char(unsigned char d);
void set_cursor(int position);
void shift_display(int left, int count);
void clear_display();
#endif /* LCD_H_ */
+58
View File
@@ -0,0 +1,58 @@
/*
* Project name : Demo5_1 : UART - send / receive characters with waiting
* Author : Avans-TI, JW
* Revision History : 20110227: - initial release;
* Description : This program receive a character, and sends it back
* Test configuration:
MCU: ATmega128
Dev.Board: BIGAVR6
Oscillator: External Clock 08.0000 MHz
Ext. Modules: -
SW: AVR-GCC
* NOTES:
- Turn ON switch 12, PEO/PE1 tot RX/TX
*/
#define F_CPU 8000000UL
#include "uart0.h"
#include "lcd.h"
// wait(): busy waiting for 'ms' millisecond
// Used library: util/delay.h
void wait( int ms )
{
for (int tms=0; tms<ms; tms++)
{
_delay_ms( 1 ); // library function (max 30 ms at 8MHz)
}
}
// send/receive uart - dB-meter
int main( void )
{
char buffer[16]; // declare string buffer
DDRB = 0xFF; // set PORTB for output
lcd_init(); // initialize LCD-display
usart0_init(); // initialize USART0
usart0_start();
wait(100);
display_text(1, "Test display");
wait(100);
while (1)
{
wait(50); // every 50 ms (busy waiting)
PORTB ^= BIT(7); // toggle bit 7 for testing
uart0_receiveString( buffer ); // receive string from uart
// write string to LCD display
display_text(0, buffer);
}
}
+51
View File
@@ -0,0 +1,51 @@
#include "uart0.h"
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define BIT(x) (1 << (x))
void usart0_init( void ) // initialize USART0 - receive/transmit
{
int ubrr = MYUBRR;
UBRR0H = ubrr>>8; // baudrate register, hoge byte
UBRR0L = ubrr; // baudrate register, lage byte
UCSR0C = 0b00000110; // asynchroon, 8 data - 1 stop - no parity
UCSR0B = 0b00000000; // receiver & transmitter enable
}
void usart0_start( void ) // receiver & transmitter enable
{
UCSR0B |= BIT(RXEN)|BIT(TXEN); // set bit RXEN = Receiver enable and TXEN = Transmitter enable
}
int uart0_sendChar( char ch )
{
while (!(UCSR0A & BIT(UDRE0))) ; // wait until UDRE0 is set: transmit buffer is ready
UDR0 = ch; // send ch
return 0; // OK
}
char uart0_receiveChar( void )
{
while (!(UCSR0A & BIT(RXC0))) ; // if RX0 is set: unread data present in buffer
return UDR0; // read ch
}
int uart0_receiveString( char* string)
{
int stop = 0; // boolean for stop value
char ch;
while (!stop) // while contunie
{
ch = uart0_receiveChar(); // read ch
if ( ch == LF ) // stop at LF
stop = 1;
else
*string++ = ch; // else fill buffer
}
*string = '\0'; // string terminator
return 0;
}
+41
View File
@@ -0,0 +1,41 @@
/*
* Project name : uart0 : UART - send / receive characters with waiting
* Author : Avans-TI, JW
* Revision History : 20110227: - initial release;
* Description : This program receive a character, and sends it back
* Test configuration:
MCU: ATmega128
Dev.Board: BIGAVR6
Oscillator: External Clock 08.0000 MHz
Ext. Modules: -
SW: AVR-GCC
* NOTES:
- Turn ON switch 12, PEO/PE1 tot RX/TX
*/
#ifndef _UART
#define _UART
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define LF 0x0a // ascii code for Line Feed
#define CR 0x0d // ascii code for Carriage Return
#define BIT(x) (1 << (x))
#define UART0_BAUD 2400 // Baud rate USART0
#define MYUBRR F_CPU/16/UART0_BAUD - 1 // My USART Baud Rate Register
void usart0_init( void ) ; // initialize USART0 - receive/transmit
void usart0_start( void ) ; // UART0 receiver & transmitter enable
char uart0_receiveChar() ; // UART0: receive ch
int uart0_sendChar( char ch ) ; // UART0: send ch
int uart0_receiveString( char* string); // UART0: receive string until LF
#endif