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

📄 prj1.lst

📁 网卡驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
     265 9731      SBIW	R30,1
     266 8180      LDD	R24,Z+0
     267 3880      CPI	R24,0x80
     268 F420      BCC	0x026D
(0169)       {
(0170)          LCD_WriteData(' '); 
     269 E200      LDI	R16,0x20
     26A DF83      RCALL	_LCD_WriteData
(0171)          j++;
     26B 9543      INC	R20
(0172)       }
     26C C005      RJMP	0x0272
(0173)       else
(0174)       {	
(0175)          LCD_WriteData(*pstr++);
     26D 01FB      MOVW	R30,R22
     26E 9101      LD	R16,Z+
     26F 01BF      MOVW	R22,R30
     270 DF7D      RCALL	_LCD_WriteData
(0176)          j++;
     271 9543      INC	R20
     272 01FB      MOVW	R30,R22
     273 8020      LDD	R2,Z+0
     274 2022      TST	R2
     275 F019      BEQ	0x0279
     276 3244      CPI	R20,0x24
     277 F408      BCC	0x0279
     278 CFD4      RJMP	0x024D
(0177)       }
(0178)    }
(0179) 	 
(0180)    Delay_nms(1); //2006.11.19
     279 E001      LDI	R16,1
     27A E010      LDI	R17,0
     27B 940E 02F1 CALL	_Delay_nms
     27D 940C 0371 JMP	pop_xgsetF03C
_LCD_WriteStrAuto:
  pstr                 --> R22
  i                    --> R20
  j                    --> R20
  pstr1                --> R10
     27F 940E 035A CALL	push_xgsetF00C
     281 0158      MOVW	R10,R16
(0181) }
(0182) 
(0183) //从显示屏的初始位置写入字符串,自动换行
(0184) void LCD_WriteStrAuto(unsigned char *pstr1)
(0185) {
(0186) unsigned char i;
(0187) unsigned char j;
(0188) unsigned char *pstr = pstr1;
     282 01B5      MOVW	R22,R10
(0189) 
(0190)    LCD_WriteCmd(0x34);        // 8bit I/F, basic command
     283 E304      LDI	R16,0x34
     284 DF58      RCALL	_LCD_WriteCmd
(0191)    LCD_WriteCmd(0x30);        // 8bit I/F, basic command, graphic off
     285 E300      LDI	R16,0x30
     286 DF56      RCALL	_LCD_WriteCmd
(0192) 
(0193)    for(i=0;i<36;i++)       //清空屏幕
     287 2744      CLR	R20
     288 C00F      RJMP	0x0298
(0194)    {
(0195)       if (i%18==0)         //判断是否换行
     289 E112      LDI	R17,0x12
     28A 2F04      MOV	R16,R20
     28B 940E 0326 CALL	mod8u
     28D 2300      TST	R16
     28E F431      BNE	0x0295
(0196)       {
(0197)          LCD_Set_xy(i/18,0);   //如换行, 则光标移动到行首
     28F 2722      CLR	R18
     290 E112      LDI	R17,0x12
     291 2F04      MOV	R16,R20
     292 940E 0328 CALL	div8u
     294 DF6A      RCALL	_LCD_Set_xy
(0198)       }
(0199) 
(0200)       LCD_WriteData(' '); //
     295 E200      LDI	R16,0x20
     296 DF57      RCALL	_LCD_WriteData
     297 9543      INC	R20
     298 3244      CPI	R20,0x24
     299 F378      BCS	0x0289
(0201)    }
(0202) 		
(0203)    j=0;
     29A 2744      CLR	R20
     29B C025      RJMP	0x02C1
(0204)    while (*pstr && j<36)
(0205)    {
(0206)       if (j%18==0)         //判断是否换行
     29C E112      LDI	R17,0x12
     29D 2F04      MOV	R16,R20
     29E 940E 0326 CALL	mod8u
     2A0 2300      TST	R16
     2A1 F431      BNE	0x02A8
(0207)       {
(0208)          LCD_Set_xy(j/18,0);   //如换行, 则光标移动到行首
     2A2 2722      CLR	R18
     2A3 E112      LDI	R17,0x12
     2A4 2F04      MOV	R16,R20
     2A5 940E 0328 CALL	div8u
     2A7 DF57      RCALL	_LCD_Set_xy
(0209)       }
(0210) 		 
(0211)       //避免最后一格写半个汉字, 把汉字写到下一行
(0212)       if (((j+1)%2==0) && *pstr>127 && *(pstr-1)<128) 
     2A8 E012      LDI	R17,2
     2A9 2F04      MOV	R16,R20
     2AA 5F0F      SUBI	R16,0xFF
     2AB 940E 0326 CALL	mod8u
     2AD 2300      TST	R16
     2AE F469      BNE	0x02BC
     2AF E78F      LDI	R24,0x7F
     2B0 01FB      MOVW	R30,R22
     2B1 8020      LDD	R2,Z+0
     2B2 1582      CP	R24,R2
     2B3 F440      BCC	0x02BC
     2B4 9731      SBIW	R30,1
     2B5 8180      LDD	R24,Z+0
     2B6 3880      CPI	R24,0x80
     2B7 F420      BCC	0x02BC
(0213)       {
(0214)          LCD_WriteData(' '); //
     2B8 E200      LDI	R16,0x20
     2B9 DF34      RCALL	_LCD_WriteData
(0215)          j++;
     2BA 9543      INC	R20
(0216)       }
     2BB C005      RJMP	0x02C1
(0217)       else
(0218)       {	
(0219)          LCD_WriteData(*pstr++);
     2BC 01FB      MOVW	R30,R22
     2BD 9101      LD	R16,Z+
     2BE 01BF      MOVW	R22,R30
     2BF DF2E      RCALL	_LCD_WriteData
(0220)          j++;
     2C0 9543      INC	R20
     2C1 01FB      MOVW	R30,R22
     2C2 8020      LDD	R2,Z+0
     2C3 2022      TST	R2
     2C4 F019      BEQ	0x02C8
     2C5 3244      CPI	R20,0x24
     2C6 F408      BCC	0x02C8
     2C7 CFD4      RJMP	0x029C
(0221)       }
(0222)    }
(0223) 	 
(0224)    Delay_nms(1); //11.19
     2C8 E001      LDI	R16,1
     2C9 E010      LDI	R17,0
     2CA 940E 02F1 CALL	_Delay_nms
     2CC 940C 0361 JMP	pop_xgsetF00C
FILE: E:\__test\_RTL8019_M128_struct_Test\Delay_7.37M.c
(0001) #include <macros.h>
(0002) #include "Delay_7.37M.h"
(0003) 
(0004) /*-----------------------------------------------------------------------
(0005) 延时函数
(0006) 系统时钟:7.3728M
(0007) -----------------------------------------------------------------------*/
(0008) void Delay_1us(void)     //1us+
(0009) {
(0010)    asm("nop");
_Delay_1us:
     2CE 0000      NOP
     2CF 9508      RET
_Delay_nus:
  i                    --> R10
  n                    --> R20
     2D0 940E 0350 CALL	push_xgset300C
     2D2 01A8      MOVW	R20,R16
(0011) }
(0012) 
(0013) void Delay_nus(unsigned int n)       //N us延时函数
(0014) {
(0015)    unsigned int i=0;
     2D3 24AA      CLR	R10
     2D4 24BB      CLR	R11
     2D5 C001      RJMP	0x02D7
(0016)    while (n--)
(0017)       Delay_1us();
     2D6 DFF7      RCALL	_Delay_1us
     2D7 011A      MOVW	R2,R20
     2D8 5041      SUBI	R20,1
     2D9 4050      SBCI	R21,0
     2DA 2022      TST	R2
     2DB F7D1      BNE	0x02D6
     2DC 2033      TST	R3
     2DD F7C1      BNE	0x02D6
     2DE 940C 0355 JMP	pop_xgset300C
(0018)    
(0019) }  
(0020) 
(0021) //通过int型计数的N us延时函数
(0022) //延时计算:t_delay = 6 * nt + 14t
(0023) //延时范围:n>=0, n<=65535 (即14t - 393224t )  //8M时,是1.5us - 49153us
(0024) void Delay_nus_Count(unsigned int n)    //8M时, 0.75us+
(0025) { 
_Delay_nus_Count:
  n                    --> R16
     2E0 C002      RJMP	0x02E3
(0026)    while(n) 
(0027)       n--;    
     2E1 5001      SUBI	R16,1
     2E2 4010      SBCI	R17,0
     2E3 3000      CPI	R16,0
     2E4 0701      CPC	R16,R17
     2E5 F7D9      BNE	0x02E1
     2E6 9508      RET
(0028) } 
(0029) 
(0030) 
(0031) void Delay_1ms(void)                 //1ms延时函数
(0032) {
(0033)    unsigned int i;
(0034)    for (i=0;i<1052;i++); 
_Delay_1ms:
  i                    --> R16
     2E7 2700      CLR	R16
     2E8 2711      CLR	R17
     2E9 C002      RJMP	0x02EC
     2EA 5F0F      SUBI	R16,0xFF
     2EB 4F1F      SBCI	R17,0xFF
     2EC 310C      CPI	R16,0x1C
     2ED E0E4      LDI	R30,4
     2EE 071E      CPC	R17,R30
     2EF F3D0      BCS	0x02EA
     2F0 9508      RET
_Delay_nms:
  i                    --> R20
  n                    --> R10
     2F1 940E 0350 CALL	push_xgset300C
     2F3 0158      MOVW	R10,R16
(0035) }
(0036)   
(0037) void Delay_nms(unsigned int n)       //N ms延时函数
(0038) {
(0039)    unsigned int i=0;
     2F4 2744      CLR	R20
     2F5 2755      CLR	R21
(0040)    for (i=0;i<n;i++)
     2F6 C003      RJMP	0x02FA
(0041)    Delay_1ms();
     2F7 DFEF      RCALL	_Delay_1ms
     2F8 5F4F      SUBI	R20,0xFF
     2F9 4F5F      SBCI	R21,0xFF
     2FA 154A      CP	R20,R10
     2FB 055B      CPC	R21,R11
     2FC F3D0      BCS	0x02F7
     2FD 940C 0355 JMP	pop_xgset300C
(0042) }
(0043) 
(0044) //精确1ms延时函数
(0045) //延时时间计算: t_delay= 3t + 1t + 1t + n*6t + ( (int(n/256) + 1) * 2t -1t) + 4t
(0046) //即: t_delay= n*6t + int(n/128)t + 10t 
(0047) //计数计算(1ms):n= (1000 * f - 10) * 128 / 769 
(0048) //              n= (1000 * 8 -10 ) * 128 /769 = 1329.93 (取整为n=1330, 再把1330去验证延时时间t_delay的计算)
(0049) void Delay_1ms_Preci(void)                 
(0050) {
(0051)    unsigned int i;
(0052)    i=1226;  //7.3728M
_Delay_1ms_Preci:
  i                    --> R16
     2FF EC0A      LDI	R16,0xCA
     300 E014      LDI	R17,4
(0053)    while (i--) 
     301 0118      MOVW	R2,R16
     302 5001      SUBI	R16,1
     303 4010      SBCI	R17,0
     304 2022      TST	R2
     305 F7D9      BNE	0x0301
     306 2033      TST	R3
     307 F7C9      BNE	0x0301
     308 9508      RET
_Delay_nms_Preci:
  i                    --> R20
  n                    --> R10
     309 940E 0350 CALL	push_xgset300C
     30B 0158      MOVW	R10,R16
(0054)       ;
(0055) }
(0056) 
(0057) //N ms精确延时函数
(0058) void Delay_nms_Preci(unsigned int n)       
(0059) {
(0060)    unsigned int i=0;
     30C 2744      CLR	R20
     30D 2755      CLR	R21
(0061)    for (i=0;i<n;i++)
     30E C003      RJMP	0x0312
(0062)    Delay_1ms_Preci();
     30F DFEF      RCALL	_Delay_1ms_Preci
     310 5F4F      SUBI	R20,0xFF
     311 4F5F      SBCI	R21,0xFF
     312 154A      CP	R20,R10
     313 055B      CPC	R21,R11
     314 F3D0      BCS	0x030F
     315 940C 0355 JMP	pop_xgset300C
FILE: E:\__test\_RTL8019_M128_struct_Test\Rtl8019as_M128.c
(0001) #include "Rtl8019as_M128.h"
(0002) 
(0003) //*	Initialize the RTL8019AS
(0004) void Rtl8019as_Init(void)
(0005) {
FILE: <library>
_Rtl8019as_Init:
     317 9508      RET
_memcpy:
     318 2FA0      MOV	R26,R16
     319 2FB1      MOV	R27,R17
     31A 2FE2      MOV	R30,R18
     31B 2FF3      MOV	R31,R19
     31C 8188      LDD	R24,Y+0
     31D 8199      LDD	R25,Y+1
     31E 3080      CPI	R24,0
     31F 0798      CPC	R25,R24
     320 C003      RJMP	0x0324
     321 9001      LD	R0,Z+
     322 920D      ST	R0,X+
     323 9701      SBIW	R24,1
     324 F7E1      BNE	0x0321
     325 9508      RET
mod8u:
     326 9468      BSET	6
     327 C001      RJMP	xdiv8u
div8u:
     328 94E8      BCLR	6
xdiv8u:
     329 932A      ST	R18,-Y
     32A 92FA      ST	R15,-Y
     32B 92EA      ST	R14,-Y
     32C 24FF      CLR	R15
     32D 24EE      CLR	R14
     32E E120      LDI	R18,0x10
     32F 0F00      LSL	R16
     330 1CFF      ROL	R15
     331 1CEE      ROL	R14
     332 16E1      CP	R14,R17
     333 F010      BCS	0x0336
     334 1AE1      SUB	R14,R17
     335 9503      INC	R16
     336 952A      DEC	R18
     337 F7B9      BNE	0x032F
     338 F40E      BRTC	0x033A
     339 2D0E      MOV	R16,R14
     33A 90E9      LD	R14,Y+
     33B 90F9      LD	R15,Y+
     33C 9129      LD	R18,Y+
     33D 9508      RET
pop_xgset00FC:
     33E 90A9      LD	R10,Y+
     33F 90B9      LD	R11,Y+
     340 90C9      LD	R12,Y+
     341 90D9      LD	R13,Y+
     342 90E9      LD	R14,Y+
     343 90F9      LD	R15,Y+
     344 9508      RET
push_xgsetF0FC:
     345 937A      ST	R23,-Y
     346 936A      ST	R22,-Y
push_xgset30FC:
     347 935A      ST	R21,-Y
     348 934A      ST	R20,-Y
push_xgset00FC:
     349 92FA      ST	R15,-Y
     34A 92EA      ST	R14,-Y
push_xgset003C:
     34B 92DA      ST	R13,-Y
     34C 92CA      ST	R12,-Y
     34D 92BA      ST	R11,-Y
     34E 92AA      ST	R10,-Y
     34F 9508      RET
push_xgset300C:
     350 935A      ST	R21,-Y
     351 934A      ST	R20,-Y
     352 92BA      ST	R11,-Y
     353 92AA      ST	R10,-Y
     354 9508      RET
pop_xgset300C:
     355 90A9      LD	R10,Y+
     356 90B9      LD	R11,Y+
     357 9149      LD	R20,Y+
     358 9159      LD	R21,Y+
     359 9508      RET
push_xgsetF00C:
     35A 937A      ST	R23,-Y
     35B 936A      ST	R22,-Y
     35C 935A      ST	R21,-Y
     35D 934A      ST	R20,-Y
     35E 92BA      ST	R11,-Y
     35F 92AA      ST	R10,-Y
     360 9508      RET
pop_xgsetF00C:
     361 90A9      LD	R10,Y+
     362 90B9      LD	R11,Y+
     363 9149      LD	R20,Y+
     364 9159      LD	R21,Y+
     365 9169      LD	R22,Y+
     366 9179      LD	R23,Y+
     367 9508      RET
push_xgsetF03C:
     368 937A      ST	R23,-Y
     369 936A      ST	R22,-Y
     36A 935A      ST	R21,-Y
     36B 934A      ST	R20,-Y
     36C 92DA      ST	R13,-Y
     36D 92CA      ST	R12,-Y
     36E 92BA      ST	R11,-Y
     36F 92AA      ST	R10,-Y
     370 9508      RET
pop_xgsetF03C:
     371 90A9      LD	R10,Y+
     372 90B9      LD	R11,Y+
     373 90C9      LD	R12,Y+
     374 90D9      LD	R13,Y+
     375 9149      LD	R20,Y+
     376 9159      LD	R21,Y+
     377 9169      LD	R22,Y+
     378 9179      LD	R23,Y+
     379 9508      RET

⌨️ 快捷键说明

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