📄 uart0.txt
字号:
0008f8 e3100001 TST r0,#1
0008fc 0a000001 BEQ |L1.2312|
000900 ebfffffe BL __sub_Uart0_RxInt
000904 ea000000 B |L1.2316|
;;;254 else __sub_Uart0_RxErrInt();
|L1.2312|
000908 ebfffffe BL __sub_Uart0_RxErrInt
;;;255
;;;256 ClearPending(BIT_UART0);
|L1.2316|
00090c e3a00b80 MOV r0,#0x20000
000910 e51f1148 LDR r1,|L1.2000|
000914 e5810000 STR r0,[r1,#0]
000918 e1c10000 BIC r0,r1,r0
00091c e5900010 LDR r0,[r0,#0x10]
000920 e5810010 STR r0,[r1,#0x10]
000924 e1a00001 MOV r0,r1
000928 e5900010 LDR r0,[r0,#0x10]
;;;257 rSUBSRCPND=(BIT_SUB_RXD0|BIT_SUB_ERR0); // Clear Sub int pending
00092c e3a00005 MOV r0,#5
000930 e1c11000 BIC r1,r1,r0
000934 e5810018 STR r0,[r1,#0x18]
;;;258 rINTSUBMSK&=~(BIT_SUB_RXD0|BIT_SUB_ERR0);
000938 e1c10000 BIC r0,r1,r0
00093c e590001c LDR r0,[r0,#0x1c]
000940 e3c00005 BIC r0,r0,#5
000944 e581001c STR r0,[r1,#0x1c]
;;;259 }
000948 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
00094c e25ef004 SUBS pc,lr,#4
ENDP
Test_Uart0_Int PROC
;;;317 void Test_Uart0_Int(void)
;;;318 {
000950 e92d4010 STMFD sp!,{r4,lr}
;;;319 U8 ch;
;;;320
;;;321 Uart_Port_Set();
000954 ebfffffe BL Uart_Port_Set
;;;322 Uart_Select(0);
000958 e3a00000 MOV r0,#0
00095c ebfffffe BL Uart_Select
;;;323
;;;324 // edited by junon start
;;;325 /******** For operating clock test *********/
;;;326 Uart_Printf("[Uart channel 0 Interrupt test]\n");
000960 e28f0f89 ADR r0,|L1.2956|
000964 ebfffffe BL _printf
;;;327 Uart_Printf("Select operating clock 1. PCLK 2. UCLK \nChoose : ");
000968 e28f0f90 ADR r0,|L1.2992|
00096c ebfffffe BL _printf
;;;328 ch = Uart_Getch();
000970 ebfffffe BL Uart_Getch
000974 e1a04000 MOV r4,r0
;;;329 if (ch == '2')
000978 e3540032 CMP r4,#0x32
00097c 1a000018 BNE |L1.2532|
;;;330 {
;;;331 Uart_Uclk_En(0, 115200);
000980 e59f125c LDR r1,|L1.3044|
000984 e3a00000 MOV r0,#0
000988 ebfffffe BL Uart_Uclk_En
;;;332 // Timer1 - PCLK/2 setting : connect UCLK input pin & TOUT1 output pin..
;;;333 rTCFG0 &= ~(0xff); // prescaler0 = 0
00098c e3a00444 MOV r0,#0x44000000
000990 e5900000 LDR r0,[r0,#0]
000994 e3c000ff BIC r0,r0,#0xff
000998 e3a01444 MOV r1,#0x44000000
00099c e5810000 STR r0,[r1,#0]
;;;334 rTCFG1 &= ~(0xf<<4); // MUX input of timer1 = 1/2
0009a0 e3a00444 MOV r0,#0x44000000
0009a4 e5900004 LDR r0,[r0,#4]
0009a8 e3c000f0 BIC r0,r0,#0xf0
0009ac e3a01444 MOV r1,#0x44000000
0009b0 e5810004 STR r0,[r1,#4]
;;;335 rTCNTB1 = 0;
0009b4 e3a00000 MOV r0,#0
0009b8 e3a01444 MOV r1,#0x44000000
0009bc e5810018 STR r0,[r1,#0x18]
;;;336 rTCMPB1 = 0; // duty 50% clock
0009c0 e3a00000 MOV r0,#0
0009c4 e3a01444 MOV r1,#0x44000000
0009c8 e581001c STR r0,[r1,#0x1c]
;;;337 rTCON |= (1<<8); // Timer start
0009cc e3a00444 MOV r0,#0x44000000
0009d0 e5900008 LDR r0,[r0,#8]
0009d4 e3800f40 ORR r0,r0,#0x100
0009d8 e3a01444 MOV r1,#0x44000000
0009dc e5810008 STR r0,[r1,#8]
0009e0 ea000002 B |L1.2544|
;;;338 }
;;;339 else
;;;340 Uart_Pclk_En(0, 115200);
|L1.2532|
0009e4 e59f11f8 LDR r1,|L1.3044|
0009e8 e3a00000 MOV r0,#0
0009ec ebfffffe BL Uart_Pclk_En
;;;341
;;;342 /*********** UART0 Tx test with interrupt ***********/
;;;343 isTxInt=1;
|L1.2544|
0009f0 e3a00001 MOV r0,#1
0009f4 e51f1224 LDR r1,|L1.2008|
0009f8 e5810000 STR r0,[r1,#0] ; isTxInt
;;;344 uart0TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART0 Tx interrupt test is good!!!!\r\n";
0009fc e59f01e4 LDR r0,|L1.3048|
000a00 e51f1234 LDR r1,|L1.2004|
000a04 e5810000 STR r0,[r1,#0] ; uart0TxStr
;;;345 Uart_Printf("\n[Uart channel 0 Tx Interrupt Test]\n");
000a08 e28f0f77 ADR r0,|L1.3052|
000a0c ebfffffe BL _printf
;;;346
;;;347 pISR_UART0=(unsigned)Uart0_TxInt;
000a10 e59f01fc LDR r0,|L1.3092|
000a14 e59f11fc LDR r1,|L1.3096|
000a18 e5810f64 STR r0,[r1,#0xf64]
;;;348
;;;349 rUFCON0 &= ~(1); // FIFO disable
000a1c e51f05a0 LDR r0,|L1.1156|
000a20 e5900008 LDR r0,[r0,#8]
000a24 e3c00001 BIC r0,r0,#1
000a28 e51f15ac LDR r1,|L1.1156|
000a2c e5810008 STR r0,[r1,#8]
;;;350
;;;351 rULCON0=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,one stop bit, 8bit
000a30 e3a00003 MOV r0,#3
000a34 e1c11000 BIC r1,r1,r0
000a38 e5810000 STR r0,[r1,#0]
;;;352 rUCON0 &= 0x400; // For the PCLK <-> UCLK fuction
000a3c e1c10000 BIC r0,r1,r0
000a40 e5900004 LDR r0,[r0,#4]
000a44 e2000e40 AND r0,r0,#0x400
000a48 e5810004 STR r0,[r1,#4]
;;;353 rUCON0 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000a4c e1a00001 MOV r0,r1
000a50 e5900004 LDR r0,[r0,#4]
000a54 e3800005 ORR r0,r0,#5
000a58 e5810004 STR r0,[r1,#4]
;;;354 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;355 Uart_TxEmpty(0); //wait until tx buffer is empty.
000a5c e3a00000 MOV r0,#0
000a60 ebfffffe BL Uart_TxEmpty
;;;356 rINTMSK=~(BIT_UART0);
000a64 e3e00b80 MVN r0,#0x20000
000a68 e51f12a0 LDR r1,|L1.2000|
000a6c e5810008 STR r0,[r1,#8]
;;;357 rINTSUBMSK=~(BIT_SUB_TXD0);
000a70 e3e00002 MVN r0,#2
000a74 e0011000 AND r1,r1,r0
000a78 e581001c STR r0,[r1,#0x1c]
;;;358
;;;359 while(isTxInt);
000a7c e1a00000 NOP
|L1.2688|
000a80 e51f02b0 LDR r0,|L1.2008|
000a84 e5900000 LDR r0,[r0,#0] ; isTxInt
000a88 e3500000 CMP r0,#0
000a8c 1afffffb BNE |L1.2688|
;;;360
;;;361 /*********** UART0 Rx test with interrupt ***********/
;;;362 isRxInt=1;
000a90 e3a00001 MOV r0,#1
000a94 e51f1244 LDR r1,|L1.2136|
000a98 e5810000 STR r0,[r1,#0] ; isRxInt
;;;363 uart0RxStr=(char *)UARTBUFFER;
000a9c e3a00544 MOV r0,#0x11000000
000aa0 e51f11d4 LDR r1,|L1.2260|
000aa4 e5810000 STR r0,[r1,#0] ; uart0RxStr
;;;364 Uart_Printf("\n[Uart channel 0 Rx Interrupt Test]:\n");
000aa8 e28f0f5b ADR r0,|L1.3100|
000aac ebfffffe BL _printf
;;;365 Uart_Printf("After typing ENTER key, you will see the characters which was typed by you.");
000ab0 e59f018c LDR r0,|L1.3140|
000ab4 ebfffffe BL _printf
;;;366 Uart_Printf("\nTo quit, press ENTER key.!!!\n");
000ab8 e28f0f62 ADR r0,|L1.3144|
000abc ebfffffe BL _printf
;;;367 Uart_TxEmpty(0); //wait until tx buffer is empty.
000ac0 e3a00000 MOV r0,#0
000ac4 ebfffffe BL Uart_TxEmpty
;;;368 pISR_UART0 =(unsigned)Uart0_RxIntOrErr;
000ac8 e59f0198 LDR r0,|L1.3176|
000acc e59f1144 LDR r1,|L1.3096|
000ad0 e5810f64 STR r0,[r1,#0xf64]
;;;369 rULCON0=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,one stop bit, 8bit
000ad4 e3a00003 MOV r0,#3
000ad8 e51f165c LDR r1,|L1.1156|
000adc e5810000 STR r0,[r1,#0]
;;;370 rUCON0 &= 0x400; // For the PCLK <-> UCLK fuction
000ae0 e1c10000 BIC r0,r1,r0
000ae4 e5900004 LDR r0,[r0,#4]
000ae8 e2000e40 AND r0,r0,#0x400
000aec e5810004 STR r0,[r1,#4]
;;;371 rUCON0 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000af0 e1a00001 MOV r0,r1
000af4 e5900004 LDR r0,[r0,#4]
000af8 e3800045 ORR r0,r0,#0x45
000afc e5810004 STR r0,[r1,#4]
;;;372 //Clock,Tx:pulse,Rx:pulse,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;373
;;;374 // Clear Int Pending and Unmask
;;;375 ClearPending(BIT_UART0);
000b00 e3a00b80 MOV r0,#0x20000
000b04 e2411642 SUB r1,r1,#0x4200000
000b08 e5810000 STR r0,[r1,#0]
000b0c e1c10000 BIC r0,r1,r0
000b10 e5900010 LDR r0,[r0,#0x10]
000b14 e5810010 STR r0,[r1,#0x10]
000b18 e1a00001 MOV r0,r1
000b1c e5900010 LDR r0,[r0,#0x10]
;;;376 rINTMSK=~(BIT_UART0);
000b20 e3e00b80 MVN r0,#0x20000
000b24 e0011000 AND r1,r1,r0
000b28 e5810008 STR r0,[r1,#8]
;;;377 rSUBSRCPND=(BIT_SUB_TXD0|BIT_SUB_RXD0|BIT_SUB_ERR0);
000b2c e3a00007 MOV r0,#7
000b30 e1c11000 BIC r1,r1,r0
000b34 e5810018 STR r0,[r1,#0x18]
;;;378 rINTSUBMSK=~(BIT_SUB_RXD0|BIT_SUB_ERR0);
000b38 e3e00005 MVN r0,#5
000b3c e0011000 AND r1,r1,r0
000b40 e581001c STR r0,[r1,#0x1c]
;;;379
;;;380 while(isRxInt);
000b44 e1a00000 NOP
|L1.2888|
000b48 e51f02f8 LDR r0,|L1.2136|
000b4c e5900000 LDR r0,[r0,#0] ; isRxInt
000b50 e3500000 CMP r0,#0
000b54 1afffffb BNE |L1.2888|
;;;381
;;;382 rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_ERR0);
000b58 e51f0390 LDR r0,|L1.2000|
000b5c e590001c LDR r0,[r0,#0x1c]
000b60 e3800005 ORR r0,r0,#5
000b64 e51f139c LDR r1,|L1.2000|
000b68 e581001c STR r0,[r1,#0x1c]
;;;383 rINTMSK|=(BIT_UART0);
000b6c e1a00001 MOV r0,r1
000b70 e5900008 LDR r0,[r0,#8]
000b74 e3800b80 ORR r0,r0,#0x20000
000b78 e5810008 STR r0,[r1,#8]
;;;384
;;;385 Uart_Printf("%s\n",(char *)UARTBUFFER);
000b7c e3a01544 MOV r1,#0x11000000
000b80 e28f00e4 ADR r0,|L1.3180|
000b84 ebfffffe BL _printf
;;;386 //Uart_Port_Return();
;;;387 }
000b88 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2956|
000b8c 7261555b DCB "[Uar"
000b90 68632074 DCB "t ch"
000b94 656e6e61 DCB "anne"
000b98 2030206c DCB "l 0 "
000b9c 65746e49 DCB "Inte"
000ba0 70757272 DCB "rrup"
000ba4 65742074 DCB "t te"
000ba8 0a5d7473 DCB "st]\n"
000bac 00000000 DCB "\0\0\0\0"
|L1.2992|
000bb0 656c6553 DCB "Sele"
000bb4 6f207463 DCB "ct o"
000bb8 61726570 DCB "pera"
000bbc 676e6974 DCB "ting"
000bc0 6f6c6320 DCB " clo"
000bc4 31206b63 DCB "ck 1"
000bc8 4350202e DCB ". PC"
000bcc 20204b4c DCB "LK "
000bd0 55202e32 DCB "2. U"
000bd4 204b4c43 DCB "CLK "
000bd8 6f68430a DCB "\nCho"
000bdc 2065736f DCB "ose "
000be0 0000203a DCB ": \0\0"
|L1.3044|
000be4 0001c200 DCD 0x0001c200
|L1.3048|
000be8 00000118 DCD ||.constdata$1|| + 280
|L1.3052|
000bec 61555b0a DCB "\n[Ua"
000bf0 63207472 DCB "rt c"
000bf4 6e6e6168 DCB "hann"
000bf8 30206c65 DCB "el 0"
000bfc 20785420 DCB " Tx "
000c00 65746e49 DCB "Inte"
000c04 70757272 DCB "rrup"
000c08 65542074 DCB "t Te"
000c0c 0a5d7473 DCB "st]\n"
000c10 00000000 DCB "\0\0\0\0"
|L1.3092|
000c14 00000000 DCD Uart0_TxInt
|L1.3096|
000c18 13fff000 DCD 0x13fff000
|L1.3100|
000c1c 61555b0a DCB "\n[Ua"
000c20 63207472 DCB "rt c"
000c24 6e6e6168 DCB "hann"
000c28 30206c65 DCB "el 0"
000c2c 20785220 DCB " Rx "
000c30 65746e49 DCB "Inte"
000c34 70757272 DCB "rrup"
000c38 65542074 DCB "t Te"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -