-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDay6_GPS_Tracker_final.lst
1804 lines (1803 loc) · 61.3 KB
/
Day6_GPS_Tracker_final.lst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1 .file "Day6_GPS_Tracker_final.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:
16 .global serial_init
18 serial_init:
19 .LFB6:
20 .LM1:
21 .LVL0:
22 /* prologue: function */
23 /* frame size = 0 */
24 .LM2:
25 0000 9C01 movw r18,r24
26 0002 40E0 ldi r20,lo8(0)
27 0004 50E0 ldi r21,hi8(0)
28 .LVL1:
29 0006 CA01 movw r24,r20
30 0008 B901 movw r22,r18
31 000a 6058 subi r22,lo8(-(2000000))
32 000c 7B47 sbci r23,hi8(-(2000000))
33 000e 814E sbci r24,hlo8(-(2000000))
34 0010 9F4F sbci r25,hhi8(-(2000000))
35 0012 F3E0 ldi r31,3
36 0014 660F 1: lsl r22
37 0016 771F rol r23
38 0018 881F rol r24
39 001a 991F rol r25
40 001c FA95 dec r31
41 001e 01F4 brne 1b
42 0020 E4E0 ldi r30,4
43 0022 220F 1: lsl r18
44 0024 331F rol r19
45 0026 441F rol r20
46 0028 551F rol r21
47 002a EA95 dec r30
48 002c 01F4 brne 1b
49 .LVL2:
50 002e 0E94 0000 call __udivmodsi4
51 .LVL3:
52 0032 2150 subi r18,lo8(-(-1))
53 0034 3040 sbci r19,hi8(-(-1))
54 .LVL4:
55 .LM3:
56 0036 8FEF ldi r24,lo8(-1)
57 0038 8093 0000 sts UQEnd,r24
58 003c 8091 0000 lds r24,UQEnd
59 0040 8093 0000 sts UQFront,r24
60 .LM4:
61 0044 30BD out 64-32,r19
62 .LVL5:
63 .LM5:
64 0046 29B9 out 41-32,r18
65 .LM6:
66 0048 86E8 ldi r24,lo8(-122)
67 004a 80BD out 64-32,r24
68 .LM7:
69 004c 88E9 ldi r24,lo8(-104)
70 004e 8AB9 out 42-32,r24
71 .LM8:
72 /* #APP */
73 ; 42 "serial.h" 1
74 0050 7894 sei
75 ; 0 "" 2
76 /* epilogue start */
77 .LM9:
78 /* #NOAPP */
79 0052 0895 ret
80 .LFE6:
82 .global serial_finit
84 serial_finit:
85 .LFB7:
86 .LM10:
87 .LVL6:
88 0054 EF92 push r14
89 0056 FF92 push r15
90 0058 0F93 push r16
91 005a 1F93 push r17
92 /* prologue: function */
93 /* frame size = 0 */
94 005c 262F mov r18,r22
95 .LM11:
96 005e 7C01 movw r14,r24
97 0060 00E0 ldi r16,lo8(0)
98 0062 10E0 ldi r17,hi8(0)
99 0064 30E0 ldi r19,lo8(0)
100 .LVL7:
101 0066 40E0 ldi r20,lo8(0)
102 0068 50E0 ldi r21,hi8(0)
103 .LVL8:
104 006a CA01 movw r24,r20
105 006c B901 movw r22,r18
106 .LVL9:
107 006e 28E4 ldi r18,lo8(125000)
108 0070 38EE ldi r19,hi8(125000)
109 0072 41E0 ldi r20,hlo8(125000)
110 0074 50E0 ldi r21,hhi8(125000)
111 .LVL10:
112 0076 0E94 0000 call __mulsi3
113 007a 6E0D add r22,r14
114 007c 7F1D adc r23,r15
115 007e 801F adc r24,r16
116 0080 911F adc r25,r17
117 0082 B3E0 ldi r27,3
118 0084 660F 1: lsl r22
119 0086 771F rol r23
120 0088 881F rol r24
121 008a 991F rol r25
122 008c BA95 dec r27
123 008e 01F4 brne 1b
124 0090 A4E0 ldi r26,4
125 0092 EE0C 1: lsl r14
126 0094 FF1C rol r15
127 0096 001F rol r16
128 0098 111F rol r17
129 009a AA95 dec r26
130 009c 01F4 brne 1b
131 009e A801 movw r20,r16
132 00a0 9701 movw r18,r14
133 00a2 0E94 0000 call __divmodsi4
134 00a6 2150 subi r18,lo8(-(-1))
135 00a8 3040 sbci r19,hi8(-(-1))
136 .LVL11:
137 .LM12:
138 00aa 8FEF ldi r24,lo8(-1)
139 .LVL12:
140 00ac 8093 0000 sts UQEnd,r24
141 00b0 8091 0000 lds r24,UQEnd
142 00b4 8093 0000 sts UQFront,r24
143 .LM13:
144 00b8 30BD out 64-32,r19
145 .LVL13:
146 .LM14:
147 00ba 29B9 out 41-32,r18
148 .LM15:
149 00bc 86E8 ldi r24,lo8(-122)
150 00be 80BD out 64-32,r24
151 .LM16:
152 00c0 88E9 ldi r24,lo8(-104)
153 00c2 8AB9 out 42-32,r24
154 .LM17:
155 /* #APP */
156 ; 57 "serial.h" 1
157 00c4 7894 sei
158 ; 0 "" 2
159 /* epilogue start */
160 .LM18:
161 /* #NOAPP */
162 00c6 1F91 pop r17
163 00c8 0F91 pop r16
164 00ca FF90 pop r15
165 00cc EF90 pop r14
166 00ce 0895 ret
167 .LFE7:
169 .global serial_read
171 serial_read:
172 .LFB8:
173 .LM19:
174 /* prologue: function */
175 /* frame size = 0 */
176 .LM20:
177 00d0 8091 0000 lds r24,UQFront
178 00d4 8F3F cpi r24,lo8(-1)
179 00d6 01F4 brne .L6
180 00d8 E0E0 ldi r30,lo8(0)
181 .LVL14:
182 00da 00C0 rjmp .L7
183 .LVL15:
184 .L6:
185 .LM21:
186 00dc E091 0000 lds r30,UQFront
187 00e0 FF27 clr r31
188 00e2 E7FD sbrc r30,7
189 00e4 F095 com r31
190 00e6 E050 subi r30,lo8(-(URBuff))
191 00e8 F040 sbci r31,hi8(-(URBuff))
192 00ea E081 ld r30,Z
193 .LVL16:
194 .LM22:
195 00ec 9091 0000 lds r25,UQFront
196 00f0 8091 0000 lds r24,UQEnd
197 00f4 9817 cp r25,r24
198 00f6 01F4 brne .L8
199 .LM23:
200 00f8 8FEF ldi r24,lo8(-1)
201 00fa 8093 0000 sts UQEnd,r24
202 00fe 8091 0000 lds r24,UQEnd
203 0102 8093 0000 sts UQFront,r24
204 0106 00C0 rjmp .L7
205 .L8:
206 .LM24:
207 0108 8091 0000 lds r24,UQFront
208 010c 8F5F subi r24,lo8(-(1))
209 010e 8093 0000 sts UQFront,r24
210 .LM25:
211 0112 8091 0000 lds r24,UQFront
212 .L7:
213 .LM26:
214 0116 8E2F mov r24,r30
215 /* epilogue start */
216 0118 0895 ret
217 .LFE8:
219 .global serial_char
221 serial_char:
222 .LFB9:
223 .LM27:
224 /* prologue: function */
225 /* frame size = 0 */
226 .LVL17:
227 .L11:
228 .LM28:
229 011a 5D9B sbis 43-32,5
230 011c 00C0 rjmp .L11
231 .LM29:
232 011e 8CB9 out 44-32,r24
233 /* epilogue start */
234 .LM30:
235 0120 0895 ret
236 .LFE9:
238 .global serial_string
240 serial_string:
241 .LFB12:
242 .LM31:
243 .LVL18:
244 /* prologue: function */
245 /* frame size = 0 */
246 0122 FC01 movw r30,r24
247 0124 00C0 rjmp .L15
248 .LVL19:
249 .L18:
250 .LBB66:
251 .LBB67:
252 .LM32:
253 0126 5D9B sbis 43-32,5
254 0128 00C0 rjmp .L18
255 .LM33:
256 012a 8CB9 out 44-32,r24
257 .LBE67:
258 .LBE66:
259 .LM34:
260 012c 3196 adiw r30,1
261 .LVL20:
262 .L15:
263 .LM35:
264 012e 8081 ld r24,Z
265 0130 8823 tst r24
266 0132 01F4 brne .L18
267 /* epilogue start */
268 .LM36:
269 0134 0895 ret
270 .LFE12:
272 .global serial_string_P
274 serial_string_P:
275 .LFB13:
276 .LM37:
277 .LVL21:
278 /* prologue: function */
279 /* frame size = 0 */
280 0136 00C0 rjmp .L21
281 .LVL22:
282 .L24:
283 .LBB68:
284 .LBB69:
285 .LM38:
286 0138 5D9B sbis 43-32,5
287 013a 00C0 rjmp .L24
288 .LM39:
289 013c 2CB9 out 44-32,r18
290 .L21:
291 013e FC01 movw r30,r24
292 .LBE69:
293 .LBE68:
294 .LBB70:
295 .LM40:
296 0140 0196 adiw r24,1
297 /* #APP */
298 ; 133 "serial.h" 1
299 0142 2491 lpm r18, Z
300
301 ; 0 "" 2
302 /* #NOAPP */
303 .LBE70:
304 0144 2223 tst r18
305 0146 01F4 brne .L24
306 /* epilogue start */
307 .LM41:
308 0148 0895 ret
309 .LFE13:
311 .global s_readbuffer
313 s_readbuffer:
314 .LFB14:
315 .LM42:
316 .LVL23:
317 014a EF92 push r14
318 014c FF92 push r15
319 014e 0F93 push r16
320 0150 1F93 push r17
321 0152 CF93 push r28
322 0154 DF93 push r29
323 /* prologue: function */
324 /* frame size = 0 */
325 0156 7C01 movw r14,r24
326 0158 8B01 movw r16,r22
327 .LM43:
328 015a C0E0 ldi r28,lo8(0)
329 015c D0E0 ldi r29,hi8(0)
330 .LVL24:
331 015e 00C0 rjmp .L27
332 .LVL25:
333 .L28:
334 .LM44:
335 0160 0E94 0000 call serial_read
336 0164 F701 movw r30,r14
337 0166 EC0F add r30,r28
338 0168 FD1F adc r31,r29
339 016a 8083 st Z,r24
340 .LM45:
341 016c 2196 adiw r28,1
342 .LVL26:
343 .L27:
344 016e C017 cp r28,r16
345 0170 D107 cpc r29,r17
346 0172 00F0 brlo .L28
347 /* epilogue start */
348 .LM46:
349 0174 DF91 pop r29
350 0176 CF91 pop r28
351 .LVL27:
352 0178 1F91 pop r17
353 017a 0F91 pop r16
354 .LVL28:
355 017c FF90 pop r15
356 017e EF90 pop r14
357 .LVL29:
358 0180 0895 ret
359 .LFE14:
361 .global serial_available
363 serial_available:
364 .LFB15:
365 .LM47:
366 /* prologue: function */
367 /* frame size = 0 */
368 .LM48:
369 0182 8091 0000 lds r24,UQFront
370 0186 8F3F cpi r24,lo8(-1)
371 0188 01F4 brne .L31
372 018a 90E0 ldi r25,lo8(0)
373 018c 00C0 rjmp .L32
374 .L31:
375 .LM49:
376 018e 9091 0000 lds r25,UQFront
377 0192 8091 0000 lds r24,UQEnd
378 0196 9817 cp r25,r24
379 0198 04F4 brge .L33
380 .LM50:
381 019a 9091 0000 lds r25,UQEnd
382 019e 8091 0000 lds r24,UQFront
383 01a2 9F5F subi r25,lo8(-(1))
384 01a4 00C0 rjmp .L36
385 .L33:
386 .LM51:
387 01a6 9091 0000 lds r25,UQFront
388 01aa 8091 0000 lds r24,UQEnd
389 01ae 8917 cp r24,r25
390 01b0 04F0 brlt .L34
391 01b2 91E0 ldi r25,lo8(1)
392 01b4 00C0 rjmp .L32
393 .L34:
394 .LM52:
395 01b6 9091 0000 lds r25,UQEnd
396 01ba 8091 0000 lds r24,UQFront
397 01be 935D subi r25,lo8(-(45))
398 .L36:
399 01c0 981B sub r25,r24
400 .L32:
401 .LM53:
402 01c2 892F mov r24,r25
403 /* epilogue start */
404 01c4 0895 ret
405 .LFE15:
407 .global s_clearbuffer
409 s_clearbuffer:
410 .LFB16:
411 .LM54:
412 /* prologue: function */
413 /* frame size = 0 */
414 01c6 00C0 rjmp .L38
415 .L39:
416 .LM55:
417 01c8 0E94 0000 call serial_read
418 .L38:
419 .LM56:
420 01cc 0E94 0000 call serial_available
421 01d0 8823 tst r24
422 01d2 01F4 brne .L39
423 /* epilogue start */
424 .LM57:
425 01d4 0895 ret
426 .LFE16:
428 .global serial_nreadw
430 serial_nreadw:
431 .LFB17:
432 .LM58:
433 .LVL30:
434 01d6 1F93 push r17
435 01d8 CF93 push r28
436 01da DF93 push r29
437 /* prologue: function */
438 /* frame size = 0 */
439 01dc EC01 movw r28,r24
440 01de 162F mov r17,r22
441 .LVL31:
442 .L42:
443 .LM59:
444 01e0 0E94 0000 call serial_available
445 01e4 8117 cp r24,r17
446 01e6 00F0 brlo .L42
447 .LM60:
448 01e8 CE01 movw r24,r28
449 01ea 612F mov r22,r17
450 01ec 70E0 ldi r23,lo8(0)
451 01ee 0E94 0000 call s_readbuffer
452 .LM61:
453 01f2 81E0 ldi r24,lo8(1)
454 /* epilogue start */
455 01f4 DF91 pop r29
456 01f6 CF91 pop r28
457 .LVL32:
458 01f8 1F91 pop r17
459 .LVL33:
460 01fa 0895 ret
461 .LFE17:
463 .global serial_nread
465 serial_nread:
466 .LFB18:
467 .LM62:
468 .LVL34:
469 01fc 1F93 push r17
470 01fe CF93 push r28
471 0200 DF93 push r29
472 /* prologue: function */
473 /* frame size = 0 */
474 0202 EC01 movw r28,r24
475 0204 162F mov r17,r22
476 .LM63:
477 0206 0E94 0000 call serial_available
478 .LVL35:
479 020a 8117 cp r24,r17
480 020c 00F0 brlo .L46
481 .LM64:
482 020e CE01 movw r24,r28
483 0210 612F mov r22,r17
484 0212 70E0 ldi r23,lo8(0)
485 0214 0E94 0000 call s_readbuffer
486 0218 81E0 ldi r24,lo8(1)
487 021a 00C0 rjmp .L47
488 .L46:
489 .LM65:
490 021c 1882 st Y,__zero_reg__
491 021e 80E0 ldi r24,lo8(0)
492 .L47:
493 /* epilogue start */
494 .LM66:
495 0220 DF91 pop r29
496 0222 CF91 pop r28
497 .LVL36:
498 0224 1F91 pop r17
499 .LVL37:
500 0226 0895 ret
501 .LFE18:
503 .global __vector_13
505 __vector_13:
506 .LFB19:
507 .LM67:
508 0228 1F92 push __zero_reg__
509 022a 0F92 push r0
510 022c 0FB6 in r0,__SREG__
511 022e 0F92 push r0
512 0230 1124 clr __zero_reg__
513 0232 2F93 push r18
514 0234 3F93 push r19
515 0236 4F93 push r20
516 0238 8F93 push r24
517 023a 9F93 push r25
518 023c EF93 push r30
519 023e FF93 push r31
520 /* prologue: Signal */
521 /* frame size = 0 */
522 .LM68:
523 0240 4CB1 in r20,44-32
524 .LVL38:
525 .LM69:
526 0242 8091 0000 lds r24,UQEnd
527 0246 8091 0000 lds r24,UQEnd
528 024a 2091 0000 lds r18,UQFront
529 024e 9927 clr r25
530 0250 87FD sbrc r24,7
531 0252 9095 com r25
532 0254 0196 adiw r24,1
533 0256 3327 clr r19
534 0258 27FD sbrc r18,7
535 025a 3095 com r19
536 025c 8217 cp r24,r18
537 025e 9307 cpc r25,r19
538 0260 01F4 brne .L50
539 .LM70:
540 0262 8091 0000 lds r24,UQFront
541 0266 8F5F subi r24,lo8(-(1))
542 0268 8093 0000 sts UQFront,r24
543 .LM71:
544 026c 8091 0000 lds r24,UQFront
545 .L50:
546 .LM72:
547 0270 8091 0000 lds r24,UQEnd
548 .LM73:
549 0274 8091 0000 lds r24,UQEnd
550 0278 8F5F subi r24,lo8(-(1))
551 027a 8093 0000 sts UQEnd,r24
552 .LM74:
553 027e E091 0000 lds r30,UQEnd
554 0282 FF27 clr r31
555 0284 E7FD sbrc r30,7
556 0286 F095 com r31
557 0288 E050 subi r30,lo8(-(URBuff))
558 028a F040 sbci r31,hi8(-(URBuff))
559 028c 4083 st Z,r20
560 .LM75:
561 028e 8091 0000 lds r24,UQFront
562 0292 8F3F cpi r24,lo8(-1)
563 0294 01F4 brne .L52
564 0296 1092 0000 sts UQFront,__zero_reg__
565 .L52:
566 /* epilogue start */
567 .LM76:
568 029a FF91 pop r31
569 029c EF91 pop r30
570 029e 9F91 pop r25
571 02a0 8F91 pop r24
572 02a2 4F91 pop r20
573 .LVL39:
574 02a4 3F91 pop r19
575 02a6 2F91 pop r18
576 02a8 0F90 pop r0
577 02aa 0FBE out __SREG__,r0
578 02ac 0F90 pop r0
579 02ae 1F90 pop __zero_reg__
580 02b0 1895 reti
581 .LFE19:
583 .global urclear
585 urclear:
586 .LFB20:
587 .LM77:
588 /* prologue: function */
589 /* frame size = 0 */
590 .LM78:
591 02b2 80E0 ldi r24,lo8(0)
592 02b4 90E0 ldi r25,hi8(0)
593 .LVL40:
594 .L54:
595 .LBB71:
596 .LM79:
597 02b6 FC01 movw r30,r24
598 02b8 E050 subi r30,lo8(-(URBuff))
599 02ba F040 sbci r31,hi8(-(URBuff))
600 02bc 1082 st Z,__zero_reg__
601 .LM80:
602 02be 0196 adiw r24,1
603 02c0 8038 cpi r24,128
604 02c2 9105 cpc r25,__zero_reg__
605 02c4 01F4 brne .L54
606 /* epilogue start */
607 .LBE71:
608 .LM81:
609 02c6 0895 ret
610 .LFE20:
613 lcd_write:
614 .LFB23:
615 .LM82:
616 .LVL41:
617 /* prologue: function */
618 /* frame size = 0 */
619 .LM83:
620 02c8 6623 tst r22
621 02ca 01F0 breq .L58
622 .LM84:
623 02cc DC9A sbi 59-32,4
624 02ce 00C0 rjmp .L59
625 .L58:
626 .LM85:
627 02d0 DC98 cbi 59-32,4
628 .L59:
629 .LM86:
630 02d2 DD98 cbi 59-32,5
631 .LM87:
632 02d4 A49A sbi 52-32,4
633 .LM88:
634 02d6 A59A sbi 52-32,5
635 .LM89:
636 02d8 A69A sbi 52-32,6
637 .LM90:
638 02da A79A sbi 52-32,7
639 .LM91:
640 02dc AF98 cbi 53-32,7
641 .LM92:
642 02de AE98 cbi 53-32,6
643 .LM93:
644 02e0 AD98 cbi 53-32,5
645 .LM94:
646 02e2 AC98 cbi 53-32,4
647 .LM95:
648 02e4 87FD sbrc r24,7
649 02e6 AF9A sbi 53-32,7
650 .L60:
651 .LM96:
652 02e8 86FD sbrc r24,6
653 .LVL42:
654 02ea AE9A sbi 53-32,6
655 .L61:
656 .LM97:
657 02ec 85FD sbrc r24,5
658 02ee AD9A sbi 53-32,5
659 .L62:
660 .LM98:
661 02f0 84FD sbrc r24,4
662 02f2 AC9A sbi 53-32,4
663 .L63:
664 .LBB72:
665 .LBB73:
666 .LM99:
667 02f4 DE9A sbi 59-32,6
668 .LM100:
669 /* #APP */
670 ; 360 "lcd.h" 1
671 02f6 00C0 rjmp 1f
672 1:
673 ; 0 "" 2
674 .LM101:
675 /* #NOAPP */
676 02f8 DE98 cbi 59-32,6
677 .LBE73:
678 .LBE72:
679 .LM102:
680 02fa AF98 cbi 53-32,7
681 .LM103:
682 02fc AE98 cbi 53-32,6
683 .LM104:
684 02fe AD98 cbi 53-32,5
685 .LM105:
686 0300 AC98 cbi 53-32,4
687 .LM106:
688 0302 83FD sbrc r24,3
689 0304 AF9A sbi 53-32,7
690 .L64:
691 .LM107:
692 0306 82FD sbrc r24,2
693 0308 AE9A sbi 53-32,6
694 .L65:
695 .LM108:
696 030a 81FD sbrc r24,1
697 030c AD9A sbi 53-32,5
698 .L66:
699 .LM109:
700 030e 80FD sbrc r24,0
701 0310 AC9A sbi 53-32,4
702 .L67:
703 .LBB74:
704 .LBB75:
705 .LM110:
706 0312 DE9A sbi 59-32,6
707 .LM111:
708 /* #APP */
709 ; 360 "lcd.h" 1
710 0314 00C0 rjmp 1f
711 1:
712 ; 0 "" 2
713 .LM112:
714 /* #NOAPP */
715 0316 DE98 cbi 59-32,6
716 .LBE75:
717 .LBE74:
718 .LM113:
719 0318 AC9A sbi 53-32,4
720 .LM114:
721 031a AD9A sbi 53-32,5
722 .LM115:
723 031c AE9A sbi 53-32,6
724 .LM116:
725 031e AF9A sbi 53-32,7
726 /* epilogue start */
727 .LM117:
728 0320 0895 ret
729 .LFE23:
732 lcd_waitbusy:
733 .LFB25:
734 .LM118:
735 /* prologue: function */
736 /* frame size = 0 */
737 .LBB76:
738 .LBB77:
739 .LM119:
740 0322 80E0 ldi r24,lo8(9984)
741 0324 97E2 ldi r25,hi8(9984)
742 .LVL43:
743 /* #APP */
744 ; 339 "lcd.h" 1
745 0326 0197 1: sbiw r24,1
746 0328 01F4 brne 1b
747 ; 0 "" 2
748 /* #NOAPP */
749 .LBE77:
750 .LBE76:
751 .LBB78:
752 .LBB79:
753 032a 84E0 ldi r24,lo8(4)
754 032c 90E0 ldi r25,hi8(4)
755 .LVL44:
756 /* #APP */
757 ; 339 "lcd.h" 1
758 032e 0197 1: sbiw r24,1
759 0330 01F4 brne 1b
760 ; 0 "" 2
761 /* #NOAPP */
762 .LBE79:
763 .LBE78:
764 .LBB80:
765 .LBB81:
766 .LM120:
767 0332 DC98 cbi 59-32,4
768 .LM121:
769 0334 DD9A sbi 59-32,5
770 .LM122:
771 0336 A498 cbi 52-32,4
772 .LM123:
773 0338 A598 cbi 52-32,5
774 .LM124:
775 033a A698 cbi 52-32,6
776 .LM125:
777 033c A798 cbi 52-32,7
778 .LM126:
779 033e DE9A sbi 59-32,6
780 .LM127:
781 /* #APP */
782 ; 493 "lcd.h" 1
783 0340 00C0 rjmp 1f
784 1:
785 ; 0 "" 2
786 .LM128:
787 /* #NOAPP */
788 0342 9C9B sbis 51-32,4
789 0344 00C0 rjmp .L70
790 0346 80E1 ldi r24,lo8(16)
791 .LVL45:
792 0348 00C0 rjmp .L71
793 .LVL46:
794 .L70:
795 034a 80E0 ldi r24,lo8(0)
796 .LVL47:
797 .L71:
798 .LM129:
799 034c 9D99 sbic 51-32,5
800 034e 8062 ori r24,lo8(32)
801 .L72:
802 .LM130:
803 0350 9E99 sbic 51-32,6
804 0352 8064 ori r24,lo8(64)
805 .L73:
806 .LM131:
807 0354 9F99 sbic 51-32,7
808 0356 8068 ori r24,lo8(-128)
809 .L74:
810 .LM132:
811 0358 DE98 cbi 59-32,6
812 .LM133:
813 /* #APP */
814 ; 501 "lcd.h" 1
815 035a 00C0 rjmp 1f
816 1:
817 ; 0 "" 2
818 .LM134:
819 /* #NOAPP */
820 035c DE9A sbi 59-32,6
821 .LM135:
822 /* #APP */
823 ; 505 "lcd.h" 1
824 035e 00C0 rjmp 1f
825 1:
826 ; 0 "" 2
827 .LM136:
828 /* #NOAPP */
829 0360 9C99 sbic 51-32,4
830 0362 8160 ori r24,lo8(1)
831 .L75:
832 .LM137:
833 0364 9D99 sbic 51-32,5
834 0366 8260 ori r24,lo8(2)
835 .L76:
836 .LM138:
837 0368 9E99 sbic 51-32,6
838 036a 8460 ori r24,lo8(4)
839 .L77:
840 .LM139:
841 036c 9F99 sbic 51-32,7
842 036e 8860 ori r24,lo8(8)
843 .L78:
844 .LM140:
845 0370 DE98 cbi 59-32,6
846 .LVL48:
847 /* epilogue start */
848 .LBE81:
849 .LBE80:
850 .LM141:
851 0372 0895 ret
852 .LFE25:
854 .global lcd_command
856 lcd_command:
857 .LFB27:
858 .LM142:
859 .LVL49:
860 0374 1F93 push r17
861 /* prologue: function */
862 /* frame size = 0 */
863 0376 182F mov r17,r24
864 .LM143:
865 0378 0E94 0000 call lcd_waitbusy
866 .LVL50:
867 .LM144:
868 037c 812F mov r24,r17
869 037e 60E0 ldi r22,lo8(0)
870 0380 0E94 0000 call lcd_write
871 /* epilogue start */
872 .LM145:
873 0384 1F91 pop r17
874 .LVL51:
875 0386 0895 ret
876 .LFE27:
878 .global lcd_data
880 lcd_data:
881 .LFB28:
882 .LM146:
883 .LVL52:
884 0388 1F93 push r17
885 /* prologue: function */
886 /* frame size = 0 */
887 038a 182F mov r17,r24
888 .LM147:
889 038c 0E94 0000 call lcd_waitbusy
890 .LVL53:
891 .LM148:
892 0390 812F mov r24,r17
893 0392 61E0 ldi r22,lo8(1)
894 0394 0E94 0000 call lcd_write
895 /* epilogue start */
896 .LM149:
897 0398 1F91 pop r17
898 .LVL54:
899 039a 0895 ret
900 .LFE28:
902 .global lcd_gotoxy
904 lcd_gotoxy:
905 .LFB29:
906 .LM150:
907 .LVL55:
908 /* prologue: function */
909 /* frame size = 0 */
910 .LM151:
911 039c 6623 tst r22
912 039e 01F4 brne .L85
913 .LM152:
914 03a0 8058 subi r24,lo8(-(-128))
915 .LVL56:
916 03a2 00C0 rjmp .L88
917 .LVL57:
918 .L85:
919 .LM153:
920 03a4 8054 subi r24,lo8(-(-64))
921 .LVL58:
922 .L88:
923 03a6 0E94 0000 call lcd_command
924 .LVL59:
925 03aa 0895 ret
926 .LFE29:
928 .global lcd_getxy
930 lcd_getxy:
931 .LFB30:
932 .LM154:
933 /* prologue: function */
934 /* frame size = 0 */
935 .LM155:
936 03ac 0E94 0000 call lcd_waitbusy
937 .LM156:
938 03b0 90E0 ldi r25,lo8(0)
939 /* epilogue start */
940 03b2 0895 ret
941 .LFE30:
943 .global lcd_clear
945 lcd_clear:
946 .LFB31:
947 .LM157:
948 /* prologue: function */
949 /* frame size = 0 */
950 .LM158:
951 03b4 81E0 ldi r24,lo8(1)
952 03b6 0E94 0000 call lcd_command
953 /* epilogue start */
954 .LM159:
955 03ba 0895 ret
956 .LFE31:
958 .global lcd_home
960 lcd_home:
961 .LFB33:
962 .LM160:
963 /* prologue: function */
964 /* frame size = 0 */
965 .LM161:
966 03bc 82E0 ldi r24,lo8(2)
967 03be 0E94 0000 call lcd_command
968 /* epilogue start */
969 .LM162:
970 03c2 0895 ret
971 .LFE33:
973 .global lcd_putc
975 lcd_putc:
976 .LFB34:
977 .LM163:
978 .LVL60:
979 03c4 1F93 push r17
980 /* prologue: function */
981 /* frame size = 0 */
982 03c6 182F mov r17,r24
983 .LM164:
984 03c8 0E94 0000 call lcd_waitbusy
985 .LVL61:
986 .LM165:
987 03cc 1A30 cpi r17,lo8(10)
988 03ce 01F4 brne .L96
989 .LBB82:
990 .LBB83:
991 .LM166:
992 03d0 8034 cpi r24,lo8(64)
993 .LVL62:
994 03d2 00F0 brlo .L97
995 03d4 80E0 ldi r24,lo8(0)
996 .LVL63:
997 03d6 00C0 rjmp .L98
998 .LVL64:
999 .L97:
1000 03d8 80E4 ldi r24,lo8(64)
1001 .LVL65:
1002 .L98:
1003 .LM167:
1004 03da 8058 subi r24,lo8(-(-128))
1005 .LVL66:
1006 03dc 0E94 0000 call lcd_command
1007 03e0 00C0 rjmp .L100
1008 .L96:
1009 .LBE83:
1010 .LBE82:
1011 .LM168:
1012 03e2 812F mov r24,r17
1013 03e4 61E0 ldi r22,lo8(1)
1014 03e6 0E94 0000 call lcd_write
1015 .L100:
1016 /* epilogue start */
1017 .LM169:
1018 03ea 1F91 pop r17
1019 .LVL67:
1020 03ec 0895 ret
1021 .LFE34:
1023 .global lcd_string
1025 lcd_string:
1026 .LFB35:
1027 .LM170:
1028 .LVL68:
1029 03ee CF93 push r28
1030 03f0 DF93 push r29
1031 /* prologue: function */
1032 /* frame size = 0 */
1033 03f2 EC01 movw r28,r24
1034 03f4 00C0 rjmp .L102
1035 .LVL69:
1036 .L103:
1037 .LM171:
1038 03f6 0E94 0000 call lcd_putc
1039 .LVL70:
1040 .L102:
1041 .LM172:
1042 03fa 8991 ld r24,Y+
1043 .LVL71:
1044 03fc 8823 tst r24
1045 03fe 01F4 brne .L103
1046 /* epilogue start */
1047 .LM173:
1048 0400 DF91 pop r29
1049 0402 CF91 pop r28
1050 .LVL72:
1051 0404 0895 ret
1052 .LFE35: