📄 2410lib.txt
字号:
0005a8 e3100001 TST r0,#1
0005ac 0afffffb BEQ |L1.1440|
0005b0 e51f01d0 LDR r0,|L1.1000|
0005b4 e5d00024 LDRB r0,[r0,#0x24]
0005b8 eaffffe6 B |L1.1368|
|L1.1468|
0005bc e3a00000 MOV r0,#0
0005c0 eaffffe4 B |L1.1368|
ENDP
uart_getkey PROC
;;;268 {
;;;269 if(f_nWhichUart==0)
0005c4 e59f044c LDR r0,|L1.2584|
0005c8 e5900000 LDR r0,[r0,#0] ; f_nWhichUart
0005cc e3500000 CMP r0,#0
0005d0 1a000008 BNE |L1.1528|
;;;270 {
;;;271 if(rUTRSTAT0 & 0x1) //Receive data ready
0005d4 e3a00205 MOV r0,#0x50000000
0005d8 e5900010 LDR r0,[r0,#0x10]
0005dc e3100001 TST r0,#1
0005e0 0a000002 BEQ |L1.1520|
;;;272 return RdURXH0();
0005e4 e3a00205 MOV r0,#0x50000000
0005e8 e5d00024 LDRB r0,[r0,#0x24]
|L1.1516|
;;;273 else
;;;274 return 0;
;;;275 }
;;;276 else if(f_nWhichUart==1)
;;;277 {
;;;278 if(rUTRSTAT1 & 0x1) //Receive data ready
;;;279 return RdURXH1();
;;;280 else
;;;281 return 0;
;;;282 }
;;;283 else if(f_nWhichUart==2)
;;;284 {
;;;285 if(rUTRSTAT2 & 0x1) //Receive data ready
;;;286 return RdURXH2();
;;;287 else
;;;288 return 0;
;;;289 }
;;;290 return NULL;
;;;291 }
0005ec e12fff1e BX lr
|L1.1520|
0005f0 e3a00000 MOV r0,#0
0005f4 eafffffc B |L1.1516|
|L1.1528|
0005f8 e59f0418 LDR r0,|L1.2584|
0005fc e5900000 LDR r0,[r0,#0] ; f_nWhichUart
000600 e3500001 CMP r0,#1
000604 1a000008 BNE |L1.1580|
000608 e51f022c LDR r0,|L1.996|
00060c e5900010 LDR r0,[r0,#0x10]
000610 e3100001 TST r0,#1
000614 0a000002 BEQ |L1.1572|
000618 e51f023c LDR r0,|L1.996|
00061c e5d00024 LDRB r0,[r0,#0x24]
000620 eafffff1 B |L1.1516|
|L1.1572|
000624 e3a00000 MOV r0,#0
000628 eaffffef B |L1.1516|
|L1.1580|
00062c e59f03e4 LDR r0,|L1.2584|
000630 e5900000 LDR r0,[r0,#0] ; f_nWhichUart
000634 e3500002 CMP r0,#2
000638 1a000008 BNE |L1.1632|
00063c e51f025c LDR r0,|L1.1000|
000640 e5900010 LDR r0,[r0,#0x10]
000644 e3100001 TST r0,#1
000648 0a000002 BEQ |L1.1624|
00064c e51f026c LDR r0,|L1.1000|
000650 e5d00024 LDRB r0,[r0,#0x24]
000654 eaffffe4 B |L1.1516|
|L1.1624|
000658 e3a00000 MOV r0,#0
00065c eaffffe2 B |L1.1516|
|L1.1632|
000660 e3a00000 MOV r0,#0
000664 eaffffe0 B |L1.1516|
ENDP
uart_sendbyte PROC
;;;403 void uart_sendbyte(int nData)
;;;404 {
000668 e92d4010 PUSH {r4,lr}
00066c e1a04000 MOV r4,r0
;;;405 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|
;;;406 {
;;;407 if(nData=='\n')
000680 e354000a CMP r4,#0xa
000684 1a000009 BNE |L1.1712|
;;;408 {
;;;409 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|
;;;410 delay(10); //because the slow response of hyper_terminal
00069c e3a0000a MOV r0,#0xa
0006a0 ebfffffe BL delay
;;;411 WrUTXH0('\r');
0006a4 e3a0000d MOV r0,#0xd
0006a8 e3a01205 MOV r1,#0x50000000
0006ac e5c10020 STRB r0,[r1,#0x20]
|L1.1712|
;;;412 }
;;;413 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|
;;;414 delay(10);
0006c4 e3a0000a MOV r0,#0xa
0006c8 ebfffffe BL delay
;;;415 WrUTXH0(nData);
0006cc e3a01205 MOV r1,#0x50000000
0006d0 e5c14020 STRB r4,[r1,#0x20]
0006d4 ea000032 B |L1.1956|
|L1.1752|
;;;416 }
;;;417 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|
;;;418 {
;;;419 if(nData=='\n')
0006e8 e354000a CMP r4,#0xa
0006ec 1a000009 BNE |L1.1816|
;;;420 {
;;;421 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|
;;;422 delay(10); //because the slow response of hyper_terminal
000704 e3a0000a MOV r0,#0xa
000708 ebfffffe BL delay
;;;423 rUTXH1 = '\r';
00070c e3a0000d MOV r0,#0xd
000710 e51f1334 LDR r1,|L1.996|
000714 e5c10020 STRB r0,[r1,#0x20]
|L1.1816|
;;;424 }
;;;425 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|
;;;426 delay(10);
00072c e3a0000a MOV r0,#0xa
000730 ebfffffe BL delay
;;;427 rUTXH1 = nData;
000734 e51f1358 LDR r1,|L1.996|
000738 e5c14020 STRB r4,[r1,#0x20]
00073c ea000018 B |L1.1956|
|L1.1856|
;;;428 }
;;;429 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|
;;;430 {
;;;431 if(nData=='\n')
000750 e354000a CMP r4,#0xa
000754 1a000009 BNE |L1.1920|
;;;432 {
;;;433 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|
;;;434 delay(10); //because the slow response of hyper_terminal
00076c e3a0000a MOV r0,#0xa
000770 ebfffffe BL delay
;;;435 rUTXH2 = '\r';
000774 e3a0000d MOV r0,#0xd
000778 e51f1398 LDR r1,|L1.1000|
00077c e5c10020 STRB r0,[r1,#0x20]
|L1.1920|
;;;436 }
;;;437 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|
;;;438 delay(10);
000794 e3a0000a MOV r0,#0xa
000798 ebfffffe BL delay
;;;439 rUTXH2 = nData;
00079c e51f13bc LDR r1,|L1.1000|
0007a0 e5c14020 STRB r4,[r1,#0x20]
|L1.1956|
;;;440 }
;;;441 }
0007a4 e8bd4010 POP {r4,lr}
0007a8 e12fff1e BX lr
ENDP
uart_sendstring PROC
;;;451 void uart_sendstring(char *pString)
;;;452 {
0007ac e92d4010 PUSH {r4,lr}
0007b0 e1a04000 MOV r4,r0
;;;453 while(*pString)
0007b4 ea000001 B |L1.1984|
|L1.1976|
;;;454 uart_sendbyte(*pString++);
0007b8 e4d40001 LDRB r0,[r4],#1
0007bc ebfffffe BL uart_sendbyte
|L1.1984|
0007c0 e5d40000 LDRB r0,[r4,#0]
0007c4 e3500000 CMP r0,#0
0007c8 1afffffa BNE |L1.1976|
;;;455 }
0007cc e8bd4010 POP {r4,lr}
0007d0 e12fff1e BX lr
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
ENDP
uart_getstring PROC
;;;301 void uart_getstring(char *pString)
;;;302 {
00080c e92d4070 PUSH {r4-r6,lr}
000810 e1a04000 MOV r4,r0
;;;303 char *string2 = pString;
000814 e1a06004 MOV r6,r4
;;;304 char c;
;;;305 while((c = uart_getch())!='\r')
000818 ea00000a B |L1.2120|
|L1.2076|
;;;306 {
;;;307 if(c=='\b')
00081c e3550008 CMP r5,#8
000820 1a000005 BNE |L1.2108|
;;;308 {
;;;309 if( (int)string2 < (int)pString )
000824 e1560004 CMP r6,r4
000828 aa000006 BGE |L1.2120|
;;;310 {
;;;311 uart_printf("\b \b");
00082c e28f0f7a ADR r0,|L1.2588|
000830 ebfffffe BL uart_printf
;;;312 pString--;
000834 e2444001 SUB r4,r4,#1
000838 ea000002 B |L1.2120|
|L1.2108|
;;;313 }
;;;314 }
;;;315 else
;;;316 {
;;;317 *pString++ = c;
00083c e4c45001 STRB r5,[r4],#1
;;;318 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
000850 e350000d CMP r0,#0xd
000854 1afffff0 BNE |L1.2076|
;;;319 }
;;;320 }
;;;321 *pString='\0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -