503 lines
16 KiB
Plaintext
503 lines
16 KiB
Plaintext
|
1 .file "lcd_routines.c"
|
||
|
2 __SREG__ = 0x3f
|
||
|
3 __SP_H__ = 0x3e
|
||
|
4 __SP_L__ = 0x3d
|
||
|
5 __CCP__ = 0x34
|
||
|
6 __tmp_reg__ = 0
|
||
|
7 __zero_reg__ = 1
|
||
|
15 .Ltext0:
|
||
|
17 lcd_enable:
|
||
|
18 .LFB6:
|
||
|
19 .LM1:
|
||
|
20 /* prologue: function */
|
||
|
21 /* frame size = 0 */
|
||
|
22 /* stack size = 0 */
|
||
|
23 .L__stack_usage = 0
|
||
|
24 .LM2:
|
||
|
25 0000 DD9A sbi 59-32,5
|
||
|
26 .LVL0:
|
||
|
27 .LBB22:
|
||
|
28 .LBB23:
|
||
|
29 .LM3:
|
||
|
30 0002 8AE6 ldi r24,lo8(106)
|
||
|
31 0004 8A95 1:dec r24
|
||
|
32 0006 01F4 brne 1b
|
||
|
33 0008 00C0 rjmp .
|
||
|
34 .LBE23:
|
||
|
35 .LBE22:
|
||
|
36 .LM4:
|
||
|
37 000a DD98 cbi 59-32,5
|
||
|
38 /* epilogue start */
|
||
|
39 .LM5:
|
||
|
40 000c 0895 ret
|
||
|
41 .LFE6:
|
||
|
44 lcd_out:
|
||
|
45 .LFB7:
|
||
|
46 .LM6:
|
||
|
47 .LVL1:
|
||
|
48 /* prologue: function */
|
||
|
49 /* frame size = 0 */
|
||
|
50 /* stack size = 0 */
|
||
|
51 .L__stack_usage = 0
|
||
|
52 .LM7:
|
||
|
53 000e 9BB3 in r25,59-32
|
||
|
54 0010 907F andi r25,lo8(-16)
|
||
|
55 0012 9BBB out 59-32,r25
|
||
|
56 .LM8:
|
||
|
57 0014 9BB3 in r25,59-32
|
||
|
58 0016 8295 swap r24
|
||
|
59 .LVL2:
|
||
|
60 0018 8F70 andi r24,lo8(15)
|
||
|
61 001a 892B or r24,r25
|
||
|
62 001c 8BBB out 59-32,r24
|
||
|
63 .LM9:
|
||
|
64 001e 0E94 0000 call lcd_enable
|
||
|
65 /* epilogue start */
|
||
|
66 .LM10:
|
||
|
67 0022 0895 ret
|
||
|
68 .LFE7:
|
||
|
70 .global lcd_data
|
||
|
72 lcd_data:
|
||
|
73 .LFB9:
|
||
|
74 .LM11:
|
||
|
75 .LVL3:
|
||
|
76 0024 1F93 push r17
|
||
|
77 /* prologue: function */
|
||
|
78 /* frame size = 0 */
|
||
|
79 /* stack size = 1 */
|
||
|
80 .L__stack_usage = 1
|
||
|
81 0026 182F mov r17,r24
|
||
|
82 .LM12:
|
||
|
83 0028 DC9A sbi 59-32,4
|
||
|
84 .LM13:
|
||
|
85 002a 0E94 0000 call lcd_out
|
||
|
86 .LVL4:
|
||
|
87 .LM14:
|
||
|
88 002e 812F mov r24,r17
|
||
|
89 0030 8295 swap r24
|
||
|
90 0032 807F andi r24,lo8(-16)
|
||
|
91 0034 0E94 0000 call lcd_out
|
||
|
92 .LVL5:
|
||
|
93 .LBB24:
|
||
|
94 .LBB25:
|
||
|
95 .LM15:
|
||
|
96 0038 85EF ldi r24,lo8(-11)
|
||
|
97 003a 8A95 1:dec r24
|
||
|
98 003c 01F4 brne 1b
|
||
|
99 003e 0000 nop
|
||
|
100 /* epilogue start */
|
||
|
101 .LBE25:
|
||
|
102 .LBE24:
|
||
|
103 .LM16:
|
||
|
104 0040 1F91 pop r17
|
||
|
105 .LVL6:
|
||
|
106 0042 0895 ret
|
||
|
107 .LFE9:
|
||
|
109 .global lcd_command
|
||
|
111 lcd_command:
|
||
|
112 .LFB10:
|
||
|
113 .LM17:
|
||
|
114 .LVL7:
|
||
|
115 0044 1F93 push r17
|
||
|
116 /* prologue: function */
|
||
|
117 /* frame size = 0 */
|
||
|
118 /* stack size = 1 */
|
||
|
119 .L__stack_usage = 1
|
||
|
120 0046 182F mov r17,r24
|
||
|
121 .LM18:
|
||
|
122 0048 DC98 cbi 59-32,4
|
||
|
123 .LM19:
|
||
|
124 004a 0E94 0000 call lcd_out
|
||
|
125 .LVL8:
|
||
|
126 .LM20:
|
||
|
127 004e 812F mov r24,r17
|
||
|
128 0050 8295 swap r24
|
||
|
129 0052 807F andi r24,lo8(-16)
|
||
|
130 0054 0E94 0000 call lcd_out
|
||
|
131 .LVL9:
|
||
|
132 .LBB26:
|
||
|
133 .LBB27:
|
||
|
134 .LM21:
|
||
|
135 0058 80EE ldi r24,lo8(-32)
|
||
|
136 005a 8A95 1:dec r24
|
||
|
137 005c 01F4 brne 1b
|
||
|
138 /* epilogue start */
|
||
|
139 .LBE27:
|
||
|
140 .LBE26:
|
||
|
141 .LM22:
|
||
|
142 005e 1F91 pop r17
|
||
|
143 .LVL10:
|
||
|
144 0060 0895 ret
|
||
|
145 .LFE10:
|
||
|
147 .global lcd_clear
|
||
|
149 lcd_clear:
|
||
|
150 .LFB11:
|
||
|
151 .LM23:
|
||
|
152 /* prologue: function */
|
||
|
153 /* frame size = 0 */
|
||
|
154 /* stack size = 0 */
|
||
|
155 .L__stack_usage = 0
|
||
|
156 .LM24:
|
||
|
157 0062 81E0 ldi r24,lo8(1)
|
||
|
158 0064 0E94 0000 call lcd_command
|
||
|
159 .LVL11:
|
||
|
160 .LBB28:
|
||
|
161 .LBB29:
|
||
|
162 .LM25:
|
||
|
163 0068 8FE3 ldi r24,lo8(7999)
|
||
|
164 006a 9FE1 ldi r25,hi8(7999)
|
||
|
165 006c 0197 1:sbiw r24,1
|
||
|
166 006e 01F4 brne 1b
|
||
|
167 0070 00C0 rjmp .
|
||
|
168 0072 0000 nop
|
||
|
169 /* epilogue start */
|
||
|
170 .LBE29:
|
||
|
171 .LBE28:
|
||
|
172 .LM26:
|
||
|
173 0074 0895 ret
|
||
|
174 .LFE11:
|
||
|
176 .global lcd_init
|
||
|
178 lcd_init:
|
||
|
179 .LFB8:
|
||
|
180 .LM27:
|
||
|
181 /* prologue: function */
|
||
|
182 /* frame size = 0 */
|
||
|
183 /* stack size = 0 */
|
||
|
184 .L__stack_usage = 0
|
||
|
185 .LVL12:
|
||
|
186 .LM28:
|
||
|
187 0076 8AB3 in r24,58-32
|
||
|
188 0078 8F63 ori r24,lo8(63)
|
||
|
189 007a 8ABB out 58-32,r24
|
||
|
190 .LM29:
|
||
|
191 007c 8BB3 in r24,59-32
|
||
|
192 007e 807C andi r24,lo8(-64)
|
||
|
193 0080 8BBB out 59-32,r24
|
||
|
194 .LVL13:
|
||
|
195 .LBB30:
|
||
|
196 .LBB31:
|
||
|
197 .LM30:
|
||
|
198 0082 8FE5 ldi r24,lo8(-5537)
|
||
|
199 0084 9AEE ldi r25,hi8(-5537)
|
||
|
200 0086 0197 1:sbiw r24,1
|
||
|
201 0088 01F4 brne 1b
|
||
|
202 008a 00C0 rjmp .
|
||
|
203 008c 0000 nop
|
||
|
204 .LBE31:
|
||
|
205 .LBE30:
|
||
|
206 .LM31:
|
||
|
207 008e 80E3 ldi r24,lo8(48)
|
||
|
208 0090 0E94 0000 call lcd_out
|
||
|
209 .LVL14:
|
||
|
210 .LBB32:
|
||
|
211 .LBB33:
|
||
|
212 .LM32:
|
||
|
213 0094 8FE1 ldi r24,lo8(19999)
|
||
|
214 0096 9EE4 ldi r25,hi8(19999)
|
||
|
215 0098 0197 1:sbiw r24,1
|
||
|
216 009a 01F4 brne 1b
|
||
|
217 009c 00C0 rjmp .
|
||
|
218 009e 0000 nop
|
||
|
219 .LBE33:
|
||
|
220 .LBE32:
|
||
|
221 .LM33:
|
||
|
222 00a0 0E94 0000 call lcd_enable
|
||
|
223 .LVL15:
|
||
|
224 .LBB34:
|
||
|
225 .LBB35:
|
||
|
226 .LM34:
|
||
|
227 00a4 8FE9 ldi r24,lo8(3999)
|
||
|
228 00a6 9FE0 ldi r25,hi8(3999)
|
||
|
229 00a8 0197 1:sbiw r24,1
|
||
|
230 00aa 01F4 brne 1b
|
||
|
231 00ac 00C0 rjmp .
|
||
|
232 00ae 0000 nop
|
||
|
233 .LBE35:
|
||
|
234 .LBE34:
|
||
|
235 .LM35:
|
||
|
236 00b0 0E94 0000 call lcd_enable
|
||
|
237 .LVL16:
|
||
|
238 .LBB36:
|
||
|
239 .LBB37:
|
||
|
240 .LM36:
|
||
|
241 00b4 8FE9 ldi r24,lo8(3999)
|
||
|
242 00b6 9FE0 ldi r25,hi8(3999)
|
||
|
243 00b8 0197 1:sbiw r24,1
|
||
|
244 00ba 01F4 brne 1b
|
||
|
245 00bc 00C0 rjmp .
|
||
|
246 00be 0000 nop
|
||
|
247 .LBE37:
|
||
|
248 .LBE36:
|
||
|
249 .LM37:
|
||
|
250 00c0 80E2 ldi r24,lo8(32)
|
||
|
251 00c2 0E94 0000 call lcd_out
|
||
|
252 .LVL17:
|
||
|
253 .LBB38:
|
||
|
254 .LBB39:
|
||
|
255 .LM38:
|
||
|
256 00c6 8FE1 ldi r24,lo8(19999)
|
||
|
257 00c8 9EE4 ldi r25,hi8(19999)
|
||
|
258 00ca 0197 1:sbiw r24,1
|
||
|
259 00cc 01F4 brne 1b
|
||
|
260 00ce 00C0 rjmp .
|
||
|
261 00d0 0000 nop
|
||
|
262 .LBE39:
|
||
|
263 .LBE38:
|
||
|
264 .LM39:
|
||
|
265 00d2 88E2 ldi r24,lo8(40)
|
||
|
266 00d4 0E94 0000 call lcd_command
|
||
|
267 .LM40:
|
||
|
268 00d8 8CE0 ldi r24,lo8(12)
|
||
|
269 00da 0E94 0000 call lcd_command
|
||
|
270 .LM41:
|
||
|
271 00de 86E0 ldi r24,lo8(6)
|
||
|
272 00e0 0E94 0000 call lcd_command
|
||
|
273 .LM42:
|
||
|
274 00e4 0E94 0000 call lcd_clear
|
||
|
275 /* epilogue start */
|
||
|
276 .LM43:
|
||
|
277 00e8 0895 ret
|
||
|
278 .LFE8:
|
||
|
280 .global lcd_home
|
||
|
282 lcd_home:
|
||
|
283 .LFB12:
|
||
|
284 .LM44:
|
||
|
285 /* prologue: function */
|
||
|
286 /* frame size = 0 */
|
||
|
287 /* stack size = 0 */
|
||
|
288 .L__stack_usage = 0
|
||
|
289 .LM45:
|
||
|
290 00ea 82E0 ldi r24,lo8(2)
|
||
|
291 00ec 0E94 0000 call lcd_command
|
||
|
292 .LVL18:
|
||
|
293 .LBB40:
|
||
|
294 .LBB41:
|
||
|
295 .LM46:
|
||
|
296 00f0 8FE3 ldi r24,lo8(7999)
|
||
|
297 00f2 9FE1 ldi r25,hi8(7999)
|
||
|
298 00f4 0197 1:sbiw r24,1
|
||
|
299 00f6 01F4 brne 1b
|
||
|
300 00f8 00C0 rjmp .
|
||
|
301 00fa 0000 nop
|
||
|
302 /* epilogue start */
|
||
|
303 .LBE41:
|
||
|
304 .LBE40:
|
||
|
305 .LM47:
|
||
|
306 00fc 0895 ret
|
||
|
307 .LFE12:
|
||
|
309 .global lcd_setcursor
|
||
|
311 lcd_setcursor:
|
||
|
312 .LFB13:
|
||
|
313 .LM48:
|
||
|
314 .LVL19:
|
||
|
315 /* prologue: function */
|
||
|
316 /* frame size = 0 */
|
||
|
317 /* stack size = 0 */
|
||
|
318 .L__stack_usage = 0
|
||
|
319 .LM49:
|
||
|
320 00fe 6230 cpi r22,lo8(2)
|
||
|
321 0100 01F0 breq .L11
|
||
|
322 0102 6330 cpi r22,lo8(3)
|
||
|
323 0104 00F4 brsh .L14
|
||
|
324 0106 6130 cpi r22,lo8(1)
|
||
|
325 0108 01F4 brne .L8
|
||
|
326 010a 00C0 rjmp .L16
|
||
|
327 .L14:
|
||
|
328 010c 6330 cpi r22,lo8(3)
|
||
|
329 010e 01F0 breq .L12
|
||
|
330 0110 6430 cpi r22,lo8(4)
|
||
|
331 0112 01F4 brne .L8
|
||
|
332 0114 00C0 rjmp .L17
|
||
|
333 .L16:
|
||
|
334 .LM50:
|
||
|
335 0116 8058 subi r24,lo8(-(-128))
|
||
|
336 .LVL20:
|
||
|
337 .LM51:
|
||
|
338 0118 00C0 rjmp .L15
|
||
|
339 .LVL21:
|
||
|
340 .L11:
|
||
|
341 .LM52:
|
||
|
342 011a 8054 subi r24,lo8(-(-64))
|
||
|
343 .LVL22:
|
||
|
344 .LM53:
|
||
|
345 011c 00C0 rjmp .L15
|
||
|
346 .LVL23:
|
||
|
347 .L12:
|
||
|
348 .LM54:
|
||
|
349 011e 8057 subi r24,lo8(-(-112))
|
||
|
350 .LVL24:
|
||
|
351 .LM55:
|
||
|
352 0120 00C0 rjmp .L15
|
||
|
353 .LVL25:
|
||
|
354 .L17:
|
||
|
355 .LM56:
|
||
|
356 0122 8053 subi r24,lo8(-(-48))
|
||
|
357 .LVL26:
|
||
|
358 .L15:
|
||
|
359 .LM57:
|
||
|
360 0124 0E94 0000 call lcd_command
|
||
|
361 .LVL27:
|
||
|
362 .L8:
|
||
|
363 0128 0895 ret
|
||
|
364 .LFE13:
|
||
|
366 .global lcd_string
|
||
|
368 lcd_string:
|
||
|
369 .LFB14:
|
||
|
370 .LM58:
|
||
|
371 .LVL28:
|
||
|
372 012a EF92 push r14
|
||
|
373 012c FF92 push r15
|
||
|
374 012e CF93 push r28
|
||
|
375 0130 DF93 push r29
|
||
|
376 /* prologue: function */
|
||
|
377 /* frame size = 0 */
|
||
|
378 /* stack size = 4 */
|
||
|
379 .L__stack_usage = 4
|
||
|
380 .LM59:
|
||
|
381 0132 E82E mov r14,r24
|
||
|
382 0134 E701 movw r28,r14
|
||
|
383 0136 7E01 movw r14,r28
|
||
|
384 0138 F92E mov r15,r25
|
||
|
385 013a E701 movw r28,r14
|
||
|
386 .LM60:
|
||
|
387 013c 00C0 rjmp .L19
|
||
|
388 .LVL29:
|
||
|
389 .L20:
|
||
|
390 .LM61:
|
||
|
391 013e 0E94 0000 call lcd_data
|
||
|
392 .L19:
|
||
|
393 .LM62:
|
||
|
394 0142 8991 ld r24,Y+
|
||
|
395 0144 8823 tst r24
|
||
|
396 0146 01F4 brne .L20
|
||
|
397 /* epilogue start */
|
||
|
398 .LM63:
|
||
|
399 0148 DF91 pop r29
|
||
|
400 014a CF91 pop r28
|
||
|
401 014c FF90 pop r15
|
||
|
402 014e EF90 pop r14
|
||
|
403 0150 0895 ret
|
||
|
404 .LFE14:
|
||
|
406 .global lcd_string_p
|
||
|
408 lcd_string_p:
|
||
|
409 .LFB15:
|
||
|
410 .LM64:
|
||
|
411 .LVL30:
|
||
|
412 0152 CF93 push r28
|
||
|
413 0154 DF93 push r29
|
||
|
414 /* prologue: function */
|
||
|
415 /* frame size = 0 */
|
||
|
416 /* stack size = 2 */
|
||
|
417 .L__stack_usage = 2
|
||
|
418 0156 EC01 movw r28,r24
|
||
|
419 .LM65:
|
||
|
420 0158 00C0 rjmp .L22
|
||
|
421 .LVL31:
|
||
|
422 .L23:
|
||
|
423 .LM66:
|
||
|
424 015a 0E94 0000 call lcd_data
|
||
|
425 .LVL32:
|
||
|
426 .L22:
|
||
|
427 .LM67:
|
||
|
428 015e FE01 movw r30,r28
|
||
|
429 .LVL33:
|
||
|
430 .LBB42:
|
||
|
431 .LM68:
|
||
|
432 0160 2196 adiw r28,1
|
||
|
433 .LVL34:
|
||
|
434 /* #APP */
|
||
|
435 ; 167 "lcd_routines.c" 1
|
||
|
436 0162 8491 lpm r24, Z
|
||
|
437
|
||
|
438 ; 0 "" 2
|
||
|
439 .LVL35:
|
||
|
440 /* #NOAPP */
|
||
|
441 .LBE42:
|
||
|
442 0164 8823 tst r24
|
||
|
443 0166 01F4 brne .L23
|
||
|
444 /* epilogue start */
|
||
|
445 .LM69:
|
||
|
446 0168 DF91 pop r29
|
||
|
447 016a CF91 pop r28
|
||
|
448 .LVL36:
|
||
|
449 016c 0895 ret
|
||
|
450 .LFE15:
|
||
|
452 .global lcd_generatechar
|
||
|
454 lcd_generatechar:
|
||
|
455 .LFB16:
|
||
|
456 .LM70:
|
||
|
457 .LVL37:
|
||
|
458 016e EF92 push r14
|
||
|
459 0170 FF92 push r15
|
||
|
460 0172 1F93 push r17
|
||
|
461 0174 DF93 push r29
|
||
|
462 0176 CF93 push r28
|
||
|
463 0178 00D0 rcall .
|
||
|
464 017a CDB7 in r28,__SP_L__
|
||
|
465 017c DEB7 in r29,__SP_H__
|
||
|
466 /* prologue: function */
|
||
|
467 /* frame size = 2 */
|
||
|
468 /* stack size = 7 */
|
||
|
469 .L__stack_usage = 7
|
||
|
470 .LM71:
|
||
|
471 017e 880F lsl r24
|
||
|
472 0180 880F lsl r24
|
||
|
473 0182 880F lsl r24
|
||
|
474 .LVL38:
|
||
|
475 0184 8064 ori r24,lo8(64)
|
||
|
476 0186 6983 std Y+1,r22
|
||
|
477 0188 7A83 std Y+2,r23
|
||
|
478 018a 0E94 0000 call lcd_command
|
||
|
479 .LVL39:
|
||
|
480 018e 6981 ldd r22,Y+1
|
||
|
481 0190 7A81 ldd r23,Y+2
|
||
|
482 0192 462F mov r20,r22
|
||
|
483 0194 572F mov r21,r23
|
||
|
484 0196 7A01 movw r14,r20
|
||
|
485 0198 18E0 ldi r17,lo8(8)
|
||
|
486 .LVL40:
|
||
|
487 .L25:
|
||
|
488 .LBB43:
|
||
|
489 .LM72:
|
||
|
490 019a F701 movw r30,r14
|
||
|
491 019c 8191 ld r24,Z+
|
||
|
492 019e 7F01 movw r14,r30
|
||
|
493 01a0 0E94 0000 call lcd_data
|
||
|
494 01a4 1150 subi r17,lo8(-(-1))
|
||
|
495 .LM73:
|
||
|
496 01a6 01F4 brne .L25
|
||
|
497 /* epilogue start */
|
||
|
498 .LBE43:
|
||
|
499 .LM74:
|
||
|
500 01a8 0F90 pop __tmp_reg__
|
||
|
501 01aa 0F90 pop __tmp_reg__
|
||
|
502 01ac CF91 pop r28
|
||
|
503 01ae DF91 pop r29
|
||
|
504 01b0 1F91 pop r17
|
||
|
505 01b2 FF90 pop r15
|
||
|
506 01b4 EF90 pop r14
|
||
|
507 01b6 0895 ret
|
||
|
508 .LFE16:
|
||
|
614 .Letext0:
|
||
|
DEFINED SYMBOLS
|
||
|
*ABS*:0000000000000000 lcd_routines.c
|
||
|
/tmp/cc7NhYw7.s:2 *ABS*:000000000000003f __SREG__
|
||
|
/tmp/cc7NhYw7.s:3 *ABS*:000000000000003e __SP_H__
|
||
|
/tmp/cc7NhYw7.s:4 *ABS*:000000000000003d __SP_L__
|
||
|
/tmp/cc7NhYw7.s:5 *ABS*:0000000000000034 __CCP__
|
||
|
/tmp/cc7NhYw7.s:6 *ABS*:0000000000000000 __tmp_reg__
|
||
|
/tmp/cc7NhYw7.s:7 *ABS*:0000000000000001 __zero_reg__
|
||
|
/tmp/cc7NhYw7.s:17 .text:0000000000000000 lcd_enable
|
||
|
/tmp/cc7NhYw7.s:44 .text:000000000000000e lcd_out
|
||
|
/tmp/cc7NhYw7.s:72 .text:0000000000000024 lcd_data
|
||
|
/tmp/cc7NhYw7.s:111 .text:0000000000000044 lcd_command
|
||
|
/tmp/cc7NhYw7.s:149 .text:0000000000000062 lcd_clear
|
||
|
/tmp/cc7NhYw7.s:178 .text:0000000000000076 lcd_init
|
||
|
/tmp/cc7NhYw7.s:282 .text:00000000000000ea lcd_home
|
||
|
/tmp/cc7NhYw7.s:311 .text:00000000000000fe lcd_setcursor
|
||
|
/tmp/cc7NhYw7.s:368 .text:000000000000012a lcd_string
|
||
|
/tmp/cc7NhYw7.s:408 .text:0000000000000152 lcd_string_p
|
||
|
/tmp/cc7NhYw7.s:454 .text:000000000000016e lcd_generatechar
|
||
|
|
||
|
NO UNDEFINED SYMBOLS
|