📄 splc051.lst
字号:
827 /* #NOAPP */
828 .LBE11:
829 .LBE10:
830 .LBE9:
831 .LBE8:
833 .Ltext4:
42:SPLC051.c **** for(int i=0;i<50;i++)
835 .LM9:
836 002e 2150 subi r18,lo8(-(-1))
837 0030 3040 sbci r19,hi8(-(-1))
838 0032 37FF sbrs r19,7
839 0034 F9CF rjmp .L27
840 .LBE7:
841 0036 E7CF rjmp .L2
842 /* epilogue: frame size=0 */
843 /* epilogue: noreturn */
844 /* epilogue end (size=0) */
845 /* function LED_test size 32 (32) */
865 .Lscope0:
867 .global F_SPLC501_Initial_IO
869 F_SPLC501_Initial_IO:
43:SPLC051.c **** _delay_ms(250);
44:SPLC051.c **** }
45:SPLC051.c **** }//***************************************************************************//
46:SPLC051.c **** //程序:F_SPLC501_Initial_IO()
47:SPLC051.c **** //描述:SPLC501接口的初始化程序 C语言调用
48:SPLC051.c **** //参数:无
49:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
50:SPLC051.c **** //***************************************************************************//
51:SPLC051.c **** void F_SPLC501_Initial_IO(void)
52:SPLC051.c **** {
871 .LM10:
872 /* prologue: frame size=0 */
873 /* prologue end (size=0) */
53:SPLC051.c **** DDRA=(1<<A0)|(1<<CS1)|(1<<EP)|(1<<RW); //定义为输出口,控制LCD
875 .LM11:
876 0038 8DE1 ldi r24,lo8(29)
877 003a 8ABB out 58-0x20,r24
54:SPLC051.c **** PORTA=0xff;
879 .LM12:
880 003c 8FEF ldi r24,lo8(-1)
881 003e 8BBB out 59-0x20,r24
55:SPLC051.c **** DDRB=0xff; //定义为输出口,数据端口
883 .LM13:
884 0040 87BB out 55-0x20,r24
56:SPLC051.c **** PORTB=0xff;
886 .LM14:
887 0042 88BB out 56-0x20,r24
888 /* epilogue: frame size=0 */
889 0044 0895 ret
890 /* epilogue end (size=1) */
891 /* function F_SPLC501_Initial_IO size 7 (6) */
893 .Lscope1:
896 .global F_SPLC501_Write_Com
898 F_SPLC501_Write_Com:
57:SPLC051.c **** }
58:SPLC051.c **** //***************************************************************************//
59:SPLC051.c **** //程序:F_SPLC501_Write_Com(unsigned int Command)
60:SPLC051.c **** //描述:往SPLC501里写一个字节指令 C语言调用
61:SPLC051.c **** //参数:送入要传送的指令
62:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
63:SPLC051.c **** //注意A0=0,EP=1,RW=0,Cs=0
64:SPLC051.c **** //***************************************************************************//
65:SPLC051.c **** void F_SPLC501_Write_Com(unsigned int Command)
66:SPLC051.c **** {
900 .LM15:
901 /* prologue: frame size=0 */
902 /* prologue end (size=0) */
67:SPLC051.c **** PORTA=(0<<A0)|(1<<EP)|(0<<RW)|(0<<CS1); //片选LCD,使能命令模式
904 .LM16:
905 0046 20E1 ldi r18,lo8(16)
906 0048 2BBB out 59-0x20,r18
68:SPLC051.c **** DDRB=0xff; //定义为输出口,数据端口
908 .LM17:
909 004a 2FEF ldi r18,lo8(-1)
910 004c 27BB out 55-0x20,r18
69:SPLC051.c **** PORTB=Command;
912 .LM18:
913 004e 88BB out 56-0x20,r24
70:SPLC051.c **** PORTA|=(1<<CS1); //取消片选
915 .LM19:
916 0050 D89A sbi 59-0x20,0
917 /* epilogue: frame size=0 */
918 0052 0895 ret
919 /* epilogue end (size=1) */
920 /* function F_SPLC501_Write_Com size 7 (6) */
922 .Lscope2:
925 .global F_SPLC501_Write_Data
927 F_SPLC501_Write_Data:
71:SPLC051.c **** }
72:SPLC051.c **** //***************************************************************************//
73:SPLC051.c **** //程序:F_SPLC501_Write_Data(unsigned int SendData)
74:SPLC051.c **** //描述:往SPLC501里写一个字节数据 C语言调用
75:SPLC051.c **** //参数:送入要传送的数据
76:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
77:SPLC051.c **** //注意A0=1,EP=1,RW=0,Cs=0
78:SPLC051.c **** //***************************************************************************//
79:SPLC051.c **** void F_SPLC501_Write_Data(unsigned int SendData)
80:SPLC051.c **** {
929 .LM20:
930 /* prologue: frame size=0 */
931 /* prologue end (size=0) */
81:SPLC051.c **** PORTA=(1<<A0)|(1<<EP)|(0<<RW)|(0<<CS1); //片选LCD,使能写数据
933 .LM21:
934 0054 24E1 ldi r18,lo8(20)
935 0056 2BBB out 59-0x20,r18
82:SPLC051.c **** DDRB=0xff; //定义为输出口,数据端口
937 .LM22:
938 0058 2FEF ldi r18,lo8(-1)
939 005a 27BB out 55-0x20,r18
83:SPLC051.c **** PORTB=(SendData);
941 .LM23:
942 005c 88BB out 56-0x20,r24
84:SPLC051.c **** PORTA|=(1<<CS1); //取消片选
944 .LM24:
945 005e D89A sbi 59-0x20,0
946 /* epilogue: frame size=0 */
947 0060 0895 ret
948 /* epilogue end (size=1) */
949 /* function F_SPLC501_Write_Data size 7 (6) */
951 .Lscope3:
953 .global F_SPLC501_Read_Data
955 F_SPLC501_Read_Data:
85:SPLC051.c **** }
86:SPLC051.c **** //***************************************************************************//
87:SPLC051.c **** //程序:F_SPLC501_Read_Data()
88:SPLC051.c **** //描述:从SPLC501里读一个字节数据 C语言调用
89:SPLC051.c **** //参数:输出传送的数据
90:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
91:SPLC051.c **** //注意A0=1,EP=0,RW=1,Cs=0
92:SPLC051.c **** //***************************************************************************//
93:SPLC051.c **** unsigned int F_SPLC501_Read_Data(void)
94:SPLC051.c **** {
957 .LM25:
958 /* prologue: frame size=0 */
959 /* prologue end (size=0) */
95:SPLC051.c **** unsigned int temp_data;
96:SPLC051.c **** PORTA=(1<<A0)|(0<<EP)|(1<<RW)|(0<<CS1); //片选LCD,使能读数据
961 .LM26:
962 0062 8CE0 ldi r24,lo8(12)
963 0064 8BBB out 59-0x20,r24
97:SPLC051.c **** DDRB=0x00; //定义为输入口,数据端口
965 .LM27:
966 0066 17BA out 55-0x20,__zero_reg__
98:SPLC051.c **** temp_data=PORTB;
968 .LM28:
969 0068 88B3 in r24,56-0x20
99:SPLC051.c **** PORTA|=(1<<CS1); //取消片选
971 .LM29:
972 006a D89A sbi 59-0x20,0
100:SPLC051.c **** return temp_data;
101:SPLC051.c **** }
974 .LM30:
975 006c 9927 clr r25
976 /* epilogue: frame size=0 */
977 006e 0895 ret
978 /* epilogue end (size=1) */
979 /* function F_SPLC501_Read_Data size 7 (6) */
981 .Lscope4:
983 .global F_SPLC501_Read_Status
985 F_SPLC501_Read_Status:
102:SPLC051.c **** //***************************************************************************//
103:SPLC051.c **** //程序:F_SPLC501_Read_Status()
104:SPLC051.c **** //描述:从SPLC501里读状态字数据 C语言调用
105:SPLC051.c **** //参数:输出传送的数据
106:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
107:SPLC051.c **** //注意A0=0,EP=0,RW=1,Cs=0
108:SPLC051.c **** //***************************************************************************//
109:SPLC051.c **** unsigned int F_SPLC501_Read_Status(void)
110:SPLC051.c **** {
987 .LM31:
988 /* prologue: frame size=0 */
989 /* prologue end (size=0) */
111:SPLC051.c **** unsigned int temp_status;
112:SPLC051.c **** PORTA=(0<<A0)|(0<<EP)|(1<<RW)|(0<<CS1); //片选LCD,使能读状态
991 .LM32:
992 0070 88E0 ldi r24,lo8(8)
993 0072 8BBB out 59-0x20,r24
113:SPLC051.c **** DDRB=0x00; //定义为输入口,数据端口
995 .LM33:
996 0074 17BA out 55-0x20,__zero_reg__
114:SPLC051.c **** temp_status=PORTB;
998 .LM34:
999 0076 88B3 in r24,56-0x20
115:SPLC051.c **** PORTA|=(1<<CS1); //取消片选
1001 .LM35:
1002 0078 D89A sbi 59-0x20,0
116:SPLC051.c **** return temp_status;
117:SPLC051.c **** }
1004 .LM36:
1005 007a 9927 clr r25
1006 /* epilogue: frame size=0 */
1007 007c 0895 ret
1008 /* epilogue end (size=1) */
1009 /* function F_SPLC501_Read_Status size 7 (6) */
1011 .Lscope5:
1014 .global F_LCD_ONOFF
1016 F_LCD_ONOFF:
118:SPLC051.c **** //***************************************************************************//
119:SPLC051.c **** //程序:F_LCD_ON_OFF(unsigned int SetCom)
120:SPLC051.c **** //描述:液晶开关函数 C语言调用
121:SPLC051.c **** //参数:unsigned int SetCom SetCom=0:LCD Off SetCom!=0:LCD On
122:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
123:SPLC051.c **** //***************************************************************************//
124:SPLC051.c **** void F_LCD_ONOFF(unsigned int SetCom)
125:SPLC051.c **** {
1018 .LM37:
1019 /* prologue: frame size=0 */
1020 /* prologue end (size=0) */
126:SPLC051.c **** if(SetCom) //ON LCD
1022 .LM38:
1023 007e 892B or r24,r25
1024 0080 19F0 breq .L38
127:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ON);
1026 .LM39:
1027 0082 8FEA ldi r24,lo8(175)
1028 0084 90E0 ldi r25,hi8(175)
1029 0086 02C0 rjmp .L40
1030 .L38:
128:SPLC051.c **** else //OFF LCD
129:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_OFF);
1032 .LM40:
1033 0088 8EEA ldi r24,lo8(174)
1034 008a 90E0 ldi r25,hi8(174)
1035 .L40:
1036 008c 0E94 0000 call F_SPLC501_Write_Com
1037 0090 0895 ret
1038 /* epilogue: frame size=0 */
1039 /* epilogue: noreturn */
1040 /* epilogue end (size=0) */
1041 /* function F_LCD_ONOFF size 10 (10) */
1043 .Lscope6:
1046 .global LCD501_Init
1048 LCD501_Init:
130:SPLC051.c **** }
131:SPLC051.c ****
132:SPLC051.c **** //***************************************************************************//
133:SPLC051.c **** //程序:LCD501_Init(unsigned int InitialData)
134:SPLC051.c **** //描述:液晶显示初始化函数 C语言调用
135:SPLC051.c **** //参数:unsigned int InitialData 初始化显示的字
136:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
137:SPLC051.c **** //***************************************************************************//
138:SPLC051.c **** void LCD501_Init(unsigned int InitialData)
139:SPLC051.c **** {
1050 .LM41:
1051 /* prologue: frame size=0 */
1052 0092 AF92 push r10
1053 0094 BF92 push r11
1054 0096 CF92 push r12
1055 0098 DF92 push r13
1056 009a EF92 push r14
1057 009c FF92 push r15
1058 009e 0F93 push r16
1059 00a0 1F93 push r17
1060 00a2 CF93 push r28
1061 00a4 DF93 push r29
1062 /* prologue end (size=10) */
1063 00a6 5C01 movw r10,r24
140:SPLC051.c **** unsigned int i,j;
141:SPLC051.c **** F_SPLC501_Initial_IO(); //Initial LCD IO
1065 .LM42:
1066 00a8 0E94 0000 call F_SPLC501_Initial_IO
142:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ON); //LCD On
1068 .LM43:
1069 00ac 8FEA ldi r24,lo8(175)
1070 00ae 90E0 ldi r25,hi8(175)
1071 00b0 0E94 0000 call F_SPLC501_Write_Com
143:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_POWER_ALL); //设置上电控制模式
1073 .LM44:
1074 00b4 8FE2 ldi r24,lo8(47)
1075 00b6 90E0 ldi r25,hi8(47)
1076 00b8 0E94 0000 call F_SPLC501_Write_Com
144:SPLC051.c ****
145:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ELE_VOL); //电量设置模式(显示亮度)
1078 .LM45:
1079 00bc 81E8 ldi r24,lo8(129)
1080 00be 90E0 ldi r25,hi8(129)
1081 00c0 0E94 0000 call F_SPLC501_Write_Com
146:SPLC051.c **** F_SPLC501_Write_Com(0x12); //指令数据0x00~0x3f
1083 .LM46:
1084 00c4 82E1 ldi r24,lo8(18)
1085 00c6 90E0 ldi r25,hi8(18)
1086 00c8 0E94 0000 call F_SPLC501_Write_Com
147:SPLC051.c ****
148:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_VDD_SET); //V5内部电压调节电阻设置
1088 .LM47:
1089 00cc 85E2 ldi r24,lo8(37)
1090 00ce 90E0 ldi r25,hi8(37)
1091 00d0 0E94 0000 call F_SPLC501_Write_Com
149:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_VDD); //LCD偏压设置,V3时选
1093 .LM48:
1094 00d4 82EA ldi r24,lo8(162)
1095 00d6 90E0 ldi r25,hi8(162)
1096 00d8 0E94 0000 call F_SPLC501_Write_Com
150:SPLC051.c ****
151:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_COM_NOR); //Com 扫描方式设置
1098 .LM49:
1099 00dc 80EC ldi r24,lo8(192)
1100 00de 90E0 ldi r25,hi8(192)
1101 00e0 0E94 0000 call F_SPLC501_Write_Com
152:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_SEG_REV); //Segment方向选择
1103 .LM50:
1104 00e4 81EA ldi r24,lo8(161)
1105 00e6 90E0 ldi r25,hi8(161)
1106 00e8 0E94 0000 call F_SPLC501_Write_Com
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -