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

📄 2410lib.txt

📁 此源码是sc3c2410串口测试程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
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 + -