?? lcm1602.lst
字號:
432 020a 8B87 std Y+11,r24
433 .L20:
434 .LBB12:
436 .LM35:
437 020c 8B85 ldd r24,Y+11
438 020e 9C85 ldd r25,Y+12
439 0210 9E83 std Y+6,r25
440 0212 8D83 std Y+5,r24
441 .LBB13:
443 .LM36:
444 0214 8D81 ldd r24,Y+5
445 0216 9E81 ldd r25,Y+6
446 /* #APP */
447 0218 0197 1: sbiw r24,1
448 021a F1F7 brne 1b
449 /* #NOAPP */
450 021c 9E83 std Y+6,r25
451 021e 8D83 std Y+5,r24
452 .LBE13:
453 .LBE12:
454 .LBE11:
455 .LBE10:
457 .Ltext6:
75:lcm1602.c **** _delay_ms(5);
76:lcm1602.c **** LCM1602WriteCommand(0x38,0);
459 .LM37:
460 0220 60E0 ldi r22,lo8(0)
461 0222 88E3 ldi r24,lo8(56)
462 0224 0E94 0000 call LCM1602WriteCommand
463 .LBB14:
465 .Ltext7:
467 .LM38:
468 0228 80E0 ldi r24,lo8(0x40a00000)
469 022a 90E0 ldi r25,hi8(0x40a00000)
470 022c A0EA ldi r26,hlo8(0x40a00000)
471 022e B0E4 ldi r27,hhi8(0x40a00000)
472 0230 8F83 std Y+7,r24
473 0232 9887 std Y+8,r25
474 0234 A987 std Y+9,r26
475 0236 BA87 std Y+10,r27
476 .LBB15:
478 .LM39:
479 0238 26E6 ldi r18,lo8(0x44e66666)
480 023a 36E6 ldi r19,hi8(0x44e66666)
481 023c 46EE ldi r20,hlo8(0x44e66666)
482 023e 54E4 ldi r21,hhi8(0x44e66666)
483 0240 6F81 ldd r22,Y+7
484 0242 7885 ldd r23,Y+8
485 0244 8985 ldd r24,Y+9
486 0246 9A85 ldd r25,Y+10
487 0248 0E94 0000 call __mulsf3
488 024c DC01 movw r26,r24
489 024e CB01 movw r24,r22
490 0250 8983 std Y+1,r24
491 0252 9A83 std Y+2,r25
492 0254 AB83 std Y+3,r26
493 0256 BC83 std Y+4,r27
495 .LM40:
496 0258 20E0 ldi r18,lo8(0x3f800000)
497 025a 30E0 ldi r19,hi8(0x3f800000)
498 025c 40E8 ldi r20,hlo8(0x3f800000)
499 025e 5FE3 ldi r21,hhi8(0x3f800000)
500 0260 6981 ldd r22,Y+1
501 0262 7A81 ldd r23,Y+2
502 0264 8B81 ldd r24,Y+3
503 0266 9C81 ldd r25,Y+4
504 0268 0E94 0000 call __ltsf2
505 026c 8823 tst r24
506 026e 0CF0 brlt .L27
507 0270 05C0 rjmp .L26
508 .L27:
510 .LM41:
511 0272 81E0 ldi r24,lo8(1)
512 0274 90E0 ldi r25,hi8(1)
513 0276 9C87 std Y+12,r25
514 0278 8B87 std Y+11,r24
515 027a 1AC0 rjmp .L28
516 .L26:
518 .LM42:
519 027c 20E0 ldi r18,lo8(0x477fff00)
520 027e 3FEF ldi r19,hi8(0x477fff00)
521 0280 4FE7 ldi r20,hlo8(0x477fff00)
522 0282 57E4 ldi r21,hhi8(0x477fff00)
523 0284 6981 ldd r22,Y+1
524 0286 7A81 ldd r23,Y+2
525 0288 8B81 ldd r24,Y+3
526 028a 9C81 ldd r25,Y+4
527 028c 0E94 0000 call __gtsf2
528 0290 1816 cp __zero_reg__,r24
529 0292 0CF0 brlt .L30
530 0294 03C0 rjmp .L29
531 .L30:
533 .LM43:
534 0296 1C86 std Y+12,__zero_reg__
535 0298 1B86 std Y+11,__zero_reg__
536 029a 0AC0 rjmp .L28
537 .L29:
539 .LM44:
540 029c 6981 ldd r22,Y+1
541 029e 7A81 ldd r23,Y+2
542 02a0 8B81 ldd r24,Y+3
543 02a2 9C81 ldd r25,Y+4
544 02a4 0E94 0000 call __fixunssfsi
545 02a8 DC01 movw r26,r24
546 02aa CB01 movw r24,r22
547 02ac 9C87 std Y+12,r25
548 02ae 8B87 std Y+11,r24
549 .L28:
550 .LBB16:
552 .LM45:
553 02b0 8B85 ldd r24,Y+11
554 02b2 9C85 ldd r25,Y+12
555 02b4 9E83 std Y+6,r25
556 02b6 8D83 std Y+5,r24
557 .LBB17:
559 .LM46:
560 02b8 8D81 ldd r24,Y+5
561 02ba 9E81 ldd r25,Y+6
562 /* #APP */
563 02bc 0197 1: sbiw r24,1
564 02be F1F7 brne 1b
565 /* #NOAPP */
566 02c0 9E83 std Y+6,r25
567 02c2 8D83 std Y+5,r24
568 .LBE17:
569 .LBE16:
570 .LBE15:
571 .LBE14:
573 .Ltext8:
77:lcm1602.c **** _delay_ms(5);
78:lcm1602.c **** LCM1602WriteCommand(0x38,1); //以后的顯示都要檢查忙
575 .LM47:
576 02c4 61E0 ldi r22,lo8(1)
577 02c6 88E3 ldi r24,lo8(56)
578 02c8 0E94 0000 call LCM1602WriteCommand
79:lcm1602.c **** LCM1602WriteCommand(0x08,1); //關閉顯示
580 .LM48:
581 02cc 61E0 ldi r22,lo8(1)
582 02ce 88E0 ldi r24,lo8(8)
583 02d0 0E94 0000 call LCM1602WriteCommand
80:lcm1602.c **** LCM1602WriteCommand(0x01,1); //顯示清屏
585 .LM49:
586 02d4 61E0 ldi r22,lo8(1)
587 02d6 81E0 ldi r24,lo8(1)
588 02d8 0E94 0000 call LCM1602WriteCommand
81:lcm1602.c **** LCM1602WriteCommand(0x06,1); //寫指令06H,文字不動,光標自動右移
590 .LM50:
591 02dc 61E0 ldi r22,lo8(1)
592 02de 86E0 ldi r24,lo8(6)
593 02e0 0E94 0000 call LCM1602WriteCommand
82:lcm1602.c **** LCM1602WriteCommand(0x0C,1); //寫指令0CH,顯示ON,光標OFF,閃爍OFF
595 .LM51:
596 02e4 61E0 ldi r22,lo8(1)
597 02e6 8CE0 ldi r24,lo8(12)
598 02e8 0E94 0000 call LCM1602WriteCommand
599 /* epilogue: frame size=12 */
600 02ec 2C96 adiw r28,12
601 02ee 0FB6 in __tmp_reg__,__SREG__
602 02f0 F894 cli
603 02f2 DEBF out __SP_H__,r29
604 02f4 0FBE out __SREG__,__tmp_reg__
605 02f6 CDBF out __SP_L__,r28
606 02f8 DF91 pop r29
607 02fa CF91 pop r28
608 02fc 0895 ret
609 /* epilogue end (size=9) */
610 /* function LCM1602Init size 391 (372) */
652 .Lscope0:
654 .global LCM1602BusyWait
656 LCM1602BusyWait:
83:lcm1602.c **** }
84:lcm1602.c ****
85:lcm1602.c ****
86:lcm1602.c **** //1602總線忙等待
87:lcm1602.c **** void LCM1602BusyWait(void)
88:lcm1602.c **** {
658 .LM52:
659 /* prologue: frame size=0 */
660 02fe CF93 push r28
661 0300 DF93 push r29
662 0302 CDB7 in r28,__SP_L__
663 0304 DEB7 in r29,__SP_H__
664 /* prologue end (size=4) */
89:lcm1602.c **** DB_IN; //PB定義為輸入,讀引腳信號
666 .LM53:
667 0306 1092 3700 sts 55,__zero_reg__
90:lcm1602.c **** RS_CLR;
669 .LM54:
670 030a 8091 3200 lds r24,50
671 030e 8F7E andi r24,lo8(-17)
672 0310 8093 3200 sts 50,r24
91:lcm1602.c **** RW_SET; //當RS為低電平RW為高電平時可以讀忙信號
674 .LM55:
675 0314 8091 3200 lds r24,50
676 0318 8062 ori r24,lo8(32)
677 031a 8093 3200 sts 50,r24
92:lcm1602.c **** E_SET;
679 .LM56:
680 031e 8091 3200 lds r24,50
681 0322 8068 ori r24,lo8(-128)
682 0324 8093 3200 sts 50,r24
93:lcm1602.c **** asm("nop\n nop"); //延時兩個nop時間
684 .LM57:
685 /* #APP */
686 0328 0000 nop
687 032a 0000 nop
688 /* #NOAPP */
689 .L35:
94:lcm1602.c **** while(DB_READ&0x80); //直到忙信號結束,1602可再次寫入信號
691 .LM58:
692 032c 8091 3600 lds r24,54
693 0330 8823 tst r24
694 0332 0CF4 brge .L36
695 0334 FBCF rjmp .L35
696 .L36:
95:lcm1602.c **** DB_OUT;
698 .LM59:
699 0336 8FEF ldi r24,lo8(-1)
700 0338 8093 3700 sts 55,r24
96:lcm1602.c **** E_CLR;
702 .LM60:
703 033c 9FE7 ldi r25,lo8(127)
704 033e 8091 3200 lds r24,50
705 0342 8923 and r24,r25
706 0344 8093 3200 sts 50,r24
707 /* epilogue: frame size=0 */
708 0348 DF91 pop r29
709 034a CF91 pop r28
710 034c 0895 ret
711 /* epilogue end (size=3) */
712 /* function LCM1602BusyWait size 42 (35) */
714 .Lscope1:
718 .global LCM1602WriteCommand
720 LCM1602WriteCommand:
97:lcm1602.c **** }
98:lcm1602.c ****
99:lcm1602.c ****
100:lcm1602.c **** //向1602寫入命令
101:lcm1602.c **** void LCM1602WriteCommand(uchar com,uchar Busy)//Busy為0時忽略忙檢測,為1時檢查
102:lcm1602.c **** {
722 .LM61:
723 /* prologue: frame size=2 */
724 034e CF93 push r28
725 0350 DF93 push r29
726 0352 CDB7 in r28,__SP_L__
727 0354 DEB7 in r29,__SP_H__
728 0356 2297 sbiw r28,2
729 0358 0FB6 in __tmp_reg__,__SREG__
730 035a F894 cli
731 035c DEBF out __SP_H__,r29
732 035e 0FBE out __SREG__,__tmp_reg__
733 0360 CDBF out __SP_L__,r28
734 /* prologue end (size=10) */
735 0362 8983 std Y+1,r24
736 0364 6A83 std Y+2,r22
103:lcm1602.c **** if(Busy)
738 .LM62:
739 0366 8A81 ldd r24,Y+2
740 0368 8823 tst r24
741 036a 11F0 breq .L38
104:lcm1602.c **** {
105:lcm1602.c **** LCM1602BusyWait(); //根據需要檢測忙
743 .LM63:
744 036c 0E94 0000 call LCM1602BusyWait
745 .L38:
107:lcm1602.c **** RS_CLR;
747 .LM64:
748 0370 8091 3200 lds r24,50
749 0374 8F7E andi r24,lo8(-17)
750 0376 8093 3200 sts 50,r24
108:lcm1602.c **** RW_CLR; //當RS和RW共同為低電平時可以寫入指令或者顯示地址
752 .LM65:
753 037a 8091 3200 lds r24,50
754 037e 8F7D andi r24,lo8(-33)
755 0380 8093 3200 sts 50,r24
109:lcm1602.c **** DB_PORT=com;
757 .LM66:
758 0384 8981 ldd r24,Y+1
759 0386 8093 3800 sts 56,r24
110:lcm1602.c **** E_SET;
761 .LM67:
762 038a 8091 3200 lds r24,50
763 038e 8068 ori r24,lo8(-128)
764 0390 8093 3200 sts 50,r24
111:lcm1602.c **** E_CLR;
766 .LM68:
767 0394 9FE7 ldi r25,lo8(127)
768 0396 8091 3200 lds r24,50
769 039a 8923 and r24,r25
770 039c 8093 3200 sts 50,r24
771 /* epilogue: frame size=2 */
772 03a0 2296 adiw r28,2
773 03a2 0FB6 in __tmp_reg__,__SREG__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -