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

📄 m128.lst

📁 用SL811做USB主机的源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    1231 E083      LDI	R24,3
    1232 2EE8      MOV	R14,R24
    1233 C00F      RJMP	0x1243
(0110) 					 {*p++=~char24x24[z++];}
    1234 0116      MOVW	R2,R12
    1235 01C1      MOVW	R24,R2
    1236 9601      ADIW	R24,1
    1237 016C      MOVW	R12,R24
    1238 E98A      LDI	R24,0x9A
    1239 E09B      LDI	R25,0xB
    123A 01F1      MOVW	R30,R2
    123B 0FE8      ADD	R30,R24
    123C 1FF9      ADC	R31,R25
    123D 91E4      LPM	R30,0(Z)
    123E 95E0      COM	R30
    123F 01DB      MOVW	R26,R22
    1240 93ED      ST	R30,X+
    1241 01BD      MOVW	R22,R26
    1242 94EA      DEC	R14
    1243 2422      CLR	R2
    1244 142E      CP	R2,R14
    1245 F370      BCS	0x1234
(0111) 				}
(0112) 	   y++;
    1246 840C      LDD	R0,12+Y
    1247 9403      INC	R0
    1248 860C      STD	R0,12+Y
(0113) 	   p=&ADDR_0+y*bytes_1line+x;
    1249 E480      LDI	R24,0x40
    124A 9D80      MUL	R24,R0
    124B 01C0      MOVW	R24,R0
    124C 856A      LDD	R22,10+Y
    124D 2777      CLR	R23
    124E 0F68      ADD	R22,R24
    124F 1F79      ADC	R23,R25
    1250 954A      DEC	R20
    1251 2422      CLR	R2
    1252 1624      CP	R2,R20
    1253 F408      BCC	0x1255
    1254 CFB4      RJMP	0x1209
(0114) 	  }
(0115)   A17_A16_low
    1255 91800062  LDS	R24,0x62
    1257 7F8C      ANDI	R24,0xFC
    1258 93800062  STS	0x62,R24
(0116) }
    125A 940E523A  CALL	pop_gset5
    125C 9624      ADIW	R28,4
    125D 9508      RET
_picture:
  m                    --> Y+1
  i                    --> R22
  q                    --> R14
  p                    --> R20
  z                    --> R10
  j                    --> R6
  b                    --> Y+12
  a                    --> R12
  y                    --> R4
  x                    --> R16
    125E 940E522D  CALL	push_gset5
    1260 2E42      MOV	R4,R18
    1261 84CA      LDD	R12,10+Y
(0117)   
(0118) void picture(unsigned char x,unsigned  char y,unsigned char a,unsigned char b)
(0119) { unsigned char *p,*q,i,j,m;
(0120)   unsigned int z=0;
    1262 24AA      CLR	R10
    1263 24BB      CLR	R11
(0121) 
(0122)   p=&ADDR_0+y*bytes_1line+x;			//起始定位
    1264 E480      LDI	R24,0x40
    1265 9D84      MUL	R24,R4
    1266 01C0      MOVW	R24,R0
    1267 2F40      MOV	R20,R16
    1268 2755      CLR	R21
    1269 0F48      ADD	R20,R24
    126A 1F59      ADC	R21,R25
(0123)   A17_high	 //选择外部显示Ram
    126B 91800062  LDS	R24,0x62
    126D 6082      ORI	R24,2
    126E 93800062  STS	0x62,R24
(0124) 	   
(0125) 	   for (i=b;i>0;i--)
    1270 856C      LDD	R22,12+Y
    1271 C044      RJMP	0x12B6
(0126) 	   	   {if (y<lines_4kSram)
    1272 2D84      MOV	R24,R4
    1273 3484      CPI	R24,0x44
    1274 F520      BCC	0x1299
(0127) 		   	   		{SRAM_32k
    1275 9180006C  LDS	R24,0x6C
    1277 6081      ORI	R24,1
    1278 9380006C  STS	0x6C,R24
    127A 98AF      CBI	P15,7
(0128) 					q=p+32*1024;
    127B 01CA      MOVW	R24,R20
    127C 5080      SUBI	R24,0
    127D 4890      SBCI	R25,0x80
    127E 017C      MOVW	R14,R24
(0129) 					for (j=a;j>0;j--)
    127F 2C6C      MOV	R6,R12
    1280 C00F      RJMP	0x1290
(0130) 					 	{*q++=~pictureTab[z++];}
    1281 0115      MOVW	R2,R10
    1282 01C1      MOVW	R24,R2
    1283 9601      ADIW	R24,1
    1284 015C      MOVW	R10,R24
    1285 EF8A      LDI	R24,0xFA
    1286 E09E      LDI	R25,0xE
    1287 01F1      MOVW	R30,R2
    1288 0FE8      ADD	R30,R24
    1289 1FF9      ADC	R31,R25
    128A 91E4      LPM	R30,0(Z)
    128B 95E0      COM	R30
    128C 01D7      MOVW	R26,R14
    128D 93ED      ST	R30,X+
    128E 017D      MOVW	R14,R26
    128F 946A      DEC	R6
    1290 2422      CLR	R2
    1291 1426      CP	R2,R6
    1292 F370      BCS	0x1281
(0131) 					SRAM_64k
    1293 9180006C  LDS	R24,0x6C
    1295 7F8E      ANDI	R24,0xFE
    1296 9380006C  STS	0x6C,R24
(0132) 					}
    1298 C014      RJMP	0x12AD
(0133) 			else 	 {for (j=a;j>0;j--)
    1299 2C6C      MOV	R6,R12
    129A C00F      RJMP	0x12AA
(0134) 					 	  {*p++=~pictureTab[z++];}
    129B 0115      MOVW	R2,R10
    129C 01C1      MOVW	R24,R2
    129D 9601      ADIW	R24,1
    129E 015C      MOVW	R10,R24
    129F EF8A      LDI	R24,0xFA
    12A0 E09E      LDI	R25,0xE
    12A1 01F1      MOVW	R30,R2
    12A2 0FE8      ADD	R30,R24
    12A3 1FF9      ADC	R31,R25
    12A4 91E4      LPM	R30,0(Z)
    12A5 95E0      COM	R30
    12A6 01DA      MOVW	R26,R20
    12A7 93ED      ST	R30,X+
    12A8 01AD      MOVW	R20,R26
    12A9 946A      DEC	R6
    12AA 2422      CLR	R2
    12AB 1426      CP	R2,R6
    12AC F370      BCS	0x129B
(0135) 				 	 }
(0136) 			y++;
    12AD 9443      INC	R4
(0137) 	   		p=&ADDR_0+y*bytes_1line+x;
    12AE E480      LDI	R24,0x40
    12AF 9D84      MUL	R24,R4
    12B0 01C0      MOVW	R24,R0
    12B1 2F40      MOV	R20,R16
    12B2 2755      CLR	R21
    12B3 0F48      ADD	R20,R24
    12B4 1F59      ADC	R21,R25
    12B5 956A      DEC	R22
    12B6 2422      CLR	R2
    12B7 1626      CP	R2,R22
    12B8 F408      BCC	0x12BA
    12B9 CFB8      RJMP	0x1272
(0138) 	  		}
(0139)   	A17_A16_low
    12BA 91800062  LDS	R24,0x62
    12BC 7F8C      ANDI	R24,0xFC
    12BD 93800062  STS	0x62,R24
(0140) }
    12BF 940E523A  CALL	pop_gset5
    12C1 9508      RET
_Line:
  q                    --> R12
  data                 --> R20
  p                    --> R22
  i                    --> R10
  z                    --> Y+12
  y                    --> R14
  x                    --> R18
  n                    --> R16
    12C2 940E522D  CALL	push_gset5
    12C4 84EA      LDD	R14,10+Y
(0141) 
(0142) void Line(unsigned char n,unsigned char x,unsigned char y,unsigned char z)
(0143) {	unsigned char i,data,*p,*q;
(0144) 	
(0145)   p=&ADDR_0+y*bytes_1line+x;			//起始定位
    12C5 E480      LDI	R24,0x40
    12C6 9D8E      MUL	R24,R14
    12C7 01C0      MOVW	R24,R0
    12C8 2F62      MOV	R22,R18
    12C9 2777      CLR	R23
    12CA 0F68      ADD	R22,R24
    12CB 1F79      ADC	R23,R25
(0146)   q=p+32*1024;
    12CC 01CB      MOVW	R24,R22
    12CD 5080      SUBI	R24,0
    12CE 4890      SBCI	R25,0x80
    12CF 016C      MOVW	R12,R24
(0147)   A17_high	 //选择外部显示Ram
    12D0 91800062  LDS	R24,0x62
    12D2 6082      ORI	R24,2
    12D3 93800062  STS	0x62,R24
(0148) 
(0149) 	if (n==1)
    12D5 3001      CPI	R16,1
    12D6 F539      BNE	0x12FE
(0150) 	   //竖线
(0151) 	   {data=0xfe;
    12D7 EF4E      LDI	R20,0xFE
(0152) 	   for (i=z;i>0;i--)
    12D8 84AC      LDD	R10,12+Y
    12D9 C020      RJMP	0x12FA
(0153)   	   		{if (y<lines_4kSram)
    12DA 2D8E      MOV	R24,R14
    12DB 3484      CPI	R24,0x44
    12DC F490      BCC	0x12EF
(0154) 	  	  		{SRAM_32k
    12DD 9180006C  LDS	R24,0x6C
    12DF 6081      ORI	R24,1
    12E0 9380006C  STS	0x6C,R24
    12E2 98AF      CBI	P15,7
(0155) 				q=p+32*1024;
    12E3 01CB      MOVW	R24,R22
    12E4 5080      SUBI	R24,0
    12E5 4890      SBCI	R25,0x80
    12E6 016C      MOVW	R12,R24
(0156) 				*q=data;
    12E7 01FC      MOVW	R30,R24
    12E8 8340      STD	R20,0+Z
(0157) 				SRAM_64k
    12E9 9180006C  LDS	R24,0x6C
    12EB 7F8E      ANDI	R24,0xFE
    12EC 9380006C  STS	0x6C,R24
(0158) 				}
    12EE C002      RJMP	0x12F1
(0159) 			else 	*p=data;
    12EF 01FB      MOVW	R30,R22
    12F0 8340      STD	R20,0+Z
(0160) 	   		y++;
    12F1 94E3      INC	R14
(0161) 	   		p=&ADDR_0+y*bytes_1line+x;
    12F2 E480      LDI	R24,0x40
    12F3 9D8E      MUL	R24,R14
    12F4 01C0      MOVW	R24,R0
    12F5 2F62      MOV	R22,R18
    12F6 2777      CLR	R23
    12F7 0F68      ADD	R22,R24
    12F8 1F79      ADC	R23,R25
    12F9 94AA      DEC	R10
    12FA 2422      CLR	R2
    12FB 142A      CP	R2,R10
    12FC F2E8      BCS	0x12DA
(0162) 			}
(0163) 	  }
    12FD C022      RJMP	0x1320
(0164) 	else //横线 
(0165) 		{data=0x00;
    12FE 2744      CLR	R20
(0166) 		if (y<lines_4kSram)
    12FF 2D8E      MOV	R24,R14
    1300 3484      CPI	R24,0x44
    1301 F4A8      BCC	0x1317
(0167) 			 	 {SRAM_32k
    1302 9180006C  LDS	R24,0x6C
    1304 6081      ORI	R24,1
    1305 9380006C  STS	0x6C,R24
    1307 98AF      CBI	P15,7
(0168) 				 for (i=z;i>0;i--) *q++=data;
    1308 84AC      LDD	R10,12+Y
    1309 C004      RJMP	0x130E
    130A 01F6      MOVW	R30,R12
    130B 9341      ST	R20,Z+
    130C 016F      MOVW	R12,R30
    130D 94AA      DEC	R10
    130E 2422      CLR	R2
    130F 142A      CP	R2,R10
    1310 F3C8      BCS	0x130A
(0169) 				 SRAM_64k}
    1311 9180006C  LDS	R24,0x6C
    1313 7F8E      ANDI	R24,0xFE
    1314 9380006C  STS	0x6C,R24
    1316 C009      RJMP	0x1320
(0170) 		else 	 for (i=z;i>0;i--) *p++=data;
    1317 84AC      LDD	R10,12+Y
    1318 C004      RJMP	0x131D
    1319 01FB      MOVW	R30,R22
    131A 9341      ST	R20,Z+
    131B 01BF      MOVW	R22,R30
    131C 94AA      DEC	R10
    131D 2422      CLR	R2
    131E 142A      CP	R2,R10
    131F F3C8      BCS	0x1319
(0171) 		}
(0172)   A17_A16_low
    1320 91800062  LDS	R24,0x62
    1322 7F8C      ANDI	R24,0xFC
    1323 93800062  STS	0x62,R24
(0173) }
    1325 940E523A  CALL	pop_gset5
    1327 9508      RET
(0174) 
(0175) void movx(unsigned char *address,unsigned char data)
(0176) {if (address>=(&EXTERN_0))
_movx:
  data                 --> R18
  address              --> R16
    1328 3000      CPI	R16,0
    1329 E1E1      LDI	R30,0x11
    132A 071E      CPC	R17,R30
    132B F018      BCS	0x132F
(0177) 		*address=data;
    132C 01F8      MOVW	R30,R16
    132D 8320      STD	R18,0+Z
    132E C00F      RJMP	0x133E
(0178) 	else {		SRAM_32k
    132F 9180006C  LDS	R24,0x6C
    1331 6081      ORI	R24,1
    1332 9380006C  STS	0x6C,R24
    1334 98AF      CBI	P15,7
(0179) 				address=address+32*1024;
    1335 5000      SUBI	R16,0
    1336 4810      SBCI	R17,0x80
(0180) 				*address=data;
    1337 01F8      MOVW	R30,R16
    1338 8320      STD	R18,0+Z
(0181) 				SRAM_64k}
    1339 9180006C  LDS	R24,0x6C
    133B 7F8E      ANDI	R24,0xFE
    133C 9380006C  STS	0x6C,R24
(0182) }
    133E 9508      RET
_kuang:
  i                    --> R22
  p                    --> R10
  j                    --> R14
  b                    --> R12
  a                    --> Y+14
  y                    --> Y+12
  x                    --> Y+10
    133F 940E51D7  CALL	push_arg4
    1341 940E522D  CALL	push_gset5
    1343 88C8      LDD	R12,16+Y
(0183) void kuang(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
(0184) {unsigned char i,j,*p;
(0185) 	
(0186)   p=&ADDR_0+y*bytes_1line+x;			//起始定位
    1344 E480      LDI	R24,0x40
    1345 840C      LDD	R0,12+Y
    1346 9D80      MUL	R24,R0
    1347 01C0      MOVW	R24,R0
    1348 84AA      LDD	R10,10+Y
    1349 24BB      CLR	R11
    134A 0EA8      ADD	R10,R24
    134B 1EB9      ADC	R11,R25
(0187)   A17_high	 //选择外部显示Ram
    134C 91800062  LDS	R24,0x62
    134E 6082      ORI	R24,2
    134F 93800062  STS	0x62,R24
(0188) 
(0189)  	 for(i=0;i<b;i++)
    1351 2766      CLR	R22
    1352 C0CB      RJMP	0x141E
(0190) 	    {if (i==(b-1))
    1353 2D8C      MOV	R24,R12
    1354 5081      SUBI	R24,1
    1355 1768      CP	R22,R24
    1356 F529      BNE	0x137C
(0191) 			{//边框的最后一行
(0192) 			 for (j=0;j<a;j++)
    1357 24EE      CLR	R14
    1358 C015      RJMP	0x136E
(0193) 			 	 {if (j==a-1)
    1359 858E      LDD	R24,14+Y
    135A 5081      SUBI	R24,1
    135B 16E8      CP	R14,R24
    135C F421      BNE	0x1361
(0194) 				 	 {movx(p,1);}
    135D E021      LDI	R18,1
    135E 0185      MOVW	R16,R10
    135F DFC8      RCALL	_movx
    1360 C009      RJMP	0x136A
(0195) 					 else if (j==0)
    1361 20EE      TST	R14
    1362 F421      BNE	0x1367
(0196) 					 	  {movx(p,0xc0);}
    1363 EC20      LDI	R18,0xC0
    1364 0185      MOVW	R16,R10
    1365 DFC2      RCALL	_movx
    1366 C003      RJMP	0x136A
(0197) 						  else {movx(p,0);}				 
    1367 2722      CLR	R18
    1368 0185      MOVW	R16,R10
    1369 DFBE      RCALL	_movx
(0198) 				 p++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -