You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

543 lines
23 KiB
Plaintext

1 .file "print.c"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __RAMPZ__ = 0x3b
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .text
9 .Ltext0:
10 .cfi_sections .debug_frame
11 .global clear_SR_Buffer
13 clear_SR_Buffer:
14 .LFB10:
15 .file 1 "src/print.c"
1:src/print.c **** #include "pinout.h"
2:src/print.c **** #include "print.h"
3:src/print.c **** #include <stdlib.h>
4:src/print.c **** #include <avr/io.h>
5:src/print.c **** #include <util/delay.h>
6:src/print.c ****
7:src/print.c **** const unsigned char number_Font[10] = { 0b11011110, //0
8:src/print.c **** 0b00000110, //1
9:src/print.c **** 0b11101010, //2
10:src/print.c **** 0b01101110, //3
11:src/print.c **** 0b00110110, //4
12:src/print.c **** 0b01111100, //5
13:src/print.c **** 0b11111100, //6
14:src/print.c **** 0b00001110, //7
15:src/print.c **** 0b11111110, //8
16:src/print.c **** 0b01111110 //9
17:src/print.c **** };
18:src/print.c **** const unsigned char character_Font[26] = {0b10111110, //A
19:src/print.c **** 0b11110100, //b
20:src/print.c **** 0b11100000, //c
21:src/print.c **** 0b11100110, //d
22:src/print.c **** 0b11111000, //e
23:src/print.c **** 0b10111000, //F
24:src/print.c **** 0b11011100, //G
25:src/print.c **** 0b10110100, //h
26:src/print.c **** 0b00000100, //i
27:src/print.c **** 0b01000110, //J
28:src/print.c **** 0b10111100, //K
29:src/print.c **** 0b11010000, //L
30:src/print.c **** 0b10011110, //M
31:src/print.c **** 0b10100100, //n
32:src/print.c **** 0b11100100, //o
33:src/print.c **** 0b10111010, //P
34:src/print.c **** 0b00111110, //q
35:src/print.c **** 0b10100000, //r
36:src/print.c **** 0b01111100, //S
37:src/print.c **** 0b11110000, //t
38:src/print.c **** 0b11000100, //u
39:src/print.c **** 0b11000100, //v
40:src/print.c **** 0b11010110, //W
41:src/print.c **** 0b10110110, //X
42:src/print.c **** 0b01110110, //Y
43:src/print.c **** 0b11100110 //Z
44:src/print.c **** };
45:src/print.c **** const unsigned char blank = 0b00000000; //zeigt nichts an
46:src/print.c **** const unsigned char minus = 0b00100000; //zeigt '-' an
47:src/print.c **** const unsigned char dot = 0b00000001; //aktiviert Dezimalpunkt
48:src/print.c **** unsigned char SR_Buffer[6] = {0b11100110,
49:src/print.c **** 0b11100110,
50:src/print.c **** 0b11100110,
51:src/print.c **** 0b11100110,
52:src/print.c **** 0b11100110,
53:src/print.c **** 0b11100110,
54:src/print.c **** 0b11100110,
55:src/print.c **** 0b11100110};
56:src/print.c ****
57:src/print.c ****
58:src/print.c ****
59:src/print.c **** void clear_SR_Buffer() {
16 .loc 1 59 0
17 .cfi_startproc
18 /* prologue: function */
19 /* frame size = 0 */
20 /* stack size = 0 */
21 .L__stack_usage = 0
22 .LVL0:
23 .LBB2:
60:src/print.c **** for (char i = 0; i < 6; i++) {
61:src/print.c **** SR_Buffer[i] = blank;
24 .loc 1 61 0
25 0000 1092 0000 sts SR_Buffer,__zero_reg__
26 .LVL1:
27 0004 1092 0000 sts SR_Buffer+1,__zero_reg__
28 .LVL2:
29 0008 1092 0000 sts SR_Buffer+2,__zero_reg__
30 .LVL3:
31 000c 1092 0000 sts SR_Buffer+3,__zero_reg__
32 .LVL4:
33 0010 1092 0000 sts SR_Buffer+4,__zero_reg__
34 .LVL5:
35 0014 1092 0000 sts SR_Buffer+5,__zero_reg__
36 .LVL6:
37 0018 0895 ret
38 .LBE2:
39 .cfi_endproc
40 .LFE10:
42 .global add_Decimal_Point_to_SR_Buffer
44 add_Decimal_Point_to_SR_Buffer:
45 .LFB11:
62:src/print.c **** }
63:src/print.c **** }
64:src/print.c ****
65:src/print.c **** void add_Decimal_Point_to_SR_Buffer(int pos){
46 .loc 1 65 0
47 .cfi_startproc
48 .LVL7:
49 /* prologue: function */
50 /* frame size = 0 */
51 /* stack size = 0 */
52 .L__stack_usage = 0
66:src/print.c **** SR_Buffer[pos-1] += dot;
53 .loc 1 66 0
54 001a FC01 movw r30,r24
55 001c E050 subi r30,lo8(-(SR_Buffer-1))
56 001e F040 sbci r31,hi8(-(SR_Buffer-1))
57 0020 8081 ld r24,Z
58 .LVL8:
59 0022 8F5F subi r24,lo8(-(1))
60 0024 8083 st Z,r24
61 0026 0895 ret
62 .cfi_endproc
63 .LFE11:
65 .global print_SR_Buffer
67 print_SR_Buffer:
68 .LFB12:
67:src/print.c **** }
68:src/print.c ****
69:src/print.c **** void print_SR_Buffer() {
69 .loc 1 69 0
70 .cfi_startproc
71 /* prologue: function */
72 /* frame size = 0 */
73 /* stack size = 0 */
74 .L__stack_usage = 0
70:src/print.c **** PORTC &= ~(LATCH_SR);
75 .loc 1 70 0
76 0028 4298 cbi 0x8,2
77 .LVL9:
78 002a E0E0 ldi r30,lo8(SR_Buffer)
79 002c F0E0 ldi r31,hi8(SR_Buffer)
80 .LVL10:
81 .L7:
82 .LBB3:
71:src/print.c ****
72:src/print.c **** for (int i = 0; i < 6; i++) {
73:src/print.c **** SPDR = SR_Buffer[i];
83 .loc 1 73 0
84 002e 8191 ld r24,Z+
85 .LVL11:
86 0030 8EBD out 0x2e,r24
87 .L5:
74:src/print.c **** //SPDR = 0b11100110;
75:src/print.c **** //_delay_us(100);
76:src/print.c **** while (!(SPSR & (1 << SPIF))); //warten auf transferabschluss
88 .loc 1 76 0 discriminator 1
89 0032 0DB4 in __tmp_reg__,0x2d
90 0034 07FE sbrs __tmp_reg__,7
91 0036 00C0 rjmp .L5
92 .LVL12:
72:src/print.c **** for (int i = 0; i < 6; i++) {
93 .loc 1 72 0
94 0038 80E0 ldi r24,hi8(SR_Buffer+6)
95 003a E030 cpi r30,lo8(SR_Buffer+6)
96 003c F807 cpc r31,r24
97 003e 01F4 brne .L7
98 .LBE3:
77:src/print.c **** }
78:src/print.c **** PORTC |= LATCH_SR;
99 .loc 1 78 0
100 0040 429A sbi 0x8,2
101 0042 0895 ret
102 .cfi_endproc
103 .LFE12:
105 .global add_ASCII_to_SR_Buffer
107 add_ASCII_to_SR_Buffer:
108 .LFB14:
79:src/print.c **** //_delay_ms(1);
80:src/print.c **** //PORTC &= ~(LATCH_SR);
81:src/print.c **** }
82:src/print.c ****
83:src/print.c **** void print_String(char* string){
84:src/print.c **** for(int i = 0; i < 6; i++){
85:src/print.c **** add_ASCII_to_SR_Buffer(string[i],i);
86:src/print.c **** }
87:src/print.c **** print_SR_Buffer();
88:src/print.c **** }
89:src/print.c ****
90:src/print.c ****
91:src/print.c **** void add_ASCII_to_SR_Buffer(unsigned char character, int pos) {
109 .loc 1 91 0
110 .cfi_startproc
111 .LVL13:
112 /* prologue: function */
113 /* frame size = 0 */
114 /* stack size = 0 */
115 .L__stack_usage = 0
92:src/print.c **** int ascii_offset = 0;
93:src/print.c ****
94:src/print.c **** if((character > 46) && (character < 57)){ //Char ist Zahl
116 .loc 1 94 0
117 0044 91ED ldi r25,lo8(-47)
118 0046 980F add r25,r24
119 0048 9A30 cpi r25,lo8(10)
120 004a 00F4 brsh .L10
121 .LVL14:
95:src/print.c **** ascii_offset = 48;
96:src/print.c **** SR_Buffer[pos] = number_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Zahl mit F
122 .loc 1 96 0
123 004c DB01 movw r26,r22
124 004e A050 subi r26,lo8(-(SR_Buffer))
125 0050 B040 sbci r27,hi8(-(SR_Buffer))
126 0052 E82F mov r30,r24
127 0054 F0E0 ldi r31,0
128 0056 E050 subi r30,lo8(-(number_Font-48))
129 0058 F040 sbci r31,hi8(-(number_Font-48))
130 005a 00C0 rjmp .L15
131 .LVL15:
132 .L10:
97:src/print.c **** }else if (character > 95 && character < 122) { //Buchstabe ist kleiner Buchstabe
133 .loc 1 97 0
134 005c 90EA ldi r25,lo8(-96)
135 005e 980F add r25,r24
136 0060 9A31 cpi r25,lo8(26)
137 0062 00F4 brsh .L12
138 .LVL16:
98:src/print.c **** ascii_offset = 97;
99:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch
139 .loc 1 99 0
140 0064 DB01 movw r26,r22
141 0066 A050 subi r26,lo8(-(SR_Buffer))
142 0068 B040 sbci r27,hi8(-(SR_Buffer))
143 006a E82F mov r30,r24
144 006c F0E0 ldi r31,0
145 006e E050 subi r30,lo8(-(character_Font-97))
146 0070 F040 sbci r31,hi8(-(character_Font-97))
147 .LVL17:
148 .L15:
149 0072 8081 ld r24,Z
150 .LVL18:
151 0074 8C93 st X,r24
152 0076 0895 ret
153 .LVL19:
154 .L12:
100:src/print.c **** } else if (character > 64 && character < 91){ //Buchstabe groß Buchstabe
155 .loc 1 100 0
156 0078 9FEB ldi r25,lo8(-65)
157 007a 980F add r25,r24
158 007c 9A31 cpi r25,lo8(26)
159 007e 00F4 brsh .L13
160 .LVL20:
101:src/print.c **** ascii_offset = 65;
102:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch
161 .loc 1 102 0
162 0080 DB01 movw r26,r22
163 0082 A050 subi r26,lo8(-(SR_Buffer))
164 0084 B040 sbci r27,hi8(-(SR_Buffer))
165 0086 E82F mov r30,r24
166 0088 F0E0 ldi r31,0
167 008a E050 subi r30,lo8(-(character_Font-65))
168 008c F040 sbci r31,hi8(-(character_Font-65))
169 008e 00C0 rjmp .L15
170 .LVL21:
171 .L13:
103:src/print.c **** } else if (character == 32){ //Charakter ist Blank ' '
172 .loc 1 103 0
173 0090 8032 cpi r24,lo8(32)
174 0092 01F4 brne .L14
104:src/print.c **** SR_Buffer[pos] = blank;
175 .loc 1 104 0
176 0094 FB01 movw r30,r22
177 0096 E050 subi r30,lo8(-(SR_Buffer))
178 0098 F040 sbci r31,hi8(-(SR_Buffer))
179 009a 1082 st Z,__zero_reg__
180 009c 0895 ret
181 .L14:
105:src/print.c **** } else if (character == 45){ //Charakter ist Minus -
182 .loc 1 105 0
183 009e 8D32 cpi r24,lo8(45)
184 00a0 01F4 brne .L9
106:src/print.c **** SR_Buffer[pos] = minus;
185 .loc 1 106 0
186 00a2 FB01 movw r30,r22
187 00a4 E050 subi r30,lo8(-(SR_Buffer))
188 00a6 F040 sbci r31,hi8(-(SR_Buffer))
189 00a8 80E2 ldi r24,lo8(32)
190 .LVL22:
191 00aa 8083 st Z,r24
192 .L9:
193 00ac 0895 ret
194 .cfi_endproc
195 .LFE14:
197 .global print_String
199 print_String:
200 .LFB13:
83:src/print.c **** void print_String(char* string){
201 .loc 1 83 0
202 .cfi_startproc
203 .LVL23:
204 00ae 0F93 push r16
205 .LCFI0:
206 .cfi_def_cfa_offset 3
207 .cfi_offset 16, -2
208 00b0 1F93 push r17
209 .LCFI1:
210 .cfi_def_cfa_offset 4
211 .cfi_offset 17, -3
212 00b2 CF93 push r28
213 .LCFI2:
214 .cfi_def_cfa_offset 5
215 .cfi_offset 28, -4
216 00b4 DF93 push r29
217 .LCFI3:
218 .cfi_def_cfa_offset 6
219 .cfi_offset 29, -5
220 /* prologue: function */
221 /* frame size = 0 */
222 /* stack size = 4 */
223 .L__stack_usage = 4
224 00b6 8C01 movw r16,r24
225 .LVL24:
226 .LBB4:
84:src/print.c **** for(int i = 0; i < 6; i++){
227 .loc 1 84 0
228 00b8 C0E0 ldi r28,0
229 00ba D0E0 ldi r29,0
230 .LVL25:
231 .L18:
85:src/print.c **** add_ASCII_to_SR_Buffer(string[i],i);
232 .loc 1 85 0 discriminator 2
233 00bc BE01 movw r22,r28
234 00be F801 movw r30,r16
235 00c0 8191 ld r24,Z+
236 00c2 8F01 movw r16,r30
237 00c4 0E94 0000 call add_ASCII_to_SR_Buffer
238 .LVL26:
84:src/print.c **** for(int i = 0; i < 6; i++){
239 .loc 1 84 0 discriminator 2
240 00c8 2196 adiw r28,1
241 .LVL27:
242 00ca C630 cpi r28,6
243 00cc D105 cpc r29,__zero_reg__
244 00ce 01F4 brne .L18
245 /* epilogue start */
246 .LBE4:
88:src/print.c **** }
247 .loc 1 88 0
248 00d0 DF91 pop r29
249 00d2 CF91 pop r28
250 .LVL28:
251 00d4 1F91 pop r17
252 00d6 0F91 pop r16
87:src/print.c **** print_SR_Buffer();
253 .loc 1 87 0
254 00d8 0C94 0000 jmp print_SR_Buffer
255 .LVL29:
256 .cfi_endproc
257 .LFE13:
259 .global add_Character_to_SR_Buffer
261 add_Character_to_SR_Buffer:
262 .LFB15:
107:src/print.c **** }
108:src/print.c ****
109:src/print.c **** }
110:src/print.c ****
111:src/print.c **** void add_Character_to_SR_Buffer(unsigned char character, int pos) {
263 .loc 1 111 0
264 .cfi_startproc
265 .LVL30:
266 /* prologue: function */
267 /* frame size = 0 */
268 /* stack size = 0 */
269 .L__stack_usage = 0
112:src/print.c **** int ascii_offset = 0;
113:src/print.c ****
114:src/print.c **** if (character > 96 && character < 122) { //Buchstabe ist kleiner Buchstabe
270 .loc 1 114 0
271 00dc 9FE9 ldi r25,lo8(-97)
272 00de 980F add r25,r24
273 00e0 9931 cpi r25,lo8(25)
274 00e2 00F4 brsh .L20
275 .LVL31:
115:src/print.c **** ascii_offset = 97;
116:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch
276 .loc 1 116 0
277 00e4 DB01 movw r26,r22
278 00e6 A050 subi r26,lo8(-(SR_Buffer))
279 00e8 B040 sbci r27,hi8(-(SR_Buffer))
280 00ea E82F mov r30,r24
281 00ec F0E0 ldi r31,0
282 00ee E050 subi r30,lo8(-(character_Font-97))
283 00f0 F040 sbci r31,hi8(-(character_Font-97))
284 00f2 00C0 rjmp .L22
285 .LVL32:
286 .L20:
117:src/print.c **** } else if (character > 65 && character < 91){ //Buchstabe groß Buchstabe
287 .loc 1 117 0
288 00f4 9EEB ldi r25,lo8(-66)
289 00f6 980F add r25,r24
290 00f8 9931 cpi r25,lo8(25)
291 00fa 00F4 brsh .L19
292 .LVL33:
118:src/print.c **** ascii_offset = 65;
119:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch
293 .loc 1 119 0
294 00fc DB01 movw r26,r22
295 00fe A050 subi r26,lo8(-(SR_Buffer))
296 0100 B040 sbci r27,hi8(-(SR_Buffer))
297 0102 E82F mov r30,r24
298 0104 F0E0 ldi r31,0
299 0106 E050 subi r30,lo8(-(character_Font-65))
300 0108 F040 sbci r31,hi8(-(character_Font-65))
301 .LVL34:
302 .L22:
303 010a 8081 ld r24,Z
304 .LVL35:
305 010c 8C93 st X,r24
306 .L19:
307 010e 0895 ret
308 .cfi_endproc
309 .LFE15:
311 .global add_Number_to_SR_Buffer
313 add_Number_to_SR_Buffer:
314 .LFB16:
120:src/print.c **** }
121:src/print.c ****
122:src/print.c **** }
123:src/print.c ****
124:src/print.c **** void add_Number_to_SR_Buffer(int number, int pos) {
315 .loc 1 124 0
316 .cfi_startproc
317 .LVL36:
318 /* prologue: function */
319 /* frame size = 0 */
320 /* stack size = 0 */
321 .L__stack_usage = 0
125:src/print.c **** SR_Buffer[pos-1] = number_Font[number];
322 .loc 1 125 0
323 0110 6050 subi r22,lo8(-(SR_Buffer-1))
324 0112 7040 sbci r23,hi8(-(SR_Buffer-1))
325 .LVL37:
326 0114 8050 subi r24,lo8(-(number_Font))
327 0116 9040 sbci r25,hi8(-(number_Font))
328 .LVL38:
329 0118 FC01 movw r30,r24
330 011a 8081 ld r24,Z
331 .LVL39:
332 011c FB01 movw r30,r22
333 .LVL40:
334 011e 8083 st Z,r24
335 0120 0895 ret
336 .cfi_endproc
337 .LFE16:
339 .global SR_Buffer
340 .data
343 SR_Buffer:
344 0000 E6 .byte -26
345 0001 E6 .byte -26
346 0002 E6 .byte -26
347 0003 E6 .byte -26
348 0004 E6 .byte -26
349 0005 E6 .byte -26
350 .global dot
351 .section .rodata
354 dot:
355 0000 01 .byte 1
356 .global minus
359 minus:
360 0001 20 .byte 32
361 .global blank
364 blank:
365 0002 00 .zero 1
366 .global character_Font
369 character_Font:
370 0003 BE .byte -66
371 0004 F4 .byte -12
372 0005 E0 .byte -32
373 0006 E6 .byte -26
374 0007 F8 .byte -8
375 0008 B8 .byte -72
376 0009 DC .byte -36
377 000a B4 .byte -76
378 000b 04 .byte 4
379 000c 46 .byte 70
380 000d BC .byte -68
381 000e D0 .byte -48
382 000f 9E .byte -98
383 0010 A4 .byte -92
384 0011 E4 .byte -28
385 0012 BA .byte -70
386 0013 3E .byte 62
387 0014 A0 .byte -96
388 0015 7C .byte 124
389 0016 F0 .byte -16
390 0017 C4 .byte -60
391 0018 C4 .byte -60
392 0019 D6 .byte -42
393 001a B6 .byte -74
394 001b 76 .byte 118
395 001c E6 .byte -26
396 .global number_Font
399 number_Font:
400 001d DE .byte -34
401 001e 06 .byte 6
402 001f EA .byte -22
403 0020 6E .byte 110
404 0021 36 .byte 54
405 0022 7C .byte 124
406 0023 FC .byte -4
407 0024 0E .byte 14
408 0025 FE .byte -2
409 0026 7E .byte 126
410 .text
411 .Letext0:
412 .file 2 "/usr/local/CrossPack-AVR-20131216/avr/include/stdint.h"
DEFINED SYMBOLS
*ABS*:00000000 print.c
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:2 *ABS*:0000003e __SP_H__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:3 *ABS*:0000003d __SP_L__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:4 *ABS*:0000003f __SREG__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:5 *ABS*:0000003b __RAMPZ__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:6 *ABS*:00000000 __tmp_reg__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:7 *ABS*:00000001 __zero_reg__
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:13 .text:00000000 clear_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:343 .data:00000000 SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:44 .text:0000001a add_Decimal_Point_to_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:67 .text:00000028 print_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:107 .text:00000044 add_ASCII_to_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:399 .rodata:0000001d number_Font
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:369 .rodata:00000003 character_Font
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:199 .text:000000ae print_String
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:261 .text:000000dc add_Character_to_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:313 .text:00000110 add_Number_to_SR_Buffer
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:354 .rodata:00000000 dot
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:359 .rodata:00000001 minus
/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:364 .rodata:00000002 blank
UNDEFINED SYMBOLS
__do_copy_data