📄 24a0lib.txt
字号:
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 + -