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

📄 24a0lib.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002b0  00000222          DCD      0x00000222
                  |L1.692|
0002b4  22222222          DCD      0x22222222
                  |L1.696|
0002b8  05007f14          DCD      0x05007f14
                  |L1.700|
0002bc  030a32c0          DCD      0x030a32c0
                  |L1.704|
0002c0  44400000          DCD      0x44400000
                  |L1.708|
0002c4  00000245          DCD      0x00000245
                  |L1.712|
0002c8  00000000          DCFD     0x3fb0000000000000
0002cc  3fb00000  
                  |L1.720|
0002d0  00000000          DCFD     0x3fe0000000000000 ; 0.5
0002d4  3fe00000  
                  |L1.728|
0002d8  44404000          DCD      0x44404000
                          ENDP

                  Uart_Select PROC
;;;140    void Uart_Select(int ch)
;;;141    {
0002dc  e59f1260          LDR      r1,|L1.1348|
;;;142        whichUart = ch;
0002e0  e5810000          STR      r0,[r1,#0]  ; whichUart
;;;143    }
0002e4  e12fff1e          BX       lr
                          ENDP

                  Uart_TxEmpty PROC
;;;146    void Uart_TxEmpty(int ch)
;;;147    {
0002e8  e3500000          CMP      r0,#0
;;;148    
;;;149    	switch(ch) {
0002ec  0a000002          BEQ      |L1.764|
0002f0  e3500001          CMP      r0,#1
0002f4  1a00000c          BNE      |L1.812|
0002f8  ea000005          B        |L1.788|
;;;150    		case 0:
;;;151    			while(!(rUTRSTAT0 & 0x4)); //Wait until tx shifter is empty.
                  |L1.764|
0002fc  e1a00000          NOP      
                  |L1.768|
000300  e51f1048          LDR      r1,|L1.704|
000304  e5911010          LDR      r1,[r1,#0x10]
000308  e3110004          TST      r1,#4
00030c  0afffffb          BEQ      |L1.768|
;;;152    			break;
000310  ea000006          B        |L1.816|
;;;153    		case 1:
;;;154    			while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty.
                  |L1.788|
000314  e1a00000          NOP      
                  |L1.792|
000318  e51f1048          LDR      r1,|L1.728|
00031c  e5911010          LDR      r1,[r1,#0x10]
000320  e3110004          TST      r1,#4
000324  0afffffb          BEQ      |L1.792|
;;;155    			break;
000328  ea000000          B        |L1.816|
;;;156    		default:
;;;157    			break;
                  |L1.812|
00032c  e1a00000          NOP      
;;;158    	}
;;;159    }
                  |L1.816|
000330  e12fff1e          BX       lr
                          ENDP

                  Uart_Getch PROC
;;;162    char Uart_Getch(void)
;;;163    {
000334  e59f0208          LDR      r0,|L1.1348|
;;;164    
;;;165    	switch(whichUart) {
000338  e5900000          LDR      r0,[r0,#0]  ; whichUart
00033c  e3500000          CMP      r0,#0
000340  0a000002          BEQ      |L1.848|
000344  e3500001          CMP      r0,#1
000348  1a000010          BNE      |L1.912|
00034c  ea000007          B        |L1.880|
;;;166    		case 0:
;;;167    			while(!(rUTRSTAT0 & 0x1)); //Receive data ready
                  |L1.848|
000350  e1a00000          NOP      
                  |L1.852|
000354  e51f009c          LDR      r0,|L1.704|
000358  e5900010          LDR      r0,[r0,#0x10]
00035c  e3100001          TST      r0,#1
000360  0afffffb          BEQ      |L1.852|
;;;168    			return RdURXH0();
000364  e51f00ac          LDR      r0,|L1.704|
000368  e5d00024          LDRB     r0,[r0,#0x24]
;;;169    			break;
;;;170    		case 1:
;;;171    			while(!(rUTRSTAT1 & 0x1)); //Receive data ready
;;;172    			return RdURXH1();
;;;173    			break;
;;;174    		default:
;;;175    			break;
;;;176    	}
;;;177    }
                  |L1.876|
00036c  e12fff1e          BX       lr
                  |L1.880|
000370  e1a00000          NOP                            ;171
                  |L1.884|
000374  e51f00a4          LDR      r0,|L1.728|           ;171
000378  e5900010          LDR      r0,[r0,#0x10]         ;171
00037c  e3100001          TST      r0,#1                 ;171
000380  0afffffb          BEQ      |L1.884|              ;171
000384  e51f00b4          LDR      r0,|L1.728|           ;172
000388  e5d00024          LDRB     r0,[r0,#0x24]         ;172
00038c  eafffff6          B        |L1.876|              ;172
                  |L1.912|
000390  e1a00000          NOP                            ;175
000394  eafffff4          B        |L1.876|
                          ENDP

                  Uart_GetKey PROC
;;;180    char Uart_GetKey(void)
;;;181    {
000398  e59f01a4          LDR      r0,|L1.1348|
;;;182    
;;;183    	switch(whichUart) {
00039c  e5900000          LDR      r0,[r0,#0]  ; whichUart
0003a0  e3500000          CMP      r0,#0
0003a4  0a000002          BEQ      |L1.948|
0003a8  e3500001          CMP      r0,#1
0003ac  1a000012          BNE      |L1.1020|
0003b0  ea000008          B        |L1.984|
;;;184    		case 0:
;;;185    			if(rUTRSTAT0 & 0x1)    //Receive data ready
                  |L1.948|
0003b4  e51f00fc          LDR      r0,|L1.704|
0003b8  e5900010          LDR      r0,[r0,#0x10]
0003bc  e3100001          TST      r0,#1
0003c0  0a000002          BEQ      |L1.976|
;;;186    				return RdURXH0();
0003c4  e51f010c          LDR      r0,|L1.704|
0003c8  e5d00024          LDRB     r0,[r0,#0x24]
;;;187    			else
;;;188    				return 0;
;;;189    			break;
;;;190    		case 1:
;;;191    			if(rUTRSTAT1 & 0x1)    //Receive data ready
;;;192    				return RdURXH1();
;;;193    			else
;;;194    				return 0;
;;;195    			break;
;;;196    		default:
;;;197    			break;
;;;198    	}
;;;199    }
                  |L1.972|
0003cc  e12fff1e          BX       lr
                  |L1.976|
0003d0  e3a00000          MOV      r0,#0                 ;188
0003d4  eafffffc          B        |L1.972|              ;188
                  |L1.984|
0003d8  e51f0108          LDR      r0,|L1.728|           ;191
0003dc  e5900010          LDR      r0,[r0,#0x10]         ;191
0003e0  e3100001          TST      r0,#1                 ;191
0003e4  0a000002          BEQ      |L1.1012|             ;191
0003e8  e51f0118          LDR      r0,|L1.728|           ;192
0003ec  e5d00024          LDRB     r0,[r0,#0x24]         ;192
0003f0  eafffff5          B        |L1.972|              ;192
                  |L1.1012|
0003f4  e3a00000          MOV      r0,#0                 ;194
0003f8  eafffff3          B        |L1.972|              ;194
                  |L1.1020|
0003fc  e1a00000          NOP                            ;197
000400  eafffff1          B        |L1.972|
                          ENDP

                  Uart_SendByte PROC
;;;277    void Uart_SendByte(int data)
;;;278    {
000404  e92d4010          STMFD    sp!,{r4,lr}
000408  e1a04000          MOV      r4,r0
;;;279    
;;;280    	switch(whichUart) {
00040c  e59f0130          LDR      r0,|L1.1348|
000410  e5900000          LDR      r0,[r0,#0]  ; whichUart
000414  e3500000          CMP      r0,#0
000418  0a000002          BEQ      |L1.1064|
00041c  e3500001          CMP      r0,#1
000420  1a00002c          BNE      |L1.1240|
000424  ea000015          B        |L1.1152|
;;;281    		case 0:
;;;282    			if(data=='\n') {
                  |L1.1064|
000428  e354000a          CMP      r4,#0xa
00042c  1a000009          BNE      |L1.1112|
;;;283    				while(!(rUTRSTAT0 & 0x2));
000430  e1a00000          NOP      
                  |L1.1076|
000434  e51f017c          LDR      r0,|L1.704|
000438  e5900010          LDR      r0,[r0,#0x10]
00043c  e3100002          TST      r0,#2
000440  0afffffb          BEQ      |L1.1076|
;;;284    				Delay(10);				   //because the slow response of hyper_terminal 
000444  e3a0000a          MOV      r0,#0xa
000448  ebfffffe          BL       Delay
;;;285    				WrUTXH0('\r');
00044c  e3a0000d          MOV      r0,#0xd
000450  e51f1198          LDR      r1,|L1.704|
000454  e5c10020          STRB     r0,[r1,#0x20]
;;;286    			}
;;;287    			while(!(rUTRSTAT0 & 0x2));	 //Wait until THR is empty.
                  |L1.1112|
000458  e1a00000          NOP      
                  |L1.1116|
00045c  e51f01a4          LDR      r0,|L1.704|
000460  e5900010          LDR      r0,[r0,#0x10]
000464  e3100002          TST      r0,#2
000468  0afffffb          BEQ      |L1.1116|
;;;288    			Delay(10);
00046c  e3a0000a          MOV      r0,#0xa
000470  ebfffffe          BL       Delay
;;;289    			WrUTXH0(data);
000474  e51f01bc          LDR      r0,|L1.704|
000478  e5c04020          STRB     r4,[r0,#0x20]
;;;290    			break;
00047c  ea000016          B        |L1.1244|
;;;291    		case 1:
;;;292    			if(data=='\n') {
                  |L1.1152|
000480  e354000a          CMP      r4,#0xa
000484  1a000009          BNE      |L1.1200|
;;;293    				while(!(rUTRSTAT1 & 0x2));
000488  e1a00000          NOP      
                  |L1.1164|
00048c  e51f01bc          LDR      r0,|L1.728|
000490  e5900010          LDR      r0,[r0,#0x10]
000494  e3100002          TST      r0,#2
000498  0afffffb          BEQ      |L1.1164|
;;;294    				Delay(10);				   //because the slow response of hyper_terminal 
00049c  e3a0000a          MOV      r0,#0xa
0004a0  ebfffffe          BL       Delay
;;;295    				rUTXH1 = '\r';
0004a4  e3a0000d          MOV      r0,#0xd
0004a8  e51f11d8          LDR      r1,|L1.728|
0004ac  e5c10020          STRB     r0,[r1,#0x20]
;;;296    			}
;;;297    			while(!(rUTRSTAT1 & 0x2));	 //Wait until THR is empty.
                  |L1.1200|
0004b0  e1a00000          NOP      
                  |L1.1204|
0004b4  e51f01e4          LDR      r0,|L1.728|
0004b8  e5900010          LDR      r0,[r0,#0x10]
0004bc  e3100002          TST      r0,#2
0004c0  0afffffb          BEQ      |L1.1204|
;;;298    			Delay(10);
0004c4  e3a0000a          MOV      r0,#0xa
0004c8  ebfffffe          BL       Delay
;;;299    			rUTXH1 = data;
0004cc  e51f01fc          LDR      r0,|L1.728|
0004d0  e5c04020          STRB     r4,[r0,#0x20]
;;;300    		default:
0004d4  e1a00000          NOP      
;;;301    			break;
                  |L1.1240|
0004d8  e1a00000          NOP      
;;;302    	} 
;;;303    }               
                  |L1.1244|
0004dc  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  Uart_GetString PROC
;;;202    void Uart_GetString(char *string)
;;;203    {
0004e0  e92d4070          STMFD    sp!,{r4-r6,lr}
0004e4  e1a04000          MOV      r4,r0
;;;204        char *string2 = string;
0004e8  e1a06004          MOV      r6,r4
;;;205        char c;
;;;206        while((c = Uart_Getch())!='\r') {
0004ec  e1a00000          NOP      
                  |L1.1264|
0004f0  ebfffffe          BL       Uart_Getch
0004f4  e1a05000          MOV      r5,r0
0004f8  e350000d          CMP      r0,#0xd
0004fc  0a00000b          BEQ      |L1.1328|
;;;207            if(c=='\b') {
000500  e3550008          CMP      r5,#8
000504  1a000005          BNE      |L1.1312|
;;;208                if( (int)string2 < (int)string ) {
000508  e1560004          CMP      r6,r4
00050c  aa000006          BGE      |L1.1324|
;;;209                    Uart_Printf("\b \b");
000510  e28f0030          ADR      r0,|L1.1352|
000514  ebfffffe          BL       _printf
;;;210                    string--;
000518  e2444001          SUB      r4,r4,#1
00051c  ea000002          B        |L1.1324|
;;;211                }
;;;212            }
;;;213            else {
;;;214                *string++ = c;
                  |L1.1312|
000520  e4c45001          STRB     r5,[r4],#1
;;;215                Uart_SendByte(c);
000524  e1a00005          MOV      r0,r5
000528  ebfffffe          BL       Uart_SendByte
;;;216            }
;;;217        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -