📄 2442lib.txt
字号:
000200 ea00000e B |L1.576|
;;;218
;;;219 else if(ch==1)
|L1.516|
000204 e3500001 CMP r0,#1
000208 1a000005 BNE |L1.548|
;;;220 while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty.
00020c e1a00000 NOP
|L1.528|
000210 e59f126c LDR r1,|L1.1156|
000214 e5911010 LDR r1,[r1,#0x10]
000218 e3110004 TST r1,#4
00021c 0afffffb BEQ |L1.528|
000220 ea000006 B |L1.576|
;;;221
;;;222 else if(ch==2)
|L1.548|
000224 e3500002 CMP r0,#2
000228 1a000004 BNE |L1.576|
;;;223 while(!(rUTRSTAT2 & 0x4)); //Wait until tx shifter is empty.
00022c e1a00000 NOP
|L1.560|
000230 e59f1250 LDR r1,|L1.1160|
000234 e5911010 LDR r1,[r1,#0x10]
000238 e3110004 TST r1,#4
00023c 0afffffb BEQ |L1.560|
;;;224 }
|L1.576|
000240 e1a0f00e MOV pc,lr
ENDP
Uart_Init PROC
;;;176 void Uart_Init(int pclk,int baud)
;;;177 {
000244 e92d4030 STMFD sp!,{r4,r5,lr}
000248 e24dd02c SUB sp,sp,#0x2c
00024c e1a04000 MOV r4,r0
000250 e1a05001 MOV r5,r1
;;;178 int i;
;;;179 if(pclk == 0)
000254 e3540000 CMP r4,#0
000258 1a000000 BNE |L1.608|
;;;180 pclk = PCLK;
00025c e59f4228 LDR r4,|L1.1164|
;;;181 rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable
|L1.608|
000260 e3a00000 MOV r0,#0
000264 e3a01450 MOV r1,#0x50000000
000268 e5810008 STR r0,[r1,#8]
;;;182 rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable
00026c e3a00000 MOV r0,#0
000270 e2811c40 ADD r1,r1,#0x4000
000274 e5810008 STR r0,[r1,#8]
;;;183 rUFCON2 = 0x0; //UART channel 2 FIFO control register, FIFO disable
000278 e3a00000 MOV r0,#0
00027c e2811c40 ADD r1,r1,#0x4000
000280 e5810008 STR r0,[r1,#8]
;;;184 rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable
000284 e3a00000 MOV r0,#0
000288 e3a01450 MOV r1,#0x50000000
00028c e581000c STR r0,[r1,#0xc]
;;;185 rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable
000290 e3a00000 MOV r0,#0
000294 e2811c40 ADD r1,r1,#0x4000
000298 e581000c STR r0,[r1,#0xc]
;;;186 //UART0
;;;187 rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
00029c e3a00003 MOV r0,#3
0002a0 e3a01450 MOV r1,#0x50000000
0002a4 e5810000 STR r0,[r1,#0]
;;;188 // [10] [9] [8] [7] [6] [5] [4] [3:2] [1:0]
;;;189 // Clock Sel, Tx Int, Rx Int, Rx Time Out, Rx err, Loop-back, Send break, Transmit Mode, Receive Mode
;;;190 // 0 1 0 , 0 1 0 0 , 01 01
;;;191 // PCLK Level Pulse Disable Generate Normal Normal Interrupt or Polling
;;;192 rUCON0 = 0x245; // Control register
0002a8 e59f01e0 LDR r0,|L1.1168|
0002ac e3a01450 MOV r1,#0x50000000
0002b0 e5810004 STR r0,[r1,#4]
;;;193 rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); //Baud rate divisior register 0
0002b4 e1a00004 MOV r0,r4
0002b8 ebfffffe BL _dflt
0002bc e98d0003 STMIB sp,{r0,r1}
0002c0 e28f0f73 ADR r0,|L1.1172|
0002c4 e890000c LDMIA r0,{r2,r3}
0002c8 e59d0004 LDR r0,[sp,#4]
0002cc ebfffffe BL _dmul
0002d0 e58d0014 STR r0,[sp,#0x14]
0002d4 e58d1018 STR r1,[sp,#0x18]
0002d8 e1a00005 MOV r0,r5
0002dc ebfffffe BL _dflt
0002e0 e58d000c STR r0,[sp,#0xc]
0002e4 e58d1010 STR r1,[sp,#0x10]
0002e8 e59d2014 LDR r2,[sp,#0x14]
0002ec e59d3018 LDR r3,[sp,#0x18]
0002f0 ebfffffe BL _drdiv
0002f4 e58d001c STR r0,[sp,#0x1c]
0002f8 e58d1020 STR r1,[sp,#0x20]
0002fc e28f0f66 ADR r0,|L1.1180|
000300 e890000c LDMIA r0,{r2,r3}
000304 e59d001c LDR r0,[sp,#0x1c]
000308 ebfffffe BL _dadd
00030c e58d0024 STR r0,[sp,#0x24]
000310 e58d1028 STR r1,[sp,#0x28]
000314 ebfffffe BL _dfix
000318 e2400001 SUB r0,r0,#1
00031c e3a01450 MOV r1,#0x50000000
000320 e5810028 STR r0,[r1,#0x28]
;;;194 //UART1
;;;195 rULCON1 = 0x3;
000324 e3a00003 MOV r0,#3
000328 e2811c40 ADD r1,r1,#0x4000
00032c e5810000 STR r0,[r1,#0]
;;;196 rUCON1 = 0x245;
000330 e59f0158 LDR r0,|L1.1168|
000334 e1c11000 BIC r1,r1,r0
000338 e5810004 STR r0,[r1,#4]
;;;197 rUBRDIV1=( (int)(pclk/16./baud+0.5) -1 );
00033c e1a00004 MOV r0,r4
000340 ebfffffe BL _dflt
000344 e98d0003 STMIB sp,{r0,r1}
000348 e28f0f51 ADR r0,|L1.1172|
00034c e890000c LDMIA r0,{r2,r3}
000350 e59d0004 LDR r0,[sp,#4]
000354 ebfffffe BL _dmul
000358 e58d0014 STR r0,[sp,#0x14]
00035c e58d1018 STR r1,[sp,#0x18]
000360 e1a00005 MOV r0,r5
000364 ebfffffe BL _dflt
000368 e58d000c STR r0,[sp,#0xc]
00036c e58d1010 STR r1,[sp,#0x10]
000370 e59d2014 LDR r2,[sp,#0x14]
000374 e59d3018 LDR r3,[sp,#0x18]
000378 ebfffffe BL _drdiv
00037c e58d001c STR r0,[sp,#0x1c]
000380 e58d1020 STR r1,[sp,#0x20]
000384 e28f0f44 ADR r0,|L1.1180|
000388 e890000c LDMIA r0,{r2,r3}
00038c e59d001c LDR r0,[sp,#0x1c]
000390 ebfffffe BL _dadd
000394 e58d0024 STR r0,[sp,#0x24]
000398 e58d1028 STR r1,[sp,#0x28]
00039c ebfffffe BL _dfix
0003a0 e2400001 SUB r0,r0,#1
0003a4 e59f10d8 LDR r1,|L1.1156|
0003a8 e5810028 STR r0,[r1,#0x28]
;;;198 //UART2
;;;199 rULCON2 = 0x3;
0003ac e3a00003 MOV r0,#3
0003b0 e0211700 EOR r1,r1,r0,LSL #14
0003b4 e5810000 STR r0,[r1,#0]
;;;200 rUCON2 = 0x245;
0003b8 e59f00d0 LDR r0,|L1.1168|
0003bc e1c11000 BIC r1,r1,r0
0003c0 e5810004 STR r0,[r1,#4]
;;;201 rUBRDIV2=( (int)(pclk/16./baud+0.5) -1 );
0003c4 e1a00004 MOV r0,r4
0003c8 ebfffffe BL _dflt
0003cc e98d0003 STMIB sp,{r0,r1}
0003d0 e28f00bc ADR r0,|L1.1172|
0003d4 e890000c LDMIA r0,{r2,r3}
0003d8 e59d0004 LDR r0,[sp,#4]
0003dc ebfffffe BL _dmul
0003e0 e58d0014 STR r0,[sp,#0x14]
0003e4 e58d1018 STR r1,[sp,#0x18]
0003e8 e1a00005 MOV r0,r5
0003ec ebfffffe BL _dflt
0003f0 e58d000c STR r0,[sp,#0xc]
0003f4 e58d1010 STR r1,[sp,#0x10]
0003f8 e59d2014 LDR r2,[sp,#0x14]
0003fc e59d3018 LDR r3,[sp,#0x18]
000400 ebfffffe BL _drdiv
000404 e58d001c STR r0,[sp,#0x1c]
000408 e58d1020 STR r1,[sp,#0x20]
00040c e28f0088 ADR r0,|L1.1180|
000410 e890000c LDMIA r0,{r2,r3}
000414 e59d001c LDR r0,[sp,#0x1c]
000418 ebfffffe BL _dadd
00041c e58d0024 STR r0,[sp,#0x24]
000420 e58d1028 STR r1,[sp,#0x28]
000424 ebfffffe BL _dfix
000428 e2400001 SUB r0,r0,#1
00042c e59f1054 LDR r1,|L1.1160|
000430 e5810028 STR r0,[r1,#0x28]
;;;202
;;;203 Uart_TxEmpty(whichUart);
000434 e59f0068 LDR r0,|L1.1188|
000438 e5900000 LDR r0,[r0,#0] ; whichUart
00043c ebfffffe BL Uart_TxEmpty
;;;204 //for(i=0;i<100;i++);
;;;205 }
000440 e28dd02c ADD sp,sp,#0x2c
000444 e8bd8030 LDMFD sp!,{r4,r5,pc}
|L1.1096|
000448 00000000 DCD ||.bss$2||
|L1.1100|
00044c 00003010 DCD 0x00003010
|L1.1104|
000450 00003030 DCD 0x00003030
|L1.1108|
000454 00f42400 DCD 0x00f42400
|L1.1112|
000458 007fffff DCD 0x007fffff
|L1.1116|
00045c 00155555 DCD 0x00155555
|L1.1120|
000460 000007ff DCD 0x000007ff
|L1.1124|
000464 aaaaaaaa DCD 0xaaaaaaaa
|L1.1128|
000468 0000ffff DCD 0x0000ffff
|L1.1132|
00046c 000055aa DCD 0x000055aa
|L1.1136|
000470 ff95ffba DCD 0xff95ffba
|L1.1140|
000474 002afaaa DCD 0x002afaaa
|L1.1144|
000478 0016aaaa DCD 0x0016aaaa
|L1.1148|
00047c 00001fff DCD 0x00001fff
|L1.1152|
000480 22222222 DCD 0x22222222
|L1.1156|
000484 50004000 DCD 0x50004000
|L1.1160|
000488 50008000 DCD 0x50008000
|L1.1164|
00048c 02f1a980 DCD 0x02f1a980
|L1.1168|
000490 00000245 DCD 0x00000245
|L1.1172|
000494 00000000 DCFD 0x3fb0000000000000
000498 3fb00000
|L1.1180|
00049c 00000000 DCFD 0x3fe0000000000000 ; 0.5
0004a0 3fe00000
|L1.1188|
0004a4 00000004 DCD ||.data$0|| + 4
ENDP
Uart_Select PROC
;;;208 void Uart_Select(int ch)
;;;209 {
0004a8 e51f100c LDR r1,|L1.1188|
;;;210 whichUart = ch;
0004ac e5810000 STR r0,[r1,#0] ; whichUart
;;;211 }
0004b0 e1a0f00e MOV pc,lr
ENDP
Uart_Getch PROC
;;;227 char Uart_Getch(void)
;;;228 {
0004b4 e51f0018 LDR r0,|L1.1188|
;;;229 if(whichUart==0)
0004b8 e5900000 LDR r0,[r0,#0] ; whichUart
0004bc e3500000 CMP r0,#0
0004c0 1a000007 BNE |L1.1252|
;;;230 {
;;;231 while(!(rUTRSTAT0 & 0x1)); //Receive data ready
0004c4 e1a00000 NOP
|L1.1224|
0004c8 e3a00450 MOV r0,#0x50000000
0004cc e5900010 LDR r0,[r0,#0x10]
0004d0 e3100001 TST r0,#1
0004d4 0afffffb BEQ |L1.1224|
;;;232 return RdURXH0();
0004d8 e3a00450 MOV r0,#0x50000000
0004dc e5d00024 LDRB r0,[r0,#0x24]
;;;233 }
;;;234 else if(whichUart==1)
;;;235 {
;;;236 while(!(rUTRSTAT1 & 0x1)); //Receive data ready
;;;237 return RdURXH1();
;;;238 }
;;;239 else if(whichUart==2)
;;;240 {
;;;241 while(!(rUTRSTAT2 & 0x1)); //Receive data ready
;;;242 return RdURXH2();
;;;243 }
;;;244 }
|L1.1248|
0004e0 e1a0f00e MOV pc,lr
|L1.1252|
0004e4 e51f0048 LDR r0,|L1.1188| ;234
0004e8 e5900000 LDR r0,[r0,#0] ;234 ; whichUart
0004ec e3500001 CMP r0,#1 ;234
0004f0 1a000007 BNE |L1.1300| ;234
0004f4 e1a00000 NOP ;236
|L1.1272|
0004f8 e51f007c LDR r0,|L1.1156| ;236
0004fc e5900010 LDR r0,[r0,#0x10] ;236
000500 e3100001 TST r0,#1 ;236
000504 0afffffb BEQ |L1.1272| ;236
000508 e51f008c LDR r0,|L1.1156| ;237
00050c e5d00024 LDRB r0,[r0,#0x24] ;237
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -