?? lcm1602.lst
字號(hào):
774 03a4 F894 cli
775 03a6 DEBF out __SP_H__,r29
776 03a8 0FBE out __SREG__,__tmp_reg__
777 03aa CDBF out __SP_L__,r28
778 03ac DF91 pop r29
779 03ae CF91 pop r28
780 03b0 0895 ret
781 /* epilogue end (size=9) */
782 /* function LCM1602WriteCommand size 50 (31) */
784 .Lscope2:
787 .global LCM1602WriteData
789 LCM1602WriteData:
112:lcm1602.c **** }
113:lcm1602.c ****
114:lcm1602.c **** //向1602寫(xiě)入數(shù)據(jù)
115:lcm1602.c **** void LCM1602WriteData(uchar dat)
116:lcm1602.c **** {
791 .LM69:
792 /* prologue: frame size=1 */
793 03b2 CF93 push r28
794 03b4 DF93 push r29
795 03b6 CDB7 in r28,__SP_L__
796 03b8 DEB7 in r29,__SP_H__
797 03ba 2197 sbiw r28,1
798 03bc 0FB6 in __tmp_reg__,__SREG__
799 03be F894 cli
800 03c0 DEBF out __SP_H__,r29
801 03c2 0FBE out __SREG__,__tmp_reg__
802 03c4 CDBF out __SP_L__,r28
803 /* prologue end (size=10) */
804 03c6 8983 std Y+1,r24
117:lcm1602.c **** LCM1602BusyWait();
806 .LM70:
807 03c8 0E94 0000 call LCM1602BusyWait
118:lcm1602.c **** RS_SET;
809 .LM71:
810 03cc 8091 3200 lds r24,50
811 03d0 8061 ori r24,lo8(16)
812 03d2 8093 3200 sts 50,r24
119:lcm1602.c **** RW_CLR; //當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)
814 .LM72:
815 03d6 8091 3200 lds r24,50
816 03da 8F7D andi r24,lo8(-33)
817 03dc 8093 3200 sts 50,r24
120:lcm1602.c **** DB_PORT=dat;
819 .LM73:
820 03e0 8981 ldd r24,Y+1
821 03e2 8093 3800 sts 56,r24
121:lcm1602.c **** E_SET;
823 .LM74:
824 03e6 8091 3200 lds r24,50
825 03ea 8068 ori r24,lo8(-128)
826 03ec 8093 3200 sts 50,r24
122:lcm1602.c **** E_CLR;
828 .LM75:
829 03f0 9FE7 ldi r25,lo8(127)
830 03f2 8091 3200 lds r24,50
831 03f6 8923 and r24,r25
832 03f8 8093 3200 sts 50,r24
833 /* epilogue: frame size=1 */
834 03fc 2196 adiw r28,1
835 03fe 0FB6 in __tmp_reg__,__SREG__
836 0400 F894 cli
837 0402 DEBF out __SP_H__,r29
838 0404 0FBE out __SREG__,__tmp_reg__
839 0406 CDBF out __SP_L__,r28
840 0408 DF91 pop r29
841 040a CF91 pop r28
842 040c 0895 ret
843 /* epilogue end (size=9) */
844 /* function LCM1602WriteData size 46 (27) */
846 .Lscope3:
850 .global LCD_set_xy
852 LCD_set_xy:
123:lcm1602.c **** }
124:lcm1602.c ****
125:lcm1602.c ****
126:lcm1602.c **** /*-----------------------------------------------------------------------
127:lcm1602.c **** LCD_set_xy : 設(shè)置LCD顯示的起始位置
128:lcm1602.c **** 輸入?yún)?shù)x、y : 顯示字符串的位置,X:0-15,Y:0-1
129:lcm1602.c **** LCD第一行顯示寄存器地址:0X80-0X8F
130:lcm1602.c **** LCD第一行顯示寄存器地址:0XC0-0XCF
131:lcm1602.c **** -----------------------------------------------------------------------*/
132:lcm1602.c **** void LCD_set_xy(uchar x,uchar y )
133:lcm1602.c **** {
854 .LM76:
855 /* prologue: frame size=3 */
856 040e CF93 push r28
857 0410 DF93 push r29
858 0412 CDB7 in r28,__SP_L__
859 0414 DEB7 in r29,__SP_H__
860 0416 2397 sbiw r28,3
861 0418 0FB6 in __tmp_reg__,__SREG__
862 041a F894 cli
863 041c DEBF out __SP_H__,r29
864 041e 0FBE out __SREG__,__tmp_reg__
865 0420 CDBF out __SP_L__,r28
866 /* prologue end (size=10) */
867 0422 8983 std Y+1,r24
868 0424 6A83 std Y+2,r22
134:lcm1602.c **** uchar address;
135:lcm1602.c **** if (y == 0) address = 0x80 + x; //第一行
870 .LM77:
871 0426 8A81 ldd r24,Y+2
872 0428 8823 tst r24
873 042a 29F4 brne .L41
875 .LM78:
876 042c 80E8 ldi r24,lo8(-128)
877 042e 9981 ldd r25,Y+1
878 0430 890F add r24,r25
879 0432 8B83 std Y+3,r24
880 0434 04C0 rjmp .L42
881 .L41:
136:lcm1602.c **** else address = 0xc0 + x; //第二行
883 .LM79:
884 0436 80EC ldi r24,lo8(-64)
885 0438 9981 ldd r25,Y+1
886 043a 890F add r24,r25
887 043c 8B83 std Y+3,r24
888 .L42:
137:lcm1602.c **** LCM1602WriteCommand(address,1);
890 .LM80:
891 043e 61E0 ldi r22,lo8(1)
892 0440 8B81 ldd r24,Y+3
893 0442 0E94 0000 call LCM1602WriteCommand
894 /* epilogue: frame size=3 */
895 0446 2396 adiw r28,3
896 0448 0FB6 in __tmp_reg__,__SREG__
897 044a F894 cli
898 044c DEBF out __SP_H__,r29
899 044e 0FBE out __SREG__,__tmp_reg__
900 0450 CDBF out __SP_L__,r28
901 0452 DF91 pop r29
902 0454 CF91 pop r28
903 0456 0895 ret
904 /* epilogue end (size=9) */
905 /* function LCD_set_xy size 37 (18) */
910 .Lscope4:
915 .global LCM1602Write_String
917 LCM1602Write_String:
138:lcm1602.c **** }
139:lcm1602.c ****
140:lcm1602.c ****
141:lcm1602.c **** //英文字符串顯示函數(shù)
142:lcm1602.c **** void LCM1602Write_String(uchar x,uchar y,char *string)
143:lcm1602.c **** {
919 .LM81:
920 /* prologue: frame size=4 */
921 0458 CF93 push r28
922 045a DF93 push r29
923 045c CDB7 in r28,__SP_L__
924 045e DEB7 in r29,__SP_H__
925 0460 2497 sbiw r28,4
926 0462 0FB6 in __tmp_reg__,__SREG__
927 0464 F894 cli
928 0466 DEBF out __SP_H__,r29
929 0468 0FBE out __SREG__,__tmp_reg__
930 046a CDBF out __SP_L__,r28
931 /* prologue end (size=10) */
932 046c 8983 std Y+1,r24
933 046e 6A83 std Y+2,r22
934 0470 5C83 std Y+4,r21
935 0472 4B83 std Y+3,r20
144:lcm1602.c **** if(x>=XSIZE||y>=YSIZE||string==NULL)return;
937 .LM82:
938 0474 8981 ldd r24,Y+1
939 0476 8031 cpi r24,lo8(16)
940 0478 18F5 brsh .L43
942 .LM83:
943 047a 8A81 ldd r24,Y+2
944 047c 8230 cpi r24,lo8(2)
945 047e 00F5 brsh .L43
946 0480 8B81 ldd r24,Y+3
947 0482 9C81 ldd r25,Y+4
948 0484 0097 sbiw r24,0
949 0486 09F4 brne .L44
950 0488 1BC0 rjmp .L43
951 .L44:
145:lcm1602.c **** LCD_set_xy(x, y);
953 .LM84:
954 048a 6A81 ldd r22,Y+2
955 048c 8981 ldd r24,Y+1
956 048e 0E94 0000 call LCD_set_xy
957 .L46:
146:lcm1602.c **** while(x<XSIZE&&*string>=0x20)
959 .LM85:
960 0492 8981 ldd r24,Y+1
961 0494 8031 cpi r24,lo8(16)
962 0496 A0F4 brsh .L43
963 0498 EB81 ldd r30,Y+3
964 049a FC81 ldd r31,Y+4
965 049c 8081 ld r24,Z
966 049e 8032 cpi r24,lo8(32)
967 04a0 78F0 brlo .L43
147:lcm1602.c **** {
148:lcm1602.c **** LCM1602WriteData(*string++);
969 .LM86:
970 04a2 DE01 movw r26,r28
971 04a4 1396 adiw r26,3
972 04a6 ED91 ld r30,X+
973 04a8 FC91 ld r31,X
974 04aa 1197 sbiw r26,1
975 04ac 8081 ld r24,Z
976 04ae 3196 adiw r30,1
977 04b0 ED93 st X+,r30
978 04b2 FC93 st X,r31
979 04b4 0E94 0000 call LCM1602WriteData
149:lcm1602.c **** x++;
981 .LM87:
982 04b8 8981 ldd r24,Y+1
983 04ba 8F5F subi r24,lo8(-(1))
984 04bc 8983 std Y+1,r24
985 04be E9CF rjmp .L46
986 .L43:
987 /* epilogue: frame size=4 */
988 04c0 2496 adiw r28,4
989 04c2 0FB6 in __tmp_reg__,__SREG__
990 04c4 F894 cli
991 04c6 DEBF out __SP_H__,r29
992 04c8 0FBE out __SREG__,__tmp_reg__
993 04ca CDBF out __SP_L__,r28
994 04cc DF91 pop r29
995 04ce CF91 pop r28
996 04d0 0895 ret
997 /* epilogue end (size=9) */
998 /* function LCM1602Write_String size 61 (42) */
1000 .Lscope5:
1003 .global LCM1602Write_number
1005 LCM1602Write_number:
150:lcm1602.c **** }
152:lcm1602.c ****
153:lcm1602.c ****
154:lcm1602.c **** //兩位數(shù)字顯示函數(shù)
155:lcm1602.c **** void LCM1602Write_number(uchar number)
156:lcm1602.c **** {
1007 .LM88:
1008 /* prologue: frame size=3 */
1009 04d2 CF93 push r28
1010 04d4 DF93 push r29
1011 04d6 CDB7 in r28,__SP_L__
1012 04d8 DEB7 in r29,__SP_H__
1013 04da 2397 sbiw r28,3
1014 04dc 0FB6 in __tmp_reg__,__SREG__
1015 04de F894 cli
1016 04e0 DEBF out __SP_H__,r29
1017 04e2 0FBE out __SREG__,__tmp_reg__
1018 04e4 CDBF out __SP_L__,r28
1019 /* prologue end (size=10) */
1020 04e6 8983 std Y+1,r24
157:lcm1602.c **** uchar x,y;
158:lcm1602.c **** x=number/10;
1022 .LM89:
1023 04e8 8981 ldd r24,Y+1
1024 04ea 9AE0 ldi r25,lo8(10)
1025 04ec 692F mov r22,r25
1026 04ee 0E94 0000 call __udivmodqi4
1027 04f2 8A83 std Y+2,r24
159:lcm1602.c **** y=number-10*x;
1029 .LM90:
1030 04f4 9A81 ldd r25,Y+2
1031 04f6 8AE0 ldi r24,lo8(10)
1032 04f8 989F mul r25,r24
1033 04fa C001 movw r24,r0
1034 04fc 1124 clr r1
1035 04fe 2981 ldd r18,Y+1
1036 0500 281B sub r18,r24
1037 0502 822F mov r24,r18
1038 0504 8B83 std Y+3,r24
160:lcm1602.c **** LCM1602WriteData(x+0x30);
1040 .LM91:
1041 0506 8A81 ldd r24,Y+2
1042 0508 805D subi r24,lo8(-(48))
1043 050a 0E94 0000 call LCM1602WriteData
161:lcm1602.c **** LCM1602WriteData(y+0x30);
1045 .LM92:
1046 050e 8B81 ldd r24,Y+3
1047 0510 805D subi r24,lo8(-(48))
1048 0512 0E94 0000 call LCM1602WriteData
1049 /* epilogue: frame size=3 */
1050 0516 2396 adiw r28,3
1051 0518 0FB6 in __tmp_reg__,__SREG__
1052 051a F894 cli
1053 051c DEBF out __SP_H__,r29
1054 051e 0FBE out __SREG__,__tmp_reg__
1055 0520 CDBF out __SP_L__,r28
1056 0522 DF91 pop r29
1057 0524 CF91 pop r28
1058 0526 0895 ret
1059 /* epilogue end (size=9) */
1060 /* function LCM1602Write_number size 43 (24) */
1066 .Lscope6:
1067 .lcomm StringHead.0,1
1068 .lcomm RunTimeCounter.1,2
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -