📄 2410lib.txt
字号:
;;;290 }
;;;291 return NULL;
;;;292 }
0005ec e12fff1e BX lr
|L1.1520|
0005f0 e3a00000 MOV r0,#0 ;275
0005f4 eafffffc B |L1.1516|
|L1.1528|
0005f8 e59f0418 LDR r0,|L1.2584|
0005fc e5900000 LDR r0,[r0,#0] ;277 ; f_nWhichUart
000600 e3500001 CMP r0,#1 ;277
000604 1a000008 BNE |L1.1580|
000608 e51f022c LDR r0,|L1.996|
00060c e5900010 LDR r0,[r0,#0x10] ;279
000610 e3100001 TST r0,#1 ;279
000614 0a000002 BEQ |L1.1572|
000618 e51f023c LDR r0,|L1.996|
00061c e5d00024 LDRB r0,[r0,#0x24] ;280
000620 eafffff1 B |L1.1516|
|L1.1572|
000624 e3a00000 MOV r0,#0 ;282
000628 eaffffef B |L1.1516|
|L1.1580|
00062c e59f03e4 LDR r0,|L1.2584|
000630 e5900000 LDR r0,[r0,#0] ;284 ; f_nWhichUart
000634 e3500002 CMP r0,#2 ;284
000638 1a000008 BNE |L1.1632|
00063c e51f025c LDR r0,|L1.1000|
000640 e5900010 LDR r0,[r0,#0x10] ;286
000644 e3100001 TST r0,#1 ;286
000648 0a000002 BEQ |L1.1624|
00064c e51f026c LDR r0,|L1.1000|
000650 e5d00024 LDRB r0,[r0,#0x24] ;287
000654 eaffffe4 B |L1.1516|
|L1.1624|
000658 e3a00000 MOV r0,#0 ;289
00065c eaffffe2 B |L1.1516|
|L1.1632|
000660 e3a00000 MOV r0,#0 ;291
000664 eaffffe0 B |L1.1516|
;;;293
ENDP
uart_sendbyte PROC
;;;404 void uart_sendbyte(int nData)
;;;405 {
000668 e92d4010 PUSH {r4,lr}
00066c e1a04000 MOV r4,r0
;;;406 if(f_nWhichUart==0)
000670 e59f03a0 LDR r0,|L1.2584|
000674 e5900000 LDR r0,[r0,#0] ; f_nWhichUart
000678 e3500000 CMP r0,#0
00067c 1a000015 BNE |L1.1752|
;;;407 {
;;;408 if(nData=='\n')
000680 e354000a CMP r4,#0xa
000684 1a000009 BNE |L1.1712|
;;;409 {
;;;410 while(!(rUTRSTAT0 & 0x2));
000688 e1a00000 MOV r0,r0
|L1.1676|
00068c e3a00205 MOV r0,#0x50000000
000690 e5900010 LDR r0,[r0,#0x10]
000694 e3100002 TST r0,#2
000698 0afffffb BEQ |L1.1676|
;;;411 delay(10); //because the slow response of hyper_terminal
00069c e3a0000a MOV r0,#0xa
0006a0 ebfffffe BL delay
;;;412 WrUTXH0('\r');
0006a4 e3a0000d MOV r0,#0xd
0006a8 e3a01205 MOV r1,#0x50000000
0006ac e5c10020 STRB r0,[r1,#0x20]
|L1.1712|
;;;413 }
;;;414 while(!(rUTRSTAT0 & 0x2)); //Wait until THR is empty.
0006b0 e1a00000 MOV r0,r0
|L1.1716|
0006b4 e3a00205 MOV r0,#0x50000000
0006b8 e5900010 LDR r0,[r0,#0x10]
0006bc e3100002 TST r0,#2
0006c0 0afffffb BEQ |L1.1716|
;;;415 delay(10);
0006c4 e3a0000a MOV r0,#0xa
0006c8 ebfffffe BL delay
;;;416 WrUTXH0(nData);
0006cc e3a01205 MOV r1,#0x50000000
0006d0 e5c14020 STRB r4,[r1,#0x20]
0006d4 ea000032 B |L1.1956|
|L1.1752|
;;;417 }
;;;418 else if(f_nWhichUart==1)
0006d8 e59f0338 LDR r0,|L1.2584|
0006dc e5900000 LDR r0,[r0,#0] ; f_nWhichUart
0006e0 e3500001 CMP r0,#1
0006e4 1a000015 BNE |L1.1856|
;;;419 {
;;;420 if(nData=='\n')
0006e8 e354000a CMP r4,#0xa
0006ec 1a000009 BNE |L1.1816|
;;;421 {
;;;422 while(!(rUTRSTAT1 & 0x2));
0006f0 e1a00000 MOV r0,r0
|L1.1780|
0006f4 e51f0318 LDR r0,|L1.996|
0006f8 e5900010 LDR r0,[r0,#0x10]
0006fc e3100002 TST r0,#2
000700 0afffffb BEQ |L1.1780|
;;;423 delay(10); //because the slow response of hyper_terminal
000704 e3a0000a MOV r0,#0xa
000708 ebfffffe BL delay
;;;424 rUTXH1 = '\r';
00070c e3a0000d MOV r0,#0xd
000710 e51f1334 LDR r1,|L1.996|
000714 e5c10020 STRB r0,[r1,#0x20]
|L1.1816|
;;;425 }
;;;426 while(!(rUTRSTAT1 & 0x2)); //Wait until THR is empty.
000718 e1a00000 MOV r0,r0
|L1.1820|
00071c e51f0340 LDR r0,|L1.996|
000720 e5900010 LDR r0,[r0,#0x10]
000724 e3100002 TST r0,#2
000728 0afffffb BEQ |L1.1820|
;;;427 delay(10);
00072c e3a0000a MOV r0,#0xa
000730 ebfffffe BL delay
;;;428 rUTXH1 = nData;
000734 e51f1358 LDR r1,|L1.996|
000738 e5c14020 STRB r4,[r1,#0x20]
00073c ea000018 B |L1.1956|
|L1.1856|
;;;429 }
;;;430 else if(f_nWhichUart==2)
000740 e59f02d0 LDR r0,|L1.2584|
000744 e5900000 LDR r0,[r0,#0] ; f_nWhichUart
000748 e3500002 CMP r0,#2
00074c 1a000014 BNE |L1.1956|
;;;431 {
;;;432 if(nData=='\n')
000750 e354000a CMP r4,#0xa
000754 1a000009 BNE |L1.1920|
;;;433 {
;;;434 while(!(rUTRSTAT2 & 0x2));
000758 e1a00000 MOV r0,r0
|L1.1884|
00075c e51f037c LDR r0,|L1.1000|
000760 e5900010 LDR r0,[r0,#0x10]
000764 e3100002 TST r0,#2
000768 0afffffb BEQ |L1.1884|
;;;435 delay(10); //because the slow response of hyper_terminal
00076c e3a0000a MOV r0,#0xa
000770 ebfffffe BL delay
;;;436 rUTXH2 = '\r';
000774 e3a0000d MOV r0,#0xd
000778 e51f1398 LDR r1,|L1.1000|
00077c e5c10020 STRB r0,[r1,#0x20]
|L1.1920|
;;;437 }
;;;438 while(!(rUTRSTAT2 & 0x2)); //Wait until THR is empty.
000780 e1a00000 MOV r0,r0
|L1.1924|
000784 e51f03a4 LDR r0,|L1.1000|
000788 e5900010 LDR r0,[r0,#0x10]
00078c e3100002 TST r0,#2
000790 0afffffb BEQ |L1.1924|
;;;439 delay(10);
000794 e3a0000a MOV r0,#0xa
000798 ebfffffe BL delay
;;;440 rUTXH2 = nData;
00079c e51f13bc LDR r1,|L1.1000|
0007a0 e5c14020 STRB r4,[r1,#0x20]
|L1.1956|
;;;441 }
;;;442 }
0007a4 e8bd4010 POP {r4,lr}
0007a8 e12fff1e BX lr
;;;443
ENDP
uart_sendstring PROC
;;;452 void uart_sendstring(char *pString)
;;;453 {
0007ac e92d4010 PUSH {r4,lr}
0007b0 e1a04000 MOV r4,r0
;;;454 while(*pString)
0007b4 ea000001 B |L1.1984|
|L1.1976|
;;;455 uart_sendbyte(*pString++);
0007b8 e4d40001 LDRB r0,[r4],#1
0007bc ebfffffe BL uart_sendbyte
|L1.1984|
0007c0 e5d40000 LDRB r0,[r4,#0] ;454
0007c4 e3500000 CMP r0,#0 ;454
0007c8 1afffffa BNE |L1.1976|
;;;456 }
0007cc e8bd4010 POP {r4,lr}
0007d0 e12fff1e BX lr
;;;457
ENDP
uart_printf PROC
;;;466 void uart_printf(char *fmt,...)
;;;467 {
0007d4 e92d000f PUSH {r0-r3}
0007d8 e52de004 PUSH {lr}
0007dc e24ddf41 SUB sp,sp,#0x104
;;;468 va_list ap;
;;;469 char pString[256];
;;;470
;;;471 va_start(ap,fmt);
0007e0 e28d0f43 ADD r0,sp,#0x10c
0007e4 e58d0100 STR r0,[sp,#0x100]
;;;472 vsprintf(pString,fmt,ap);
0007e8 e59d1108 LDR r1,[sp,#0x108]
0007ec e59d2100 LDR r2,[sp,#0x100]
0007f0 e28d0000 ADD r0,sp,#0
0007f4 ebfffffe BL __c89vsprintf
;;;473 uart_sendstring(pString);
0007f8 e28d0000 ADD r0,sp,#0
0007fc ebfffffe BL uart_sendstring
;;;474 va_end(ap);
;;;475 }
000800 e28ddf41 ADD sp,sp,#0x104
000804 e49de014 LDR lr,[sp],#0x14
000808 e12fff1e BX lr
;;;476
ENDP
uart_getstring PROC
;;;302 void uart_getstring(char *pString)
;;;303 {
00080c e92d4070 PUSH {r4-r6,lr}
000810 e1a04000 MOV r4,r0
;;;304 char *string2 = pString;
000814 e1a06004 MOV r6,r4
;;;305 char c;
;;;306 while((c = uart_getch())!='\r')
000818 ea00000a B |L1.2120|
|L1.2076|
;;;307 {
;;;308 if(c=='\b')
00081c e3550008 CMP r5,#8
000820 1a000005 BNE |L1.2108|
;;;309 {
;;;310 if( (int)string2 < (int)pString )
000824 e1560004 CMP r6,r4
000828 aa000006 BGE |L1.2120|
;;;311 {
;;;312 uart_printf("\b \b");
00082c e28f0f7a ADR r0,|L1.2588|
000830 ebfffffe BL uart_printf
;;;313 pString--;
000834 e2444001 SUB r4,r4,#1
000838 ea000002 B |L1.2120|
|L1.2108|
;;;314 }
;;;315 }
;;;316 else
;;;317 {
;;;318 *pString++ = c;
00083c e4c45001 STRB r5,[r4],#1
;;;319 uart_sendbyte(c);
000840 e1a00005 MOV r0,r5
000844 ebfffffe BL uart_sendbyte
|L1.2120|
000848 ebfffffe BL uart_getch
00084c e1a05000 MOV r5,r0 ;306
000850 e350000d CMP r0,#0xd ;306
000854 1afffff0 BNE |L1.2076|
;;;320 }
;;;321 }
;;;322 *pString='\0';
000858 e3a00000 MOV r0,#0
00085c e5c40000 STRB r0,[r4,#0]
;;;323 uart_sendbyte('\n');
000860 e3a0000a MOV r0,#0xa
000864 ebfffffe BL uart_sendbyte
;;;324 }
000868 e8bd4070 POP {r4-r6,lr}
00086c e12fff1e BX lr
;;;325
ENDP
uart_getintnum PROC
;;;336 int uart_getintnum(void)
;;;337 {
000870 e92d43f0 PUSH {r4-r9,lr}
000874 e24dd024 SUB sp,sp,#0x24
;;;338 char str[30];
;;;339 char *pString = str;
000878 e28d4004 ADD r4,sp,#4
;;;340 int base = 10;
00087c e3a0500a MOV r5,#0xa
;;;341 int minus = 0;
000880 e3a06000 MOV r6,#0
;;;342 int nResult = 0;
000884 e3a07000 MOV r7,#0
;;;343 int lastIndex;
;;;344 int i;
;;;345
;;;346 uart_getstring(pString);
000888 e1a00004 MOV r0,r4
00088c ebfffffe BL uart_getstring
;;;347
;;;348 if(pString[0]=='-')
000890 e5d40000 LDRB r0,[r4,#0]
000894 e350002d CMP r0,#0x2d
000898 1a000001 BNE |L1.2212|
;;;349 {
;;;350 minus = 1;
00089c e3a06001 MOV r6,#1
;;;351 pString++;
0008a0 e2844001 ADD r4,r4,#1
|L1.2212|
;;;352 }
;;;353
;;;354 if(pString[0]=='0' && (pString[1]=='x' || pString[1]=='X'))
0008a4 e5d40000 LDRB r0,[r4,#0]
0008a8 e3500030 CMP r0,#0x30
0008ac 1a000007 BNE |L1.2256|
0008b0 e5d40001 LDRB r0,[r4,#1]
0008b4 e3500078 CMP r0,#0x78
0008b8 0a000002 BEQ |L1.2248|
0008bc e5d40001 LDRB r0,[r4,#1]
0008c0 e3500058 CMP r0,#0x58
0008c4 1a000001 BNE |L1.2256|
|L1.2248|
;;;355 {
;;;356 base = 16;
0008c8 e3a05010 MOV r5,#0x10
;;;357 pString += 2;
0008cc e2844002 ADD r4,r4,#2
|L1.2256|
;;;358 }
;;;359
;;;360 lastIndex = strlen(pString) - 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -