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

📄 2410lib.txt

📁 led显示程序~~ARM S3C2410 分享了~~谢谢支持~~
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;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 + -