📄 uart0.txt
字号:
000a48 203a2031 DCB "1 : "
000a4c 000a6425 DCB "%d\n\0"
|L1.2640|
000a50 178b38c1 DCD 0x178b38c1
|L1.2644|
000a54 203a2032 DCB "2 : "
000a58 000a6425 DCB "%d\n\0"
|L1.2652|
000a5c 1f4add41 DCD 0x1f4add41
|L1.2656|
000a60 203a2033 DCB "3 : "
000a64 000a6425 DCB "%d\n\0"
|L1.2664|
000a68 00000000 DCD |L1.1208|
ENDP
Uart0_TxInt PROC
;;;231 void __irq Uart0_TxInt(void)
;;;232 {
000a6c e92d0007 STMFD sp!,{r0-r2}
;;;233 rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0); // Just for the safety
000a70 e3a0044a MOV r0,#0x4a000000
000a74 e590001c LDR r0,[r0,#0x1c]
000a78 e3800007 ORR r0,r0,#7
000a7c e3a0144a MOV r1,#0x4a000000
000a80 e581001c STR r0,[r1,#0x1c]
;;;234 if(*uart0TxStr != '\0')
000a84 e59f019c LDR r0,|L1.3112|
000a88 e5900000 LDR r0,[r0,#0] ; uart0TxStr
000a8c e5d00000 LDRB r0,[r0,#0]
000a90 e3500000 CMP r0,#0
000a94 0a000018 BEQ |L1.2812|
;;;235 {
;;;236 WrUTXH0(*uart0TxStr++);
000a98 e59f0188 LDR r0,|L1.3112|
000a9c e5901000 LDR r1,[r0,#0] ; uart0TxStr
000aa0 e5d10000 LDRB r0,[r1,#0]
000aa4 e2811001 ADD r1,r1,#1
000aa8 e59f2178 LDR r2,|L1.3112|
000aac e5821000 STR r1,[r2,#0] ; uart0TxStr
000ab0 e3a01450 MOV r1,#0x50000000
000ab4 e5c10020 STRB r0,[r1,#0x20]
;;;237 ClearPending(BIT_UART0); // Clear master pending
000ab8 e3a00540 MOV r0,#0x10000000
000abc e3a0144a MOV r1,#0x4a000000
000ac0 e5810000 STR r0,[r1,#0]
000ac4 e3a00540 MOV r0,#0x10000000
000ac8 e3a0144a MOV r1,#0x4a000000
000acc e5810010 STR r0,[r1,#0x10]
000ad0 e3a0044a MOV r0,#0x4a000000
000ad4 e5900010 LDR r0,[r0,#0x10]
;;;238 rSUBSRCPND=(BIT_SUB_TXD0); // Clear Sub int pending
000ad8 e3a00002 MOV r0,#2
000adc e3a0144a MOV r1,#0x4a000000
000ae0 e5810018 STR r0,[r1,#0x18]
;;;239 rINTSUBMSK&=~(BIT_SUB_TXD0); // Unmask sub int
000ae4 e3a0044a MOV r0,#0x4a000000
000ae8 e590001c LDR r0,[r0,#0x1c]
000aec e3c00002 BIC r0,r0,#2
000af0 e3a0144a MOV r1,#0x4a000000
000af4 e581001c STR r0,[r1,#0x1c]
000af8 ea000012 B |L1.2888|
;;;240 }
;;;241 else
;;;242 {
;;;243 isTxInt=0;
|L1.2812|
000afc e3a00000 MOV r0,#0
000b00 e59f1124 LDR r1,|L1.3116|
000b04 e5810000 STR r0,[r1,#0] ; isTxInt
;;;244 ClearPending(BIT_UART0); // Clear master pending
000b08 e3a00540 MOV r0,#0x10000000
000b0c e3a0144a MOV r1,#0x4a000000
000b10 e5810000 STR r0,[r1,#0]
000b14 e3a00540 MOV r0,#0x10000000
000b18 e3a0144a MOV r1,#0x4a000000
000b1c e5810010 STR r0,[r1,#0x10]
000b20 e3a0044a MOV r0,#0x4a000000
000b24 e5900010 LDR r0,[r0,#0x10]
;;;245 rSUBSRCPND=(BIT_SUB_TXD0); // Clear Sub int pending
000b28 e3a00002 MOV r0,#2
000b2c e3a0144a MOV r1,#0x4a000000
000b30 e5810018 STR r0,[r1,#0x18]
;;;246 rINTMSK|=(BIT_UART0);
000b34 e3a0044a MOV r0,#0x4a000000
000b38 e5900008 LDR r0,[r0,#8]
000b3c e3800540 ORR r0,r0,#0x10000000
000b40 e3a0144a MOV r1,#0x4a000000
000b44 e5810008 STR r0,[r1,#8]
;;;247 }
;;;248 }
|L1.2888|
000b48 e8bd0007 LDMFD sp!,{r0-r2}
000b4c e25ef004 SUBS pc,lr,#4
ENDP
__sub_Uart0_RxErrInt PROC
;;;275 void __sub_Uart0_RxErrInt(void)
;;;276 {
000b50 e92d4010 STMFD sp!,{r4,lr}
;;;277 U32 iStatus;
;;;278
;;;279 iStatus = rUERSTAT0;
000b54 e3a00450 MOV r0,#0x50000000
000b58 e5900014 LDR r0,[r0,#0x14]
000b5c e1a04000 MOV r4,r0
;;;280
;;;281 switch(iStatus)//to clear and check the status of register bits
000b60 e354000e CMP r4,#0xe
000b64 908ff104 ADDLS pc,pc,r4,LSL #2
000b68 ea000026 B |L1.3080|
000b6c ea000025 B |L1.3080|
000b70 ea00000c B |L1.2984|
000b74 ea00000e B |L1.2996|
000b78 ea000022 B |L1.3080|
000b7c ea00000f B |L1.3008|
000b80 ea000020 B |L1.3080|
000b84 ea000010 B |L1.3020|
000b88 ea00001e B |L1.3080|
000b8c ea000011 B |L1.3032|
000b90 ea00001c B |L1.3080|
000b94 ea000012 B |L1.3044|
000b98 ea00001a B |L1.3080|
000b9c ea000013 B |L1.3056|
000ba0 ea000018 B |L1.3080|
000ba4 ea000014 B |L1.3068|
;;;282 {
;;;283 case 1:
;;;284 Uart_Printf("Overrun error!\n");
|L1.2984|
000ba8 e28f0080 ADR r0,|L1.3120|
000bac ebfffffe BL Uart_Printf
;;;285 break;
000bb0 ea000018 B |L1.3096|
;;;286 case 2:
;;;287 Uart_Printf("Parity error!\n");
|L1.2996|
000bb4 e28f0084 ADR r0,|L1.3136|
000bb8 ebfffffe BL Uart_Printf
;;;288 break;
000bbc ea000015 B |L1.3096|
;;;289 case 4:
;;;290 Uart_Printf("Frame error!\n");
|L1.3008|
000bc0 e28f0088 ADR r0,|L1.3152|
000bc4 ebfffffe BL Uart_Printf
;;;291 break;
000bc8 ea000012 B |L1.3096|
;;;292 case 6:
;;;293 Uart_Printf("Parity, Frame error!\n");
|L1.3020|
000bcc e28f008c ADR r0,|L1.3168|
000bd0 ebfffffe BL Uart_Printf
;;;294 break;
000bd4 ea00000f B |L1.3096|
;;;295 case 8:
;;;296 Uart_Printf("Breake detect\n");
|L1.3032|
000bd8 e28f0098 ADR r0,|L1.3192|
000bdc ebfffffe BL Uart_Printf
;;;297 break;
000be0 ea00000c B |L1.3096|
;;;298 case 0xa:
;;;299 Uart_Printf("Parity error & Break detect!\n");
|L1.3044|
000be4 e28f009c ADR r0,|L1.3208|
000be8 ebfffffe BL Uart_Printf
;;;300 break;
000bec ea000009 B |L1.3096|
;;;301 case 0xc:
;;;302 Uart_Printf("Frame error & Breake detect\n");
|L1.3056|
000bf0 e28f00b0 ADR r0,|L1.3240|
000bf4 ebfffffe BL Uart_Printf
;;;303 break;
000bf8 ea000006 B |L1.3096|
;;;304 case 0xe:
;;;305 Uart_Printf("Parity, Frame error & Break detect!\n");
|L1.3068|
000bfc e28f00c4 ADR r0,|L1.3272|
000c00 ebfffffe BL Uart_Printf
;;;306 break;
000c04 ea000003 B |L1.3096|
;;;307 default :
;;;308 Uart_Printf("Unknown error : 0x%x\n", iStatus);
|L1.3080|
000c08 e1a01004 MOV r1,r4
000c0c e28f00dc ADR r0,|L1.3312|
000c10 ebfffffe BL Uart_Printf
;;;309 break;
000c14 e1a00000 NOP
;;;310 }
;;;311
;;;312 isRxInt=0;
|L1.3096|
000c18 e3a00000 MOV r0,#0
000c1c e59f10e4 LDR r1,|L1.3336|
000c20 e5810000 STR r0,[r1,#0] ; isRxInt
;;;313 }
000c24 e8bd8010 LDMFD sp!,{r4,pc}
|L1.3112|
000c28 00000098 DCD ||.bss$2|| + 152
|L1.3116|
000c2c 0000001c DCD ||.bss$2|| + 28
|L1.3120|
000c30 7265764f DCB "Over"
000c34 206e7572 DCB "run "
000c38 6f727265 DCB "erro"
000c3c 000a2172 DCB "r!\n\0"
|L1.3136|
000c40 69726150 DCB "Pari"
000c44 65207974 DCB "ty e"
000c48 726f7272 DCB "rror"
000c4c 00000a21 DCB "!\n\0\0"
|L1.3152|
000c50 6d617246 DCB "Fram"
000c54 72652065 DCB "e er"
000c58 21726f72 DCB "ror!"
|L1.3164|
000c5c 0000000a DCB "\n\0\0\0"
|L1.3168|
000c60 69726150 DCB "Pari"
000c64 202c7974 DCB "ty, "
000c68 6d617246 DCB "Fram"
000c6c 72652065 DCB "e er"
000c70 21726f72 DCB "ror!"
000c74 0000000a DCB "\n\0\0\0"
|L1.3192|
000c78 61657242 DCB "Brea"
000c7c 6420656b DCB "ke d"
000c80 63657465 DCB "etec"
000c84 00000a74 DCB "t\n\0\0"
|L1.3208|
000c88 69726150 DCB "Pari"
000c8c 65207974 DCB "ty e"
000c90 726f7272 DCB "rror"
000c94 42202620 DCB " & B"
000c98 6b616572 DCB "reak"
000c9c 74656420 DCB " det"
000ca0 21746365 DCB "ect!"
000ca4 0000000a DCB "\n\0\0\0"
|L1.3240|
000ca8 6d617246 DCB "Fram"
000cac 72652065 DCB "e er"
000cb0 20726f72 DCB "ror "
000cb4 72422026 DCB "& Br"
000cb8 656b6165 DCB "eake"
000cbc 74656420 DCB " det"
000cc0 0a746365 DCB "ect\n"
000cc4 00000000 DCB "\0\0\0\0"
|L1.3272|
000cc8 69726150 DCB "Pari"
000ccc 202c7974 DCB "ty, "
000cd0 6d617246 DCB "Fram"
000cd4 72652065 DCB "e er"
000cd8 20726f72 DCB "ror "
000cdc 72422026 DCB "& Br"
000ce0 206b6165 DCB "eak "
000ce4 65746564 DCB "dete"
000ce8 0a217463 DCB "ct!\n"
000cec 00000000 DCB "\0\0\0\0"
|L1.3312|
000cf0 6e6b6e55 DCB "Unkn"
000cf4 206e776f DCB "own "
000cf8 6f727265 DCB "erro"
000cfc 203a2072 DCB "r : "
000d00 78257830 DCB "0x%x"
000d04 0000000a DCB "\n\0\0\0"
|L1.3336|
000d08 00000020 DCD ||.bss$2|| + 32
ENDP
__sub_Uart0_RxInt PROC
;;;260 void __sub_Uart0_RxInt(void)
;;;261 {
000d0c e92d4008 STMFD sp!,{r3,lr}
;;;262 if(RdURXH0()!='\r')
000d10 e3a00450 MOV r0,#0x50000000
000d14 e5d00024 LDRB r0,[r0,#0x24]
000d18 e350000d CMP r0,#0xd
000d1c 0a00000d BEQ |L1.3416|
;;;263 {
;;;264 Uart_Printf("%c",RdURXH0());
000d20 e3a00450 MOV r0,#0x50000000
000d24 e5d00024 LDRB r0,[r0,#0x24]
000d28 e1a01000 MOV r1,r0
000d2c e28f004c ADR r0,|L1.3456|
000d30 ebfffffe BL Uart_Printf
;;;265 *uart0RxStr++ =(char)RdURXH0();
000d34 e3a00450 MOV r0,#0x50000000
000d38 e5d01024 LDRB r1,[r0,#0x24]
000d3c e59f0040 LDR r0,|L1.3460|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -