📄 prj1.lst
字号:
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 + -