📄 splc051.lst
字号:
153:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ALL_LOW); //全屏点亮/变暗指令
1108 .LM51:
1109 00ec 84EA ldi r24,lo8(164)
1110 00ee 90E0 ldi r25,hi8(164)
1111 00f0 0E94 0000 call F_SPLC501_Write_Com
154:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ALL_NOR); //正向反向显示控制指令
1113 .LM52:
1114 00f4 86EA ldi r24,lo8(166)
1115 00f6 90E0 ldi r25,hi8(166)
1116 00f8 0E94 0000 call F_SPLC501_Write_Com
155:SPLC051.c ****
156:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_STATIC_OFF); //关闭静态指示器
1118 .LM53:
1119 00fc 8CEA ldi r24,lo8(172)
1120 00fe 90E0 ldi r25,hi8(172)
1121 0100 0E94 0000 call F_SPLC501_Write_Com
157:SPLC051.c **** F_SPLC501_Write_Com(0x00); //指令数据
1123 .LM54:
1124 0104 80E0 ldi r24,lo8(0)
1125 0106 90E0 ldi r25,hi8(0)
1126 0108 0E94 0000 call F_SPLC501_Write_Com
158:SPLC051.c ****
159:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+0); //设置显示起始行对应RAM
1128 .LM55:
1129 010c 80E4 ldi r24,lo8(64)
1130 010e 90E0 ldi r25,hi8(64)
1131 0110 0E94 0000 call F_SPLC501_Write_Com
160:SPLC051.c **** for(i=0;i<8;i++) //往LCD中填充初始化的显示数据
1133 .LM56:
1134 0114 C0E0 ldi r28,lo8(0)
1135 0116 D0E0 ldi r29,hi8(0)
1136 .L60:
161:SPLC051.c **** {
162:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_COL_PAGE+i);
1138 .LM57:
1139 0118 CE01 movw r24,r28
1140 011a 8055 subi r24,lo8(-(176))
1141 011c 9F4F sbci r25,hi8(-(176))
1142 011e 0E94 0000 call F_SPLC501_Write_Com
163:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_COL_LINE_LOW);
1144 .LM58:
1145 0122 84E0 ldi r24,lo8(4)
1146 0124 90E0 ldi r25,hi8(4)
1147 0126 0E94 0000 call F_SPLC501_Write_Com
164:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_COL_LINE_HIG);
1149 .LM59:
1150 012a 80E1 ldi r24,lo8(16)
1151 012c 90E0 ldi r25,hi8(16)
1152 012e 0E94 0000 call F_SPLC501_Write_Com
165:SPLC051.c **** for(j=0;j<128;j++)
1154 .LM60:
1155 0132 EE24 clr r14
1156 0134 FF24 clr r15
1157 0136 00E0 ldi r16,lo8(Welcome_word+176)
1158 0138 10E0 ldi r17,hi8(Welcome_word+176)
1159 013a 30E5 ldi r19,lo8(-176)
1160 013c C32E mov r12,r19
1161 013e 3FEF ldi r19,hi8(-176)
1162 0140 D32E mov r13,r19
1163 0142 C00E add r12,r16
1164 0144 D11E adc r13,r17
1165 .L59:
166:SPLC051.c **** {
167:SPLC051.c **** switch(i)
1167 .LM61:
1168 0146 C230 cpi r28,2
1169 0148 D105 cpc r29,__zero_reg__
1170 014a 81F0 breq .L50
1171 014c C330 cpi r28,3
1172 014e D105 cpc r29,__zero_reg__
1173 0150 20F4 brsh .L58
1174 0152 C130 cpi r28,1
1175 0154 D105 cpc r29,__zero_reg__
1176 0156 41F0 breq .L49
1177 0158 1DC0 rjmp .L57
1178 .L58:
1179 015a C430 cpi r28,4
1180 015c D105 cpc r29,__zero_reg__
1181 015e 41F0 breq .L51
1182 0160 C530 cpi r28,5
1183 0162 D105 cpc r29,__zero_reg__
1184 0164 69F0 breq .L54
1185 0166 16C0 rjmp .L57
1186 .L49:
168:SPLC051.c **** {
169:SPLC051.c **** case 1:
170:SPLC051.c **** F_SPLC501_Write_Data(Welcome_word[j]);//Welcome_word
1188 .LM62:
1189 0168 F601 movw r30,r12
1190 016a 07C0 rjmp .L66
1191 .L50:
171:SPLC051.c **** break;
172:SPLC051.c **** case 2:
173:SPLC051.c **** F_SPLC501_Write_Data((Welcome_word[j]>>8));//Welcome_word
1193 .LM63:
1194 016c F601 movw r30,r12
1195 016e 0DC0 rjmp .L67
1196 .L51:
174:SPLC051.c **** break;
175:SPLC051.c **** case 4:
176:SPLC051.c **** if(j>=40 && j<88)
1198 .LM64:
1199 0170 C701 movw r24,r14
1200 0172 8897 sbiw r24,40
1201 0174 C097 sbiw r24,48
1202 0176 70F4 brsh .L57
177:SPLC051.c **** F_SPLC501_Write_Data(Welcome_word[128+j-40]);//Welcome_word
1204 .LM65:
1205 0178 F801 movw r30,r16
1206 .L66:
1207 017a 8081 ld r24,Z
1208 017c 9181 ldd r25,Z+1
1209 017e 0BC0 rjmp .L65
1210 .L54:
178:SPLC051.c **** else
179:SPLC051.c **** F_SPLC501_Write_Data(InitialData);
180:SPLC051.c **** break;
181:SPLC051.c **** case 5:
182:SPLC051.c **** if(j>=40 && j<88)
1212 .LM66:
1213 0180 C701 movw r24,r14
1214 0182 8897 sbiw r24,40
1215 0184 C097 sbiw r24,48
1216 0186 30F4 brsh .L57
183:SPLC051.c **** F_SPLC501_Write_Data((Welcome_word[128+j-40]>>8));//Welcome_word
1218 .LM67:
1219 0188 F801 movw r30,r16
1220 .L67:
1221 018a 8081 ld r24,Z
1222 018c 9181 ldd r25,Z+1
1223 018e 892F mov r24,r25
1224 0190 9927 clr r25
1225 0192 01C0 rjmp .L65
1226 .L57:
184:SPLC051.c **** else
185:SPLC051.c **** F_SPLC501_Write_Data(InitialData);
186:SPLC051.c **** break;
187:SPLC051.c **** default:
188:SPLC051.c **** F_SPLC501_Write_Data(InitialData);
1228 .LM68:
1229 0194 C501 movw r24,r10
1230 .L65:
1231 0196 0E94 0000 call F_SPLC501_Write_Data
1233 .LM69:
1234 019a 0894 sec
1235 019c E11C adc r14,__zero_reg__
1236 019e F11C adc r15,__zero_reg__
1237 01a0 82E0 ldi r24,lo8(2)
1238 01a2 90E0 ldi r25,hi8(2)
1239 01a4 C80E add r12,r24
1240 01a6 D91E adc r13,r25
1241 01a8 080F add r16,r24
1242 01aa 191F adc r17,r25
1243 01ac 90E8 ldi r25,lo8(128)
1244 01ae E916 cp r14,r25
1245 01b0 F104 cpc r15,__zero_reg__
1246 01b2 48F2 brlo .L59
1248 .LM70:
1249 01b4 2196 adiw r28,1
1250 01b6 C830 cpi r28,8
1251 01b8 D105 cpc r29,__zero_reg__
1252 01ba 08F4 brsh .+2
1253 01bc ADCF rjmp .L60
189:SPLC051.c **** break;
190:SPLC051.c **** }
191:SPLC051.c **** }
192:SPLC051.c **** }
193:SPLC051.c **** F_SPLC501_Write_Com(0xee);
1255 .LM71:
1256 01be 8EEE ldi r24,lo8(238)
1257 01c0 90E0 ldi r25,hi8(238)
1258 01c2 0E94 0000 call F_SPLC501_Write_Com
194:SPLC051.c **** CurPaintMode = 0;
1260 .LM72:
1261 01c6 1092 0000 sts (CurPaintMode)+1,__zero_reg__
1262 01ca 1092 0000 sts CurPaintMode,__zero_reg__
195:SPLC051.c **** CurPowerMode = 1; //now is normal mode
1264 .LM73:
1265 01ce 21E0 ldi r18,lo8(1)
1266 01d0 30E0 ldi r19,hi8(1)
1267 01d2 3093 0000 sts (CurPowerMode)+1,r19
1268 01d6 2093 0000 sts CurPowerMode,r18
196:SPLC051.c **** CurLCDSet = 8;
1270 .LM74:
1271 01da 88E0 ldi r24,lo8(8)
1272 01dc 90E0 ldi r25,hi8(8)
1273 01de 9093 0000 sts (CurLCDSet)+1,r25
1274 01e2 8093 0000 sts CurLCDSet,r24
197:SPLC051.c **** CurScroll = 0;
1276 .LM75:
1277 01e6 1092 0000 sts (CurScroll)+1,__zero_reg__
1278 01ea 1092 0000 sts CurScroll,__zero_reg__
198:SPLC051.c **** CurScrMode = 1;
1280 .LM76:
1281 01ee 3093 0000 sts (CurScrMode)+1,r19
1282 01f2 2093 0000 sts CurScrMode,r18
199:SPLC051.c **** CurASCIIFont = 1;
1284 .LM77:
1285 01f6 3093 0000 sts (CurASCIIFont)+1,r19
1286 01fa 2093 0000 sts CurASCIIFont,r18
1287 /* epilogue: frame size=0 */
1288 01fe DF91 pop r29
1289 0200 CF91 pop r28
1290 0202 1F91 pop r17
1291 0204 0F91 pop r16
1292 0206 FF90 pop r15
1293 0208 EF90 pop r14
1294 020a DF90 pop r13
1295 020c CF90 pop r12
1296 020e BF90 pop r11
1297 0210 AF90 pop r10
1298 0212 0895 ret
1299 /* epilogue end (size=11) */
1300 /* function LCD501_Init size 195 (174) */
1306 .Lscope7:
1309 .global LCD501_Power
1311 LCD501_Power:
200:SPLC051.c **** }
201:SPLC051.c **** //======================================================
202:SPLC051.c **** // 程序: void LCD501_Power(unsigned int ModeCode)
203:SPLC051.c **** // 描述: SPLC501电源管理,进入参数指定的模式,而当LCD在SLEEP和STDBY模式下时,
204:SPLC051.c **** // 调用该函数会使LCD唤醒
205:SPLC051.c **** // 参数: ModeCode - 可以是下列参数之一:
206:SPLC051.c **** // 1 PWR_ON: 正常工作模式
207:SPLC051.c **** // 2 PWR_SLEEP: 睡眠模式,屏幕不显示,但内容在唤醒后仍保留
208:SPLC051.c **** // 3 PWR_STDBY: 待机模式,比SLEEP省电,但显示内容会丢失
209:SPLC051.c **** // 0 PWR_OFF: 关闭电源
210:SPLC051.c **** // 声明: 手心 20070117 AVRGCC
211:SPLC051.c **** //======================================================
212:SPLC051.c **** void LCD501_Power(unsigned int ModeCode)
213:SPLC051.c **** {
1313 .LM78:
1314 /* prologue: frame size=0 */
1315 0214 CF93 push r28
1316 0216 DF93 push r29
1317 /* prologue end (size=2) */
1318 0218 EC01 movw r28,r24
214:SPLC051.c **** if(CurPowerMode == PWR_SLEEP)
1320 .LM79:
1321 021a 8091 0000 lds r24,CurPowerMode
1322 021e 9091 0000 lds r25,(CurPowerMode)+1
1323 0222 8230 cpi r24,2
1324 0224 9105 cpc r25,__zero_reg__
1325 0226 59F4 brne .L69
215:SPLC051.c **** {
216:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ALL_LOW);
1327 .LM80:
1328 0228 84EA ldi r24,lo8(164)
1329 022a 90E0 ldi r25,hi8(164)
1330 022c 0E94 0000 call F_SPLC501_Write_Com
217:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_STATIC_ON);
1332 .LM81:
1333 0230 8DEA ldi r24,lo8(173)
1334 0232 90E0 ldi r25,hi8(173)
1335 0234 0E94 0000 call F_SPLC501_Write_Com
218:SPLC051.c **** F_SPLC501_Write_Com(0x0003);
1337 .LM82:
1338 0238 83E0 ldi r24,lo8(3)
1339 023a 90E0 ldi r25,hi8(3)
1340 023c 08C0 rjmp .L80
1341 .L69:
219:SPLC051.c **** CurPowerMode = 1;
220:SPLC051.c **** }
221:SPLC051.c **** else if(CurPowerMode == PWR_STDBY)
1343 .LM83:
1344 023e 0397 sbiw r24,3
1345 0240 79F4 brne .L71
222:SPLC051.c **** {
223:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ON);
1347 .LM84:
1348 0242 8FEA ldi r24,lo8(175)
1349 0244 90E0 ldi r25,hi8(175)
1350 0246 0E94 0000 call F_SPLC501_Write_Com
224:SPLC051.c **** F_SPLC501_Write_Com(M_LCD_ALL_LOW);
1352 .LM85:
1353 024a 84EA ldi r24,lo8(164)
1354 024c 90E0 ldi r25,hi8(164)
1355 .L80:
1356 024e 0E94 0000 call F_SPLC501_Write_Com
225:SPLC051.c **** CurPowerMode = 1;
1358 .LM86:
1359 0252 81E0 ldi r24,lo8(1)
1360 0254 90E0 ldi r25,hi8(1)
1361 0256 9093 0000 sts (CurPowerMode)+1,r25
1362 025a 8093 0000 sts CurPowerMode,r24
1363 025e 2EC0 rjmp .L68
1364 .L71:
226:SPLC051.c **** }
227:SPLC051.c **** else{
228:SPLC051.c **** switch(ModeCode)
1366 .LM87:
1367 0260 C230 cpi r28,2
1368 0262 D105 cpc r29,__zero_reg__
1369 0264 71F0 breq .L75
1370 0266 C330 cpi r28,3
1371 0268 D105 cpc r29,__zero_reg__
1372 026a 20F4 brsh .L78
1373 026c C130 cpi r28,1
1374 026e D105 cpc r29,__zero_reg__
1375 0270 29F0 breq .L74
1376 0272 1CC0 rjmp .L77
1377 .L78:
1378 0274 C330 cpi r28,3
1379 0276 D105 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -