⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splc051.lst

📁 Atmega16+SPCL051液晶驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -