mirror of https://github.com/noisymime/Arduino.git
Removed three .lst files since I don't think they should be there.
This commit is contained in:
parent
fc1ca8a066
commit
702229b2ec
|
@ -1,390 +0,0 @@
|
|||
1 .file "buffer.c"
|
||||
2 .arch atmega8
|
||||
3 __SREG__ = 0x3f
|
||||
4 __SP_H__ = 0x3e
|
||||
5 __SP_L__ = 0x3d
|
||||
6 __tmp_reg__ = 0
|
||||
7 __zero_reg__ = 1
|
||||
8 .global __do_copy_data
|
||||
9 .global __do_clear_bss
|
||||
12 .text
|
||||
13 .Ltext0:
|
||||
44 .global bufferInit
|
||||
46 bufferInit:
|
||||
1:../avrlib/buffer.c **** /*! \file buffer.c \brief Multipurpose byte buffer structure and methods. */
|
||||
2:../avrlib/buffer.c **** //*****************************************************************************
|
||||
3:../avrlib/buffer.c **** //
|
||||
4:../avrlib/buffer.c **** // File Name : 'buffer.c'
|
||||
5:../avrlib/buffer.c **** // Title : Multipurpose byte buffer structure and methods
|
||||
6:../avrlib/buffer.c **** // Author : Pascal Stang - Copyright (C) 2001-2002
|
||||
7:../avrlib/buffer.c **** // Created : 9/23/2001
|
||||
8:../avrlib/buffer.c **** // Revised : 9/23/2001
|
||||
9:../avrlib/buffer.c **** // Version : 1.0
|
||||
10:../avrlib/buffer.c **** // Target MCU : any
|
||||
11:../avrlib/buffer.c **** // Editor Tabs : 4
|
||||
12:../avrlib/buffer.c **** //
|
||||
13:../avrlib/buffer.c **** // This code is distributed under the GNU Public License
|
||||
14:../avrlib/buffer.c **** // which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
15:../avrlib/buffer.c **** //
|
||||
16:../avrlib/buffer.c **** //*****************************************************************************
|
||||
17:../avrlib/buffer.c ****
|
||||
18:../avrlib/buffer.c **** #include "buffer.h"
|
||||
19:../avrlib/buffer.c ****
|
||||
20:../avrlib/buffer.c **** // global variables
|
||||
21:../avrlib/buffer.c ****
|
||||
22:../avrlib/buffer.c **** // initialization
|
||||
23:../avrlib/buffer.c ****
|
||||
24:../avrlib/buffer.c **** void bufferInit(cBuffer* buffer, unsigned char *start, unsigned short size)
|
||||
25:../avrlib/buffer.c **** {
|
||||
48 .LM1:
|
||||
49 /* prologue: frame size=0 */
|
||||
50 /* prologue end (size=0) */
|
||||
51 0000 FC01 movw r30,r24
|
||||
26:../avrlib/buffer.c **** // set start pointer of the buffer
|
||||
27:../avrlib/buffer.c **** buffer->dataptr = start;
|
||||
53 .LM2:
|
||||
54 0002 6083 st Z,r22
|
||||
55 0004 7183 std Z+1,r23
|
||||
28:../avrlib/buffer.c **** buffer->size = size;
|
||||
57 .LM3:
|
||||
58 0006 4283 std Z+2,r20
|
||||
59 0008 5383 std Z+3,r21
|
||||
29:../avrlib/buffer.c **** // initialize index and length
|
||||
30:../avrlib/buffer.c **** buffer->dataindex = 0;
|
||||
61 .LM4:
|
||||
62 000a 1682 std Z+6,__zero_reg__
|
||||
63 000c 1782 std Z+7,__zero_reg__
|
||||
31:../avrlib/buffer.c **** buffer->datalength = 0;
|
||||
65 .LM5:
|
||||
66 000e 1482 std Z+4,__zero_reg__
|
||||
67 0010 1582 std Z+5,__zero_reg__
|
||||
68 /* epilogue: frame size=0 */
|
||||
69 0012 0895 ret
|
||||
70 /* epilogue end (size=1) */
|
||||
71 /* function bufferInit size 10 (9) */
|
||||
73 .Lscope0:
|
||||
77 .global bufferGetFromFront
|
||||
79 bufferGetFromFront:
|
||||
32:../avrlib/buffer.c **** }
|
||||
33:../avrlib/buffer.c ****
|
||||
34:../avrlib/buffer.c **** // access routines
|
||||
35:../avrlib/buffer.c **** unsigned char bufferGetFromFront(cBuffer* buffer)
|
||||
36:../avrlib/buffer.c **** {
|
||||
81 .LM6:
|
||||
82 /* prologue: frame size=0 */
|
||||
83 0014 CF93 push r28
|
||||
84 0016 DF93 push r29
|
||||
85 /* prologue end (size=2) */
|
||||
86 0018 EC01 movw r28,r24
|
||||
37:../avrlib/buffer.c **** unsigned char data = 0;
|
||||
88 .LM7:
|
||||
89 001a E0E0 ldi r30,lo8(0)
|
||||
38:../avrlib/buffer.c ****
|
||||
39:../avrlib/buffer.c **** // check to see if there's data in the buffer
|
||||
40:../avrlib/buffer.c **** if(buffer->datalength)
|
||||
91 .LM8:
|
||||
92 001c 2C81 ldd r18,Y+4
|
||||
93 001e 3D81 ldd r19,Y+5
|
||||
94 0020 2115 cp r18,__zero_reg__
|
||||
95 0022 3105 cpc r19,__zero_reg__
|
||||
96 0024 B1F0 breq .L3
|
||||
41:../avrlib/buffer.c **** {
|
||||
42:../avrlib/buffer.c **** // get the first character from buffer
|
||||
43:../avrlib/buffer.c **** data = buffer->dataptr[buffer->dataindex];
|
||||
98 .LM9:
|
||||
99 0026 E881 ld r30,Y
|
||||
100 0028 F981 ldd r31,Y+1
|
||||
101 002a 8E81 ldd r24,Y+6
|
||||
102 002c 9F81 ldd r25,Y+7
|
||||
103 002e E80F add r30,r24
|
||||
104 0030 F91F adc r31,r25
|
||||
105 0032 E081 ld r30,Z
|
||||
44:../avrlib/buffer.c **** // move index down and decrement length
|
||||
45:../avrlib/buffer.c **** buffer->dataindex++;
|
||||
107 .LM10:
|
||||
108 0034 0196 adiw r24,1
|
||||
109 0036 8E83 std Y+6,r24
|
||||
110 0038 9F83 std Y+7,r25
|
||||
46:../avrlib/buffer.c **** if(buffer->dataindex >= buffer->size)
|
||||
112 .LM11:
|
||||
113 003a 6A81 ldd r22,Y+2
|
||||
114 003c 7B81 ldd r23,Y+3
|
||||
115 003e 8617 cp r24,r22
|
||||
116 0040 9707 cpc r25,r23
|
||||
117 0042 18F0 brlo .L4
|
||||
47:../avrlib/buffer.c **** {
|
||||
48:../avrlib/buffer.c **** buffer->dataindex %= buffer->size;
|
||||
119 .LM12:
|
||||
120 0044 00D0 rcall __udivmodhi4
|
||||
121 0046 8E83 std Y+6,r24
|
||||
122 0048 9F83 std Y+7,r25
|
||||
123 .L4:
|
||||
49:../avrlib/buffer.c **** }
|
||||
50:../avrlib/buffer.c **** buffer->datalength--;
|
||||
125 .LM13:
|
||||
126 004a 2150 subi r18,lo8(-(-1))
|
||||
127 004c 3040 sbci r19,hi8(-(-1))
|
||||
128 004e 2C83 std Y+4,r18
|
||||
129 0050 3D83 std Y+5,r19
|
||||
130 .L3:
|
||||
51:../avrlib/buffer.c **** }
|
||||
52:../avrlib/buffer.c **** // return
|
||||
53:../avrlib/buffer.c **** return data;
|
||||
54:../avrlib/buffer.c **** }
|
||||
132 .LM14:
|
||||
133 0052 8E2F mov r24,r30
|
||||
134 0054 9927 clr r25
|
||||
135 /* epilogue: frame size=0 */
|
||||
136 0056 DF91 pop r29
|
||||
137 0058 CF91 pop r28
|
||||
138 005a 0895 ret
|
||||
139 /* epilogue end (size=3) */
|
||||
140 /* function bufferGetFromFront size 36 (31) */
|
||||
145 .Lscope1:
|
||||
150 .global bufferDumpFromFront
|
||||
152 bufferDumpFromFront:
|
||||
55:../avrlib/buffer.c ****
|
||||
56:../avrlib/buffer.c **** void bufferDumpFromFront(cBuffer* buffer, unsigned short numbytes)
|
||||
57:../avrlib/buffer.c **** {
|
||||
154 .LM15:
|
||||
155 /* prologue: frame size=0 */
|
||||
156 005c CF93 push r28
|
||||
157 005e DF93 push r29
|
||||
158 /* prologue end (size=2) */
|
||||
159 0060 FC01 movw r30,r24
|
||||
160 0062 EB01 movw r28,r22
|
||||
58:../avrlib/buffer.c **** // dump numbytes from the front of the buffer
|
||||
59:../avrlib/buffer.c **** // are we dumping less than the entire buffer?
|
||||
60:../avrlib/buffer.c **** if(numbytes < buffer->datalength)
|
||||
162 .LM16:
|
||||
163 0064 2481 ldd r18,Z+4
|
||||
164 0066 3581 ldd r19,Z+5
|
||||
165 0068 6217 cp r22,r18
|
||||
166 006a 7307 cpc r23,r19
|
||||
167 006c 98F4 brsh .L6
|
||||
61:../avrlib/buffer.c **** {
|
||||
62:../avrlib/buffer.c **** // move index down by numbytes and decrement length by numbytes
|
||||
63:../avrlib/buffer.c **** buffer->dataindex += numbytes;
|
||||
169 .LM17:
|
||||
170 006e 8681 ldd r24,Z+6
|
||||
171 0070 9781 ldd r25,Z+7
|
||||
172 0072 860F add r24,r22
|
||||
173 0074 971F adc r25,r23
|
||||
174 0076 8683 std Z+6,r24
|
||||
175 0078 9783 std Z+7,r25
|
||||
64:../avrlib/buffer.c **** if(buffer->dataindex >= buffer->size)
|
||||
177 .LM18:
|
||||
178 007a 6281 ldd r22,Z+2
|
||||
179 007c 7381 ldd r23,Z+3
|
||||
180 007e 8617 cp r24,r22
|
||||
181 0080 9707 cpc r25,r23
|
||||
182 0082 18F0 brlo .L7
|
||||
65:../avrlib/buffer.c **** {
|
||||
66:../avrlib/buffer.c **** buffer->dataindex %= buffer->size;
|
||||
184 .LM19:
|
||||
185 0084 00D0 rcall __udivmodhi4
|
||||
186 0086 8683 std Z+6,r24
|
||||
187 0088 9783 std Z+7,r25
|
||||
188 .L7:
|
||||
67:../avrlib/buffer.c **** }
|
||||
68:../avrlib/buffer.c **** buffer->datalength -= numbytes;
|
||||
190 .LM20:
|
||||
191 008a 2C1B sub r18,r28
|
||||
192 008c 3D0B sbc r19,r29
|
||||
193 008e 2483 std Z+4,r18
|
||||
194 0090 3583 std Z+5,r19
|
||||
195 0092 02C0 rjmp .L5
|
||||
196 .L6:
|
||||
69:../avrlib/buffer.c **** }
|
||||
70:../avrlib/buffer.c **** else
|
||||
71:../avrlib/buffer.c **** {
|
||||
72:../avrlib/buffer.c **** // flush the whole buffer
|
||||
73:../avrlib/buffer.c **** buffer->datalength = 0;
|
||||
198 .LM21:
|
||||
199 0094 1482 std Z+4,__zero_reg__
|
||||
200 0096 1582 std Z+5,__zero_reg__
|
||||
201 .L5:
|
||||
202 /* epilogue: frame size=0 */
|
||||
203 0098 DF91 pop r29
|
||||
204 009a CF91 pop r28
|
||||
205 009c 0895 ret
|
||||
206 /* epilogue end (size=3) */
|
||||
207 /* function bufferDumpFromFront size 33 (28) */
|
||||
209 .Lscope2:
|
||||
214 .global bufferGetAtIndex
|
||||
216 bufferGetAtIndex:
|
||||
74:../avrlib/buffer.c **** }
|
||||
75:../avrlib/buffer.c **** }
|
||||
76:../avrlib/buffer.c ****
|
||||
77:../avrlib/buffer.c **** unsigned char bufferGetAtIndex(cBuffer* buffer, unsigned short index)
|
||||
78:../avrlib/buffer.c **** {
|
||||
218 .LM22:
|
||||
219 /* prologue: frame size=0 */
|
||||
220 /* prologue end (size=0) */
|
||||
221 009e FC01 movw r30,r24
|
||||
79:../avrlib/buffer.c **** // return character at index in buffer
|
||||
80:../avrlib/buffer.c **** return buffer->dataptr[(buffer->dataindex+index)%(buffer->size)];
|
||||
223 .LM23:
|
||||
224 00a0 8681 ldd r24,Z+6
|
||||
225 00a2 9781 ldd r25,Z+7
|
||||
226 00a4 2281 ldd r18,Z+2
|
||||
227 00a6 3381 ldd r19,Z+3
|
||||
228 00a8 860F add r24,r22
|
||||
229 00aa 971F adc r25,r23
|
||||
230 00ac B901 movw r22,r18
|
||||
231 00ae 00D0 rcall __udivmodhi4
|
||||
232 00b0 0190 ld __tmp_reg__,Z+
|
||||
233 00b2 F081 ld r31,Z
|
||||
234 00b4 E02D mov r30,__tmp_reg__
|
||||
235 00b6 E80F add r30,r24
|
||||
236 00b8 F91F adc r31,r25
|
||||
237 00ba 8081 ld r24,Z
|
||||
81:../avrlib/buffer.c **** }
|
||||
239 .LM24:
|
||||
240 00bc 9927 clr r25
|
||||
241 /* epilogue: frame size=0 */
|
||||
242 00be 0895 ret
|
||||
243 /* epilogue end (size=1) */
|
||||
244 /* function bufferGetAtIndex size 17 (16) */
|
||||
246 .Lscope3:
|
||||
251 .global bufferAddToEnd
|
||||
253 bufferAddToEnd:
|
||||
82:../avrlib/buffer.c ****
|
||||
83:../avrlib/buffer.c **** unsigned char bufferAddToEnd(cBuffer* buffer, unsigned char data)
|
||||
84:../avrlib/buffer.c **** {
|
||||
255 .LM25:
|
||||
256 /* prologue: frame size=0 */
|
||||
257 00c0 CF93 push r28
|
||||
258 00c2 DF93 push r29
|
||||
259 /* prologue end (size=2) */
|
||||
260 00c4 EC01 movw r28,r24
|
||||
261 00c6 462F mov r20,r22
|
||||
85:../avrlib/buffer.c **** // make sure the buffer has room
|
||||
86:../avrlib/buffer.c **** if(buffer->datalength < buffer->size)
|
||||
263 .LM26:
|
||||
264 00c8 2C81 ldd r18,Y+4
|
||||
265 00ca 3D81 ldd r19,Y+5
|
||||
266 00cc 6A81 ldd r22,Y+2
|
||||
267 00ce 7B81 ldd r23,Y+3
|
||||
268 00d0 2617 cp r18,r22
|
||||
269 00d2 3707 cpc r19,r23
|
||||
270 00d4 90F4 brsh .L11
|
||||
87:../avrlib/buffer.c **** {
|
||||
88:../avrlib/buffer.c **** // save data byte at end of buffer
|
||||
89:../avrlib/buffer.c **** buffer->dataptr[(buffer->dataindex + buffer->datalength) % buffer->size] = data;
|
||||
272 .LM27:
|
||||
273 00d6 8E81 ldd r24,Y+6
|
||||
274 00d8 9F81 ldd r25,Y+7
|
||||
275 00da 820F add r24,r18
|
||||
276 00dc 931F adc r25,r19
|
||||
277 00de 00D0 rcall __udivmodhi4
|
||||
278 00e0 E881 ld r30,Y
|
||||
279 00e2 F981 ldd r31,Y+1
|
||||
280 00e4 E80F add r30,r24
|
||||
281 00e6 F91F adc r31,r25
|
||||
282 00e8 4083 st Z,r20
|
||||
90:../avrlib/buffer.c **** // increment the length
|
||||
91:../avrlib/buffer.c **** buffer->datalength++;
|
||||
284 .LM28:
|
||||
285 00ea 8C81 ldd r24,Y+4
|
||||
286 00ec 9D81 ldd r25,Y+5
|
||||
287 00ee 0196 adiw r24,1
|
||||
288 00f0 8C83 std Y+4,r24
|
||||
289 00f2 9D83 std Y+5,r25
|
||||
92:../avrlib/buffer.c **** // return success
|
||||
93:../avrlib/buffer.c **** return -1;
|
||||
291 .LM29:
|
||||
292 00f4 8FEF ldi r24,lo8(255)
|
||||
293 00f6 90E0 ldi r25,hi8(255)
|
||||
294 00f8 02C0 rjmp .L10
|
||||
295 .L11:
|
||||
94:../avrlib/buffer.c **** }
|
||||
95:../avrlib/buffer.c **** else return 0;
|
||||
297 .LM30:
|
||||
298 00fa 80E0 ldi r24,lo8(0)
|
||||
299 00fc 90E0 ldi r25,hi8(0)
|
||||
300 .L10:
|
||||
301 /* epilogue: frame size=0 */
|
||||
302 00fe DF91 pop r29
|
||||
303 0100 CF91 pop r28
|
||||
304 0102 0895 ret
|
||||
305 /* epilogue end (size=3) */
|
||||
306 /* function bufferAddToEnd size 34 (29) */
|
||||
308 .Lscope4:
|
||||
312 .global bufferIsNotFull
|
||||
314 bufferIsNotFull:
|
||||
96:../avrlib/buffer.c **** }
|
||||
97:../avrlib/buffer.c ****
|
||||
98:../avrlib/buffer.c **** unsigned char bufferIsNotFull(cBuffer* buffer)
|
||||
99:../avrlib/buffer.c **** {
|
||||
316 .LM31:
|
||||
317 /* prologue: frame size=0 */
|
||||
318 /* prologue end (size=0) */
|
||||
319 0104 FC01 movw r30,r24
|
||||
100:../avrlib/buffer.c **** // check to see if the buffer has room
|
||||
101:../avrlib/buffer.c **** // return true if there is room
|
||||
102:../avrlib/buffer.c **** return (buffer->datalength < buffer->size);
|
||||
321 .LM32:
|
||||
322 0106 40E0 ldi r20,lo8(0)
|
||||
323 0108 50E0 ldi r21,hi8(0)
|
||||
324 010a 2481 ldd r18,Z+4
|
||||
325 010c 3581 ldd r19,Z+5
|
||||
326 010e 8281 ldd r24,Z+2
|
||||
327 0110 9381 ldd r25,Z+3
|
||||
328 0112 2817 cp r18,r24
|
||||
329 0114 3907 cpc r19,r25
|
||||
330 0116 10F4 brsh .L14
|
||||
332 .LM33:
|
||||
333 0118 41E0 ldi r20,lo8(1)
|
||||
334 011a 50E0 ldi r21,hi8(1)
|
||||
335 .L14:
|
||||
103:../avrlib/buffer.c **** }
|
||||
337 .LM34:
|
||||
338 011c CA01 movw r24,r20
|
||||
339 /* epilogue: frame size=0 */
|
||||
340 011e 0895 ret
|
||||
341 /* epilogue end (size=1) */
|
||||
342 /* function bufferIsNotFull size 14 (13) */
|
||||
344 .Lscope5:
|
||||
348 .global bufferFlush
|
||||
350 bufferFlush:
|
||||
104:../avrlib/buffer.c ****
|
||||
105:../avrlib/buffer.c **** void bufferFlush(cBuffer* buffer)
|
||||
106:../avrlib/buffer.c **** {
|
||||
352 .LM35:
|
||||
353 /* prologue: frame size=0 */
|
||||
354 /* prologue end (size=0) */
|
||||
107:../avrlib/buffer.c **** // flush contents of the buffer
|
||||
108:../avrlib/buffer.c **** buffer->datalength = 0;
|
||||
356 .LM36:
|
||||
357 0120 FC01 movw r30,r24
|
||||
358 0122 1482 std Z+4,__zero_reg__
|
||||
359 0124 1582 std Z+5,__zero_reg__
|
||||
360 /* epilogue: frame size=0 */
|
||||
361 0126 0895 ret
|
||||
362 /* epilogue end (size=1) */
|
||||
363 /* function bufferFlush size 4 (3) */
|
||||
365 .Lscope6:
|
||||
367 .text
|
||||
369 Letext:
|
||||
370 /* File "../avrlib/buffer.c": code 148 = 0x0094 ( 129), prologues 6, epilogues 13 */
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:00000000 buffer.c
|
||||
*ABS*:0000003f __SREG__
|
||||
*ABS*:0000003e __SP_H__
|
||||
*ABS*:0000003d __SP_L__
|
||||
*ABS*:00000000 __tmp_reg__
|
||||
*ABS*:00000001 __zero_reg__
|
||||
/var/tmp//ccWNR2QI.s:46 .text:00000000 bufferInit
|
||||
/var/tmp//ccWNR2QI.s:79 .text:00000014 bufferGetFromFront
|
||||
/var/tmp//ccWNR2QI.s:152 .text:0000005c bufferDumpFromFront
|
||||
/var/tmp//ccWNR2QI.s:216 .text:0000009e bufferGetAtIndex
|
||||
/var/tmp//ccWNR2QI.s:253 .text:000000c0 bufferAddToEnd
|
||||
/var/tmp//ccWNR2QI.s:314 .text:00000104 bufferIsNotFull
|
||||
/var/tmp//ccWNR2QI.s:350 .text:00000120 bufferFlush
|
||||
/var/tmp//ccWNR2QI.s:369 .text:00000128 Letext
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
__do_copy_data
|
||||
__do_clear_bss
|
||||
__udivmodhi4
|
File diff suppressed because it is too large
Load Diff
|
@ -1,789 +0,0 @@
|
|||
1 .file "uart.c"
|
||||
2 .arch atmega8
|
||||
3 __SREG__ = 0x3f
|
||||
4 __SP_H__ = 0x3e
|
||||
5 __SP_L__ = 0x3d
|
||||
6 __tmp_reg__ = 0
|
||||
7 __zero_reg__ = 1
|
||||
8 .global __do_copy_data
|
||||
9 .global __do_clear_bss
|
||||
12 .text
|
||||
13 .Ltext0:
|
||||
86 .global uartSetBaudRate
|
||||
88 uartSetBaudRate:
|
||||
1:../avrlib/uart.c **** /*! \file uart.c \brief UART driver with buffer support. */
|
||||
2:../avrlib/uart.c **** // *****************************************************************************
|
||||
3:../avrlib/uart.c **** //
|
||||
4:../avrlib/uart.c **** // File Name : 'uart.c'
|
||||
5:../avrlib/uart.c **** // Title : UART driver with buffer support
|
||||
6:../avrlib/uart.c **** // Author : Pascal Stang - Copyright (C) 2000-2002
|
||||
7:../avrlib/uart.c **** // Created : 11/22/2000
|
||||
8:../avrlib/uart.c **** // Revised : 06/09/2003
|
||||
9:../avrlib/uart.c **** // Version : 1.3
|
||||
10:../avrlib/uart.c **** // Target MCU : ATMEL AVR Series
|
||||
11:../avrlib/uart.c **** // Editor Tabs : 4
|
||||
12:../avrlib/uart.c **** //
|
||||
13:../avrlib/uart.c **** // This code is distributed under the GNU Public License
|
||||
14:../avrlib/uart.c **** // which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
15:../avrlib/uart.c **** //
|
||||
16:../avrlib/uart.c **** // *****************************************************************************
|
||||
17:../avrlib/uart.c ****
|
||||
18:../avrlib/uart.c **** #include <avr/io.h>
|
||||
19:../avrlib/uart.c **** #include <avr/interrupt.h>
|
||||
20:../avrlib/uart.c **** #include <avr/signal.h>
|
||||
21:../avrlib/uart.c ****
|
||||
22:../avrlib/uart.c **** #include "buffer.h"
|
||||
23:../avrlib/uart.c **** #include "uart.h"
|
||||
24:../avrlib/uart.c ****
|
||||
25:../avrlib/uart.c **** // UART global variables
|
||||
26:../avrlib/uart.c **** // flag variables
|
||||
27:../avrlib/uart.c **** volatile u08 uartReadyTx; ///< uartReadyTx flag
|
||||
28:../avrlib/uart.c **** volatile u08 uartBufferedTx; ///< uartBufferedTx flag
|
||||
29:../avrlib/uart.c **** // receive and transmit buffers
|
||||
30:../avrlib/uart.c **** cBuffer uartRxBuffer; ///< uart receive buffer
|
||||
31:../avrlib/uart.c **** cBuffer uartTxBuffer; ///< uart transmit buffer
|
||||
32:../avrlib/uart.c **** unsigned short uartRxOverflow; ///< receive overflow counter
|
||||
33:../avrlib/uart.c ****
|
||||
34:../avrlib/uart.c **** #ifndef UART_BUFFERS_EXTERNAL_RAM
|
||||
35:../avrlib/uart.c **** // using internal ram,
|
||||
36:../avrlib/uart.c **** // automatically allocate space in ram for each buffer
|
||||
37:../avrlib/uart.c **** static char uartRxData[UART_RX_BUFFER_SIZE];
|
||||
38:../avrlib/uart.c **** static char uartTxData[UART_TX_BUFFER_SIZE];
|
||||
39:../avrlib/uart.c **** #endif
|
||||
40:../avrlib/uart.c ****
|
||||
41:../avrlib/uart.c **** typedef void (*voidFuncPtru08)(unsigned char);
|
||||
42:../avrlib/uart.c **** volatile static voidFuncPtru08 UartRxFunc;
|
||||
43:../avrlib/uart.c ****
|
||||
44:../avrlib/uart.c **** //! enable and initialize the uart
|
||||
45:../avrlib/uart.c **** void uartInit(void)
|
||||
46:../avrlib/uart.c **** {
|
||||
47:../avrlib/uart.c **** // initialize the buffers
|
||||
48:../avrlib/uart.c **** uartInitBuffers();
|
||||
49:../avrlib/uart.c **** // initialize user receive handler
|
||||
50:../avrlib/uart.c **** UartRxFunc = 0;
|
||||
51:../avrlib/uart.c ****
|
||||
52:../avrlib/uart.c **** // enable RxD/TxD and interrupts
|
||||
53:../avrlib/uart.c **** outb(UCR, BV(RXCIE)|BV(TXCIE)|BV(RXEN)|BV(TXEN));
|
||||
54:../avrlib/uart.c ****
|
||||
55:../avrlib/uart.c **** // set default baud rate
|
||||
56:../avrlib/uart.c **** uartSetBaudRate(UART_DEFAULT_BAUD_RATE);
|
||||
57:../avrlib/uart.c **** // initialize states
|
||||
58:../avrlib/uart.c **** uartReadyTx = TRUE;
|
||||
59:../avrlib/uart.c **** uartBufferedTx = FALSE;
|
||||
60:../avrlib/uart.c **** // clear overflow count
|
||||
61:../avrlib/uart.c **** uartRxOverflow = 0;
|
||||
62:../avrlib/uart.c **** // enable interrupts
|
||||
63:../avrlib/uart.c **** sei();
|
||||
64:../avrlib/uart.c **** }
|
||||
65:../avrlib/uart.c ****
|
||||
66:../avrlib/uart.c **** //! create and initialize the uart transmit and receive buffers
|
||||
67:../avrlib/uart.c **** void uartInitBuffers(void)
|
||||
68:../avrlib/uart.c **** {
|
||||
69:../avrlib/uart.c **** #ifndef UART_BUFFERS_EXTERNAL_RAM
|
||||
70:../avrlib/uart.c **** // initialize the UART receive buffer
|
||||
71:../avrlib/uart.c **** bufferInit(&uartRxBuffer, uartRxData, UART_RX_BUFFER_SIZE);
|
||||
72:../avrlib/uart.c **** // initialize the UART transmit buffer
|
||||
73:../avrlib/uart.c **** bufferInit(&uartTxBuffer, uartTxData, UART_TX_BUFFER_SIZE);
|
||||
74:../avrlib/uart.c **** #else
|
||||
75:../avrlib/uart.c **** // initialize the UART receive buffer
|
||||
76:../avrlib/uart.c **** bufferInit(&uartRxBuffer, (u08*) UART_RX_BUFFER_ADDR, UART_RX_BUFFER_SIZE);
|
||||
77:../avrlib/uart.c **** // initialize the UART transmit buffer
|
||||
78:../avrlib/uart.c **** bufferInit(&uartTxBuffer, (u08*) UART_TX_BUFFER_ADDR, UART_TX_BUFFER_SIZE);
|
||||
79:../avrlib/uart.c **** #endif
|
||||
80:../avrlib/uart.c **** }
|
||||
81:../avrlib/uart.c ****
|
||||
82:../avrlib/uart.c **** //! redirects received data to a user function
|
||||
83:../avrlib/uart.c **** void uartSetRxHandler(void (*rx_func)(unsigned char c))
|
||||
84:../avrlib/uart.c **** {
|
||||
85:../avrlib/uart.c **** // set the receive interrupt to run the supplied user function
|
||||
86:../avrlib/uart.c **** UartRxFunc = rx_func;
|
||||
87:../avrlib/uart.c **** }
|
||||
88:../avrlib/uart.c ****
|
||||
89:../avrlib/uart.c **** //! set the uart baud rate
|
||||
90:../avrlib/uart.c **** void uartSetBaudRate(u32 baudrate)
|
||||
91:../avrlib/uart.c **** {
|
||||
90 .LM1:
|
||||
91 /* prologue: frame size=0 */
|
||||
92 /* prologue end (size=0) */
|
||||
93 0000 DC01 movw r26,r24
|
||||
94 0002 CB01 movw r24,r22
|
||||
92:../avrlib/uart.c **** // calculate division factor for requested baud rate, and set it
|
||||
93:../avrlib/uart.c **** u16 bauddiv = ((F_CPU+(baudrate*8L))/(baudrate*16L)-1);
|
||||
96 .LM2:
|
||||
97 0004 73E0 ldi r23,3
|
||||
98 0006 880F 1: lsl r24
|
||||
99 0008 991F rol r25
|
||||
100 000a AA1F rol r26
|
||||
101 000c BB1F rol r27
|
||||
102 000e 7A95 dec r23
|
||||
103 0010 D1F7 brne 1b
|
||||
104 0012 9C01 movw r18,r24
|
||||
105 0014 AD01 movw r20,r26
|
||||
106 0016 220F lsl r18
|
||||
107 0018 331F rol r19
|
||||
108 001a 441F rol r20
|
||||
109 001c 551F rol r21
|
||||
110 001e 8050 subi r24,lo8(-(16000000))
|
||||
111 0020 9C4D sbci r25,hi8(-(16000000))
|
||||
112 0022 AB40 sbci r26,hlo8(-(16000000))
|
||||
113 0024 BF4F sbci r27,hhi8(-(16000000))
|
||||
114 0026 BC01 movw r22,r24
|
||||
115 0028 CD01 movw r24,r26
|
||||
116 002a 00D0 rcall __udivmodsi4
|
||||
117 002c DA01 movw r26,r20
|
||||
118 002e C901 movw r24,r18
|
||||
119 0030 0197 sbiw r24,1
|
||||
94:../avrlib/uart.c **** outb(UBRRL, bauddiv);
|
||||
121 .LM3:
|
||||
122 0032 89B9 out 41-0x20,r24
|
||||
95:../avrlib/uart.c **** #ifdef UBRRH
|
||||
96:../avrlib/uart.c **** outb(UBRRH, bauddiv>>8);
|
||||
124 .LM4:
|
||||
125 0034 892F mov r24,r25
|
||||
126 0036 9927 clr r25
|
||||
127 0038 80BD out 64-0x20,r24
|
||||
128 /* epilogue: frame size=0 */
|
||||
129 003a 0895 ret
|
||||
130 /* epilogue end (size=1) */
|
||||
131 /* function uartSetBaudRate size 30 (29) */
|
||||
136 .Lscope0:
|
||||
139 .global uartInitBuffers
|
||||
141 uartInitBuffers:
|
||||
143 .LM5:
|
||||
144 /* prologue: frame size=0 */
|
||||
145 /* prologue end (size=0) */
|
||||
147 .LM6:
|
||||
148 003c 40E4 ldi r20,lo8(64)
|
||||
149 003e 50E0 ldi r21,hi8(64)
|
||||
150 0040 60E0 ldi r22,lo8(uartRxData)
|
||||
151 0042 70E0 ldi r23,hi8(uartRxData)
|
||||
152 0044 80E0 ldi r24,lo8(uartRxBuffer)
|
||||
153 0046 90E0 ldi r25,hi8(uartRxBuffer)
|
||||
154 0048 00D0 rcall bufferInit
|
||||
156 .LM7:
|
||||
157 004a 40E4 ldi r20,lo8(64)
|
||||
158 004c 50E0 ldi r21,hi8(64)
|
||||
159 004e 60E0 ldi r22,lo8(uartTxData)
|
||||
160 0050 70E0 ldi r23,hi8(uartTxData)
|
||||
161 0052 80E0 ldi r24,lo8(uartTxBuffer)
|
||||
162 0054 90E0 ldi r25,hi8(uartTxBuffer)
|
||||
163 0056 00D0 rcall bufferInit
|
||||
164 /* epilogue: frame size=0 */
|
||||
165 0058 0895 ret
|
||||
166 /* epilogue end (size=1) */
|
||||
167 /* function uartInitBuffers size 15 (14) */
|
||||
169 .Lscope1:
|
||||
172 .global uartInit
|
||||
174 uartInit:
|
||||
176 .LM8:
|
||||
177 /* prologue: frame size=0 */
|
||||
178 /* prologue end (size=0) */
|
||||
180 .LM9:
|
||||
181 005a F0DF rcall uartInitBuffers
|
||||
183 .LM10:
|
||||
184 005c 1092 0000 sts (UartRxFunc)+1,__zero_reg__
|
||||
185 0060 1092 0000 sts UartRxFunc,__zero_reg__
|
||||
187 .LM11:
|
||||
188 0064 88ED ldi r24,lo8(-40)
|
||||
189 0066 8AB9 out 42-0x20,r24
|
||||
191 .LM12:
|
||||
192 0068 60E8 ldi r22,lo8(9600)
|
||||
193 006a 75E2 ldi r23,hi8(9600)
|
||||
194 006c 80E0 ldi r24,hlo8(9600)
|
||||
195 006e 90E0 ldi r25,hhi8(9600)
|
||||
196 0070 C7DF rcall uartSetBaudRate
|
||||
198 .LM13:
|
||||
199 0072 8FEF ldi r24,lo8(-1)
|
||||
200 0074 8093 0000 sts uartReadyTx,r24
|
||||
202 .LM14:
|
||||
203 0078 1092 0000 sts uartBufferedTx,__zero_reg__
|
||||
205 .LM15:
|
||||
206 007c 1092 0000 sts (uartRxOverflow)+1,__zero_reg__
|
||||
207 0080 1092 0000 sts uartRxOverflow,__zero_reg__
|
||||
209 .LM16:
|
||||
210 /* #APP */
|
||||
211 0084 7894 sei
|
||||
212 /* #NOAPP */
|
||||
213 /* epilogue: frame size=0 */
|
||||
214 0086 0895 ret
|
||||
215 /* epilogue end (size=1) */
|
||||
216 /* function uartInit size 24 (23) */
|
||||
218 .Lscope2:
|
||||
222 .global uartSetRxHandler
|
||||
224 uartSetRxHandler:
|
||||
226 .LM17:
|
||||
227 /* prologue: frame size=0 */
|
||||
228 /* prologue end (size=0) */
|
||||
230 .LM18:
|
||||
231 0088 9093 0000 sts (UartRxFunc)+1,r25
|
||||
232 008c 8093 0000 sts UartRxFunc,r24
|
||||
233 /* epilogue: frame size=0 */
|
||||
234 0090 0895 ret
|
||||
235 /* epilogue end (size=1) */
|
||||
236 /* function uartSetRxHandler size 5 (4) */
|
||||
238 .Lscope3:
|
||||
241 .global uartGetRxBuffer
|
||||
243 uartGetRxBuffer:
|
||||
97:../avrlib/uart.c **** #endif
|
||||
98:../avrlib/uart.c **** }
|
||||
99:../avrlib/uart.c ****
|
||||
100:../avrlib/uart.c **** //! returns the receive buffer structure
|
||||
101:../avrlib/uart.c **** cBuffer* uartGetRxBuffer(void)
|
||||
102:../avrlib/uart.c **** {
|
||||
245 .LM19:
|
||||
246 /* prologue: frame size=0 */
|
||||
247 /* prologue end (size=0) */
|
||||
103:../avrlib/uart.c **** // return rx buffer pointer
|
||||
104:../avrlib/uart.c **** return &uartRxBuffer;
|
||||
105:../avrlib/uart.c **** }
|
||||
249 .LM20:
|
||||
250 0092 80E0 ldi r24,lo8(uartRxBuffer)
|
||||
251 0094 90E0 ldi r25,hi8(uartRxBuffer)
|
||||
252 /* epilogue: frame size=0 */
|
||||
253 0096 0895 ret
|
||||
254 /* epilogue end (size=1) */
|
||||
255 /* function uartGetRxBuffer size 3 (2) */
|
||||
257 .Lscope4:
|
||||
260 .global uartGetTxBuffer
|
||||
262 uartGetTxBuffer:
|
||||
106:../avrlib/uart.c ****
|
||||
107:../avrlib/uart.c **** //! returns the transmit buffer structure
|
||||
108:../avrlib/uart.c **** cBuffer* uartGetTxBuffer(void)
|
||||
109:../avrlib/uart.c **** {
|
||||
264 .LM21:
|
||||
265 /* prologue: frame size=0 */
|
||||
266 /* prologue end (size=0) */
|
||||
110:../avrlib/uart.c **** // return tx buffer pointer
|
||||
111:../avrlib/uart.c **** return &uartTxBuffer;
|
||||
112:../avrlib/uart.c **** }
|
||||
268 .LM22:
|
||||
269 0098 80E0 ldi r24,lo8(uartTxBuffer)
|
||||
270 009a 90E0 ldi r25,hi8(uartTxBuffer)
|
||||
271 /* epilogue: frame size=0 */
|
||||
272 009c 0895 ret
|
||||
273 /* epilogue end (size=1) */
|
||||
274 /* function uartGetTxBuffer size 3 (2) */
|
||||
276 .Lscope5:
|
||||
280 .global uartSendByte
|
||||
282 uartSendByte:
|
||||
113:../avrlib/uart.c ****
|
||||
114:../avrlib/uart.c **** //! transmits a byte over the uart
|
||||
115:../avrlib/uart.c **** void uartSendByte(u08 txData)
|
||||
116:../avrlib/uart.c **** {
|
||||
284 .LM23:
|
||||
285 /* prologue: frame size=0 */
|
||||
286 /* prologue end (size=0) */
|
||||
287 009e 982F mov r25,r24
|
||||
288 .L8:
|
||||
117:../avrlib/uart.c **** // wait for the transmitter to be ready
|
||||
118:../avrlib/uart.c **** while(!uartReadyTx);
|
||||
290 .LM24:
|
||||
291 00a0 8091 0000 lds r24,uartReadyTx
|
||||
292 00a4 8823 tst r24
|
||||
293 00a6 E1F3 breq .L8
|
||||
119:../avrlib/uart.c **** // send byte
|
||||
120:../avrlib/uart.c **** outb(UDR, txData);
|
||||
295 .LM25:
|
||||
296 00a8 9CB9 out 44-0x20,r25
|
||||
121:../avrlib/uart.c **** // set ready state to FALSE
|
||||
122:../avrlib/uart.c **** uartReadyTx = FALSE;
|
||||
298 .LM26:
|
||||
299 00aa 1092 0000 sts uartReadyTx,__zero_reg__
|
||||
300 /* epilogue: frame size=0 */
|
||||
301 00ae 0895 ret
|
||||
302 /* epilogue end (size=1) */
|
||||
303 /* function uartSendByte size 9 (8) */
|
||||
305 .Lscope6:
|
||||
309 .global uartReceiveByte
|
||||
311 uartReceiveByte:
|
||||
123:../avrlib/uart.c **** }
|
||||
124:../avrlib/uart.c ****
|
||||
125:../avrlib/uart.c **** //! gets a single byte from the uart receive buffer (getchar-style)
|
||||
126:../avrlib/uart.c **** int uartGetByte(void)
|
||||
127:../avrlib/uart.c **** {
|
||||
128:../avrlib/uart.c **** u08 c;
|
||||
129:../avrlib/uart.c **** if(uartReceiveByte(&c))
|
||||
130:../avrlib/uart.c **** return c;
|
||||
131:../avrlib/uart.c **** else
|
||||
132:../avrlib/uart.c **** return -1;
|
||||
133:../avrlib/uart.c **** }
|
||||
134:../avrlib/uart.c ****
|
||||
135:../avrlib/uart.c **** //! gets a byte (if available) from the uart receive buffer
|
||||
136:../avrlib/uart.c **** u08 uartReceiveByte(u08* rxData)
|
||||
137:../avrlib/uart.c **** {
|
||||
313 .LM27:
|
||||
314 /* prologue: frame size=0 */
|
||||
315 00b0 CF93 push r28
|
||||
316 00b2 DF93 push r29
|
||||
317 /* prologue end (size=2) */
|
||||
318 00b4 EC01 movw r28,r24
|
||||
138:../avrlib/uart.c **** // make sure we have a receive buffer
|
||||
139:../avrlib/uart.c **** if(uartRxBuffer.size)
|
||||
320 .LM28:
|
||||
321 00b6 8091 0000 lds r24,uartRxBuffer+2
|
||||
322 00ba 9091 0000 lds r25,(uartRxBuffer+2)+1
|
||||
323 00be 0097 sbiw r24,0
|
||||
324 00c0 61F0 breq .L11
|
||||
140:../avrlib/uart.c **** {
|
||||
141:../avrlib/uart.c **** // make sure we have data
|
||||
142:../avrlib/uart.c **** if(uartRxBuffer.datalength)
|
||||
326 .LM29:
|
||||
327 00c2 8091 0000 lds r24,uartRxBuffer+4
|
||||
328 00c6 9091 0000 lds r25,(uartRxBuffer+4)+1
|
||||
329 00ca 0097 sbiw r24,0
|
||||
330 00cc 31F0 breq .L11
|
||||
143:../avrlib/uart.c **** {
|
||||
144:../avrlib/uart.c **** // get byte from beginning of buffer
|
||||
145:../avrlib/uart.c **** *rxData = bufferGetFromFront(&uartRxBuffer);
|
||||
332 .LM30:
|
||||
333 00ce 80E0 ldi r24,lo8(uartRxBuffer)
|
||||
334 00d0 90E0 ldi r25,hi8(uartRxBuffer)
|
||||
335 00d2 00D0 rcall bufferGetFromFront
|
||||
336 00d4 8883 st Y,r24
|
||||
146:../avrlib/uart.c **** return TRUE;
|
||||
338 .LM31:
|
||||
339 00d6 8FEF ldi r24,lo8(255)
|
||||
340 00d8 90E0 ldi r25,hi8(255)
|
||||
341 .L11:
|
||||
342 /* epilogue: frame size=0 */
|
||||
343 00da DF91 pop r29
|
||||
344 00dc CF91 pop r28
|
||||
345 00de 0895 ret
|
||||
346 /* epilogue end (size=3) */
|
||||
347 /* function uartReceiveByte size 24 (19) */
|
||||
349 .Lscope7:
|
||||
352 .global uartGetByte
|
||||
354 uartGetByte:
|
||||
356 .LM32:
|
||||
357 /* prologue: frame size=1 */
|
||||
358 00e0 CF93 push r28
|
||||
359 00e2 DF93 push r29
|
||||
360 00e4 CDB7 in r28,__SP_L__
|
||||
361 00e6 DEB7 in r29,__SP_H__
|
||||
362 00e8 2197 sbiw r28,1
|
||||
363 00ea 0FB6 in __tmp_reg__,__SREG__
|
||||
364 00ec F894 cli
|
||||
365 00ee DEBF out __SP_H__,r29
|
||||
366 00f0 0FBE out __SREG__,__tmp_reg__
|
||||
367 00f2 CDBF out __SP_L__,r28
|
||||
368 /* prologue end (size=10) */
|
||||
370 .LM33:
|
||||
371 00f4 CE01 movw r24,r28
|
||||
372 00f6 0196 adiw r24,1
|
||||
373 00f8 DBDF rcall uartReceiveByte
|
||||
374 00fa 8823 tst r24
|
||||
375 00fc 19F0 breq .L17
|
||||
377 .LM34:
|
||||
378 00fe 8981 ldd r24,Y+1
|
||||
379 0100 9927 clr r25
|
||||
380 0102 02C0 rjmp .L16
|
||||
381 .L17:
|
||||
383 .LM35:
|
||||
384 0104 8FEF ldi r24,lo8(-1)
|
||||
385 0106 9FEF ldi r25,hi8(-1)
|
||||
386 .L16:
|
||||
387 /* epilogue: frame size=1 */
|
||||
388 0108 2196 adiw r28,1
|
||||
389 010a 0FB6 in __tmp_reg__,__SREG__
|
||||
390 010c F894 cli
|
||||
391 010e DEBF out __SP_H__,r29
|
||||
392 0110 0FBE out __SREG__,__tmp_reg__
|
||||
393 0112 CDBF out __SP_L__,r28
|
||||
394 0114 DF91 pop r29
|
||||
395 0116 CF91 pop r28
|
||||
396 0118 0895 ret
|
||||
397 /* epilogue end (size=9) */
|
||||
398 /* function uartGetByte size 29 (10) */
|
||||
403 .Lscope8:
|
||||
406 .global uartFlushReceiveBuffer
|
||||
408 uartFlushReceiveBuffer:
|
||||
147:../avrlib/uart.c **** }
|
||||
148:../avrlib/uart.c **** else
|
||||
149:../avrlib/uart.c **** {
|
||||
150:../avrlib/uart.c **** // no data
|
||||
151:../avrlib/uart.c **** return FALSE;
|
||||
152:../avrlib/uart.c **** }
|
||||
153:../avrlib/uart.c **** }
|
||||
154:../avrlib/uart.c **** else
|
||||
155:../avrlib/uart.c **** {
|
||||
156:../avrlib/uart.c **** // no buffer
|
||||
157:../avrlib/uart.c **** return FALSE;
|
||||
158:../avrlib/uart.c **** }
|
||||
159:../avrlib/uart.c **** }
|
||||
160:../avrlib/uart.c ****
|
||||
161:../avrlib/uart.c **** //! flush all data out of the receive buffer
|
||||
162:../avrlib/uart.c **** void uartFlushReceiveBuffer(void)
|
||||
163:../avrlib/uart.c **** {
|
||||
410 .LM36:
|
||||
411 /* prologue: frame size=0 */
|
||||
412 /* prologue end (size=0) */
|
||||
164:../avrlib/uart.c **** // flush all data from receive buffer
|
||||
165:../avrlib/uart.c **** //bufferFlush(&uartRxBuffer);
|
||||
166:../avrlib/uart.c **** // same effect as above
|
||||
167:../avrlib/uart.c **** uartRxBuffer.datalength = 0;
|
||||
414 .LM37:
|
||||
415 011a 1092 0000 sts (uartRxBuffer+4)+1,__zero_reg__
|
||||
416 011e 1092 0000 sts uartRxBuffer+4,__zero_reg__
|
||||
417 /* epilogue: frame size=0 */
|
||||
418 0122 0895 ret
|
||||
419 /* epilogue end (size=1) */
|
||||
420 /* function uartFlushReceiveBuffer size 5 (4) */
|
||||
422 .Lscope9:
|
||||
425 .global uartReceiveBufferIsEmpty
|
||||
427 uartReceiveBufferIsEmpty:
|
||||
168:../avrlib/uart.c **** }
|
||||
169:../avrlib/uart.c ****
|
||||
170:../avrlib/uart.c **** //! return true if uart receive buffer is empty
|
||||
171:../avrlib/uart.c **** u08 uartReceiveBufferIsEmpty(void)
|
||||
172:../avrlib/uart.c **** {
|
||||
429 .LM38:
|
||||
430 /* prologue: frame size=0 */
|
||||
431 /* prologue end (size=0) */
|
||||
173:../avrlib/uart.c **** if(uartRxBuffer.datalength == 0)
|
||||
433 .LM39:
|
||||
434 0124 8091 0000 lds r24,uartRxBuffer+4
|
||||
435 0128 9091 0000 lds r25,(uartRxBuffer+4)+1
|
||||
436 012c 892B or r24,r25
|
||||
437 012e 19F4 brne .L21
|
||||
174:../avrlib/uart.c **** {
|
||||
175:../avrlib/uart.c **** return TRUE;
|
||||
439 .LM40:
|
||||
440 0130 8FEF ldi r24,lo8(255)
|
||||
441 0132 90E0 ldi r25,hi8(255)
|
||||
442 0134 0895 ret
|
||||
443 .L21:
|
||||
176:../avrlib/uart.c **** }
|
||||
177:../avrlib/uart.c **** else
|
||||
178:../avrlib/uart.c **** {
|
||||
179:../avrlib/uart.c **** return FALSE;
|
||||
445 .LM41:
|
||||
446 0136 80E0 ldi r24,lo8(0)
|
||||
447 0138 90E0 ldi r25,hi8(0)
|
||||
180:../avrlib/uart.c **** }
|
||||
181:../avrlib/uart.c **** }
|
||||
449 .LM42:
|
||||
450 013a 0895 ret
|
||||
451 /* epilogue: frame size=0 */
|
||||
452 013c 0895 ret
|
||||
453 /* epilogue end (size=1) */
|
||||
454 /* function uartReceiveBufferIsEmpty size 13 (12) */
|
||||
456 .Lscope10:
|
||||
460 .global uartAddToTxBuffer
|
||||
462 uartAddToTxBuffer:
|
||||
182:../avrlib/uart.c ****
|
||||
183:../avrlib/uart.c **** //! add byte to end of uart Tx buffer
|
||||
184:../avrlib/uart.c **** void uartAddToTxBuffer(u08 data)
|
||||
185:../avrlib/uart.c **** {
|
||||
464 .LM43:
|
||||
465 /* prologue: frame size=0 */
|
||||
466 /* prologue end (size=0) */
|
||||
186:../avrlib/uart.c **** // add data byte to the end of the tx buffer
|
||||
187:../avrlib/uart.c **** bufferAddToEnd(&uartTxBuffer, data);
|
||||
468 .LM44:
|
||||
469 013e 682F mov r22,r24
|
||||
470 0140 80E0 ldi r24,lo8(uartTxBuffer)
|
||||
471 0142 90E0 ldi r25,hi8(uartTxBuffer)
|
||||
472 0144 00D0 rcall bufferAddToEnd
|
||||
473 /* epilogue: frame size=0 */
|
||||
474 0146 0895 ret
|
||||
475 /* epilogue end (size=1) */
|
||||
476 /* function uartAddToTxBuffer size 5 (4) */
|
||||
478 .Lscope11:
|
||||
481 .global uartSendTxBuffer
|
||||
483 uartSendTxBuffer:
|
||||
188:../avrlib/uart.c **** }
|
||||
189:../avrlib/uart.c ****
|
||||
190:../avrlib/uart.c **** //! start transmission of the current uart Tx buffer contents
|
||||
191:../avrlib/uart.c **** void uartSendTxBuffer(void)
|
||||
192:../avrlib/uart.c **** {
|
||||
485 .LM45:
|
||||
486 /* prologue: frame size=0 */
|
||||
487 /* prologue end (size=0) */
|
||||
193:../avrlib/uart.c **** // turn on buffered transmit
|
||||
194:../avrlib/uart.c **** uartBufferedTx = TRUE;
|
||||
489 .LM46:
|
||||
490 0148 8FEF ldi r24,lo8(-1)
|
||||
491 014a 8093 0000 sts uartBufferedTx,r24
|
||||
195:../avrlib/uart.c **** // send the first byte to get things going by interrupts
|
||||
196:../avrlib/uart.c **** uartSendByte(bufferGetFromFront(&uartTxBuffer));
|
||||
493 .LM47:
|
||||
494 014e 80E0 ldi r24,lo8(uartTxBuffer)
|
||||
495 0150 90E0 ldi r25,hi8(uartTxBuffer)
|
||||
496 0152 00D0 rcall bufferGetFromFront
|
||||
497 0154 A4DF rcall uartSendByte
|
||||
498 /* epilogue: frame size=0 */
|
||||
499 0156 0895 ret
|
||||
500 /* epilogue end (size=1) */
|
||||
501 /* function uartSendTxBuffer size 8 (7) */
|
||||
503 .Lscope12:
|
||||
506 .global __vector_13
|
||||
508 __vector_13:
|
||||
197:../avrlib/uart.c **** }
|
||||
198:../avrlib/uart.c **** /*
|
||||
199:../avrlib/uart.c **** //! transmit nBytes from buffer out the uart
|
||||
200:../avrlib/uart.c **** u08 uartSendBuffer(char *buffer, u16 nBytes)
|
||||
201:../avrlib/uart.c **** {
|
||||
202:../avrlib/uart.c **** register u08 first;
|
||||
203:../avrlib/uart.c **** register u16 i;
|
||||
204:../avrlib/uart.c ****
|
||||
205:../avrlib/uart.c **** // check if there's space (and that we have any bytes to send at all)
|
||||
206:../avrlib/uart.c **** if((uartTxBuffer.datalength + nBytes < uartTxBuffer.size) && nBytes)
|
||||
207:../avrlib/uart.c **** {
|
||||
208:../avrlib/uart.c **** // grab first character
|
||||
209:../avrlib/uart.c **** first = *buffer++;
|
||||
210:../avrlib/uart.c **** // copy user buffer to uart transmit buffer
|
||||
211:../avrlib/uart.c **** for(i = 0; i < nBytes-1; i++)
|
||||
212:../avrlib/uart.c **** {
|
||||
213:../avrlib/uart.c **** // put data bytes at end of buffer
|
||||
214:../avrlib/uart.c **** bufferAddToEnd(&uartTxBuffer, *buffer++);
|
||||
215:../avrlib/uart.c **** }
|
||||
216:../avrlib/uart.c ****
|
||||
217:../avrlib/uart.c **** // send the first byte to get things going by interrupts
|
||||
218:../avrlib/uart.c **** uartBufferedTx = TRUE;
|
||||
219:../avrlib/uart.c **** uartSendByte(first);
|
||||
220:../avrlib/uart.c **** // return success
|
||||
221:../avrlib/uart.c **** return TRUE;
|
||||
222:../avrlib/uart.c **** }
|
||||
223:../avrlib/uart.c **** else
|
||||
224:../avrlib/uart.c **** {
|
||||
225:../avrlib/uart.c **** // return failure
|
||||
226:../avrlib/uart.c **** return FALSE;
|
||||
227:../avrlib/uart.c **** }
|
||||
228:../avrlib/uart.c **** }
|
||||
229:../avrlib/uart.c **** */
|
||||
230:../avrlib/uart.c **** //! UART Transmit Complete Interrupt Handler
|
||||
231:../avrlib/uart.c **** UART_INTERRUPT_HANDLER(SIG_UART_TRANS)
|
||||
232:../avrlib/uart.c **** {
|
||||
510 .LM48:
|
||||
511 /* prologue: frame size=0 */
|
||||
512 0158 1F92 push __zero_reg__
|
||||
513 015a 0F92 push __tmp_reg__
|
||||
514 015c 0FB6 in __tmp_reg__,__SREG__
|
||||
515 015e 0F92 push __tmp_reg__
|
||||
516 0160 1124 clr __zero_reg__
|
||||
517 0162 2F93 push r18
|
||||
518 0164 3F93 push r19
|
||||
519 0166 4F93 push r20
|
||||
520 0168 5F93 push r21
|
||||
521 016a 6F93 push r22
|
||||
522 016c 7F93 push r23
|
||||
523 016e 8F93 push r24
|
||||
524 0170 9F93 push r25
|
||||
525 0172 AF93 push r26
|
||||
526 0174 BF93 push r27
|
||||
527 0176 EF93 push r30
|
||||
528 0178 FF93 push r31
|
||||
529 /* prologue end (size=17) */
|
||||
233:../avrlib/uart.c **** // check if buffered tx is enabled
|
||||
234:../avrlib/uart.c **** if(uartBufferedTx)
|
||||
531 .LM49:
|
||||
532 017a 8091 0000 lds r24,uartBufferedTx
|
||||
533 017e 8823 tst r24
|
||||
534 0180 69F0 breq .L26
|
||||
235:../avrlib/uart.c **** {
|
||||
236:../avrlib/uart.c **** // check if there's data left in the buffer
|
||||
237:../avrlib/uart.c **** if(uartTxBuffer.datalength)
|
||||
536 .LM50:
|
||||
537 0182 8091 0000 lds r24,uartTxBuffer+4
|
||||
538 0186 9091 0000 lds r25,(uartTxBuffer+4)+1
|
||||
539 018a 892B or r24,r25
|
||||
540 018c 29F0 breq .L27
|
||||
238:../avrlib/uart.c **** {
|
||||
239:../avrlib/uart.c **** // send byte from top of buffer
|
||||
240:../avrlib/uart.c **** outb(UDR, bufferGetFromFront(&uartTxBuffer));
|
||||
542 .LM51:
|
||||
543 018e 80E0 ldi r24,lo8(uartTxBuffer)
|
||||
544 0190 90E0 ldi r25,hi8(uartTxBuffer)
|
||||
545 0192 00D0 rcall bufferGetFromFront
|
||||
546 0194 8CB9 out 44-0x20,r24
|
||||
547 0196 05C0 rjmp .L25
|
||||
548 .L27:
|
||||
241:../avrlib/uart.c **** }
|
||||
242:../avrlib/uart.c **** else
|
||||
243:../avrlib/uart.c **** {
|
||||
244:../avrlib/uart.c **** // no data left
|
||||
245:../avrlib/uart.c **** uartBufferedTx = FALSE;
|
||||
550 .LM52:
|
||||
551 0198 1092 0000 sts uartBufferedTx,__zero_reg__
|
||||
552 .L26:
|
||||
246:../avrlib/uart.c **** // return to ready state
|
||||
247:../avrlib/uart.c **** uartReadyTx = TRUE;
|
||||
248:../avrlib/uart.c **** }
|
||||
249:../avrlib/uart.c **** }
|
||||
250:../avrlib/uart.c **** else
|
||||
251:../avrlib/uart.c **** {
|
||||
252:../avrlib/uart.c **** // we're using single-byte tx mode
|
||||
253:../avrlib/uart.c **** // indicate transmit complete, back to ready
|
||||
254:../avrlib/uart.c **** uartReadyTx = TRUE;
|
||||
554 .LM53:
|
||||
555 019c 8FEF ldi r24,lo8(-1)
|
||||
556 019e 8093 0000 sts uartReadyTx,r24
|
||||
557 .L25:
|
||||
558 /* epilogue: frame size=0 */
|
||||
559 01a2 FF91 pop r31
|
||||
560 01a4 EF91 pop r30
|
||||
561 01a6 BF91 pop r27
|
||||
562 01a8 AF91 pop r26
|
||||
563 01aa 9F91 pop r25
|
||||
564 01ac 8F91 pop r24
|
||||
565 01ae 7F91 pop r23
|
||||
566 01b0 6F91 pop r22
|
||||
567 01b2 5F91 pop r21
|
||||
568 01b4 4F91 pop r20
|
||||
569 01b6 3F91 pop r19
|
||||
570 01b8 2F91 pop r18
|
||||
571 01ba 0F90 pop __tmp_reg__
|
||||
572 01bc 0FBE out __SREG__,__tmp_reg__
|
||||
573 01be 0F90 pop __tmp_reg__
|
||||
574 01c0 1F90 pop __zero_reg__
|
||||
575 01c2 1895 reti
|
||||
576 /* epilogue end (size=17) */
|
||||
577 /* function __vector_13 size 54 (20) */
|
||||
579 .Lscope13:
|
||||
582 .global __vector_11
|
||||
584 __vector_11:
|
||||
255:../avrlib/uart.c **** }
|
||||
256:../avrlib/uart.c **** }
|
||||
257:../avrlib/uart.c ****
|
||||
258:../avrlib/uart.c **** //! UART Receive Complete Interrupt Handler
|
||||
259:../avrlib/uart.c **** UART_INTERRUPT_HANDLER(SIG_UART_RECV)
|
||||
260:../avrlib/uart.c **** {
|
||||
586 .LM54:
|
||||
587 /* prologue: frame size=0 */
|
||||
588 01c4 1F92 push __zero_reg__
|
||||
589 01c6 0F92 push __tmp_reg__
|
||||
590 01c8 0FB6 in __tmp_reg__,__SREG__
|
||||
591 01ca 0F92 push __tmp_reg__
|
||||
592 01cc 1124 clr __zero_reg__
|
||||
593 01ce 2F93 push r18
|
||||
594 01d0 3F93 push r19
|
||||
595 01d2 4F93 push r20
|
||||
596 01d4 5F93 push r21
|
||||
597 01d6 6F93 push r22
|
||||
598 01d8 7F93 push r23
|
||||
599 01da 8F93 push r24
|
||||
600 01dc 9F93 push r25
|
||||
601 01de AF93 push r26
|
||||
602 01e0 BF93 push r27
|
||||
603 01e2 EF93 push r30
|
||||
604 01e4 FF93 push r31
|
||||
605 /* prologue end (size=17) */
|
||||
261:../avrlib/uart.c **** u08 c;
|
||||
262:../avrlib/uart.c ****
|
||||
263:../avrlib/uart.c **** // get received char
|
||||
264:../avrlib/uart.c **** c = inb(UDR);
|
||||
607 .LM55:
|
||||
608 01e6 6CB1 in r22,44-0x20
|
||||
265:../avrlib/uart.c ****
|
||||
266:../avrlib/uart.c **** // if there's a user function to handle this receive event
|
||||
267:../avrlib/uart.c **** if(UartRxFunc)
|
||||
610 .LM56:
|
||||
611 01e8 8091 0000 lds r24,UartRxFunc
|
||||
612 01ec 9091 0000 lds r25,(UartRxFunc)+1
|
||||
613 01f0 892B or r24,r25
|
||||
614 01f2 39F0 breq .L31
|
||||
268:../avrlib/uart.c **** {
|
||||
269:../avrlib/uart.c **** // call it and pass the received data
|
||||
270:../avrlib/uart.c **** UartRxFunc(c);
|
||||
616 .LM57:
|
||||
617 01f4 E091 0000 lds r30,UartRxFunc
|
||||
618 01f8 F091 0000 lds r31,(UartRxFunc)+1
|
||||
619 01fc 862F mov r24,r22
|
||||
620 01fe 0995 icall
|
||||
621 0200 0EC0 rjmp .L30
|
||||
622 .L31:
|
||||
271:../avrlib/uart.c **** }
|
||||
272:../avrlib/uart.c **** else
|
||||
273:../avrlib/uart.c **** {
|
||||
274:../avrlib/uart.c **** // otherwise do default processing
|
||||
275:../avrlib/uart.c **** // put received char in buffer
|
||||
276:../avrlib/uart.c **** // check if there's space
|
||||
277:../avrlib/uart.c **** if( !bufferAddToEnd(&uartRxBuffer, c) )
|
||||
624 .LM58:
|
||||
625 0202 80E0 ldi r24,lo8(uartRxBuffer)
|
||||
626 0204 90E0 ldi r25,hi8(uartRxBuffer)
|
||||
627 0206 00D0 rcall bufferAddToEnd
|
||||
628 0208 8823 tst r24
|
||||
629 020a 49F4 brne .L30
|
||||
278:../avrlib/uart.c **** {
|
||||
279:../avrlib/uart.c **** // no space in buffer
|
||||
280:../avrlib/uart.c **** // count overflow
|
||||
281:../avrlib/uart.c **** uartRxOverflow++;
|
||||
631 .LM59:
|
||||
632 020c 8091 0000 lds r24,uartRxOverflow
|
||||
633 0210 9091 0000 lds r25,(uartRxOverflow)+1
|
||||
634 0214 0196 adiw r24,1
|
||||
635 0216 9093 0000 sts (uartRxOverflow)+1,r25
|
||||
636 021a 8093 0000 sts uartRxOverflow,r24
|
||||
637 .L30:
|
||||
638 /* epilogue: frame size=0 */
|
||||
639 021e FF91 pop r31
|
||||
640 0220 EF91 pop r30
|
||||
641 0222 BF91 pop r27
|
||||
642 0224 AF91 pop r26
|
||||
643 0226 9F91 pop r25
|
||||
644 0228 8F91 pop r24
|
||||
645 022a 7F91 pop r23
|
||||
646 022c 6F91 pop r22
|
||||
647 022e 5F91 pop r21
|
||||
648 0230 4F91 pop r20
|
||||
649 0232 3F91 pop r19
|
||||
650 0234 2F91 pop r18
|
||||
651 0236 0F90 pop __tmp_reg__
|
||||
652 0238 0FBE out __SREG__,__tmp_reg__
|
||||
653 023a 0F90 pop __tmp_reg__
|
||||
654 023c 1F90 pop __zero_reg__
|
||||
655 023e 1895 reti
|
||||
656 /* epilogue end (size=17) */
|
||||
657 /* function __vector_11 size 62 (28) */
|
||||
662 .Lscope14:
|
||||
664 .comm uartReadyTx,1,1
|
||||
665 .comm uartBufferedTx,1,1
|
||||
666 .comm uartRxBuffer,8,1
|
||||
667 .comm uartTxBuffer,8,1
|
||||
668 .comm uartRxOverflow,2,1
|
||||
669 .lcomm uartRxData,64
|
||||
670 .lcomm uartTxData,64
|
||||
671 .lcomm UartRxFunc,2
|
||||
680 .text
|
||||
682 Letext:
|
||||
683 /* File "../avrlib/uart.c": code 289 = 0x0121 ( 186), prologues 46, epilogues 57 */
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:00000000 uart.c
|
||||
*ABS*:0000003f __SREG__
|
||||
*ABS*:0000003e __SP_H__
|
||||
*ABS*:0000003d __SP_L__
|
||||
*ABS*:00000000 __tmp_reg__
|
||||
*ABS*:00000001 __zero_reg__
|
||||
/var/tmp//cclgUhYv.s:88 .text:00000000 uartSetBaudRate
|
||||
/var/tmp//cclgUhYv.s:141 .text:0000003c uartInitBuffers
|
||||
.bss:00000000 uartRxData
|
||||
*COM*:00000008 uartRxBuffer
|
||||
/var/tmp//cclgUhYv.s:669 .bss:00000040 uartTxData
|
||||
*COM*:00000008 uartTxBuffer
|
||||
/var/tmp//cclgUhYv.s:174 .text:0000005a uartInit
|
||||
/var/tmp//cclgUhYv.s:670 .bss:00000080 UartRxFunc
|
||||
*COM*:00000001 uartReadyTx
|
||||
*COM*:00000001 uartBufferedTx
|
||||
*COM*:00000002 uartRxOverflow
|
||||
/var/tmp//cclgUhYv.s:224 .text:00000088 uartSetRxHandler
|
||||
/var/tmp//cclgUhYv.s:243 .text:00000092 uartGetRxBuffer
|
||||
/var/tmp//cclgUhYv.s:262 .text:00000098 uartGetTxBuffer
|
||||
/var/tmp//cclgUhYv.s:282 .text:0000009e uartSendByte
|
||||
/var/tmp//cclgUhYv.s:311 .text:000000b0 uartReceiveByte
|
||||
/var/tmp//cclgUhYv.s:354 .text:000000e0 uartGetByte
|
||||
/var/tmp//cclgUhYv.s:408 .text:0000011a uartFlushReceiveBuffer
|
||||
/var/tmp//cclgUhYv.s:427 .text:00000124 uartReceiveBufferIsEmpty
|
||||
/var/tmp//cclgUhYv.s:462 .text:0000013e uartAddToTxBuffer
|
||||
/var/tmp//cclgUhYv.s:483 .text:00000148 uartSendTxBuffer
|
||||
/var/tmp//cclgUhYv.s:508 .text:00000158 __vector_13
|
||||
/var/tmp//cclgUhYv.s:584 .text:000001c4 __vector_11
|
||||
/var/tmp//cclgUhYv.s:682 .text:00000240 Letext
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
__do_copy_data
|
||||
__do_clear_bss
|
||||
__udivmodsi4
|
||||
bufferInit
|
||||
bufferGetFromFront
|
||||
bufferAddToEnd
|
Loading…
Reference in New Issue