📄 uart1.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\uart1.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Uart1_TxInt PROC
;;;45 void __irq Uart1_TxInt(void)
;;;46 {
|L1.0|
000000 e92d0007 STMFD sp!,{r0-r2}
;;;47 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1); // Just for the safety
000004 e3a0044a MOV r0,#0x4a000000
000008 e590001c LDR r0,[r0,#0x1c]
00000c e3800038 ORR r0,r0,#0x38
000010 e3a0144a MOV r1,#0x4a000000
000014 e581001c STR r0,[r1,#0x1c]
;;;48 if(*uart1TxStr != '\0')
000018 e59f0138 LDR r0,|L1.344|
00001c e5900000 LDR r0,[r0,#0] ; uart1TxStr
000020 e5d00000 LDRB r0,[r0,#0]
000024 e3500000 CMP r0,#0
000028 0a000018 BEQ |L1.144|
;;;49 {
;;;50 WrUTXH1(*uart1TxStr++);
00002c e59f0124 LDR r0,|L1.344|
000030 e5901000 LDR r1,[r0,#0] ; uart1TxStr
000034 e5d10000 LDRB r0,[r1,#0]
000038 e2811001 ADD r1,r1,#1
00003c e59f2114 LDR r2,|L1.344|
000040 e5821000 STR r1,[r2,#0] ; uart1TxStr
000044 e59f1110 LDR r1,|L1.348|
000048 e5c10020 STRB r0,[r1,#0x20]
;;;51 ClearPending(BIT_UART1); // Clear master pending
00004c e3a00880 MOV r0,#0x800000
000050 e3a0144a MOV r1,#0x4a000000
000054 e5810000 STR r0,[r1,#0]
000058 e3a00880 MOV r0,#0x800000
00005c e3a0144a MOV r1,#0x4a000000
000060 e5810010 STR r0,[r1,#0x10]
000064 e3a0044a MOV r0,#0x4a000000
000068 e5900010 LDR r0,[r0,#0x10]
;;;52 rSUBSRCPND=(BIT_SUB_TXD1);
00006c e3a00010 MOV r0,#0x10
000070 e3a0144a MOV r1,#0x4a000000
000074 e5810018 STR r0,[r1,#0x18]
;;;53 rINTSUBMSK&=~(BIT_SUB_TXD1); // Unmask sub int
000078 e3a0044a MOV r0,#0x4a000000
00007c e590001c LDR r0,[r0,#0x1c]
000080 e3c00010 BIC r0,r0,#0x10
000084 e3a0144a MOV r1,#0x4a000000
000088 e581001c STR r0,[r1,#0x1c]
00008c ea000012 B |L1.220|
;;;54 }
;;;55 else
;;;56 {
;;;57 isTxInt=0;
|L1.144|
000090 e3a00000 MOV r0,#0
000094 e59f10c4 LDR r1,|L1.352|
000098 e5810000 STR r0,[r1,#0] ; isTxInt
;;;58 ClearPending(BIT_UART1); // Clear master pending
00009c e3a00880 MOV r0,#0x800000
0000a0 e3a0144a MOV r1,#0x4a000000
0000a4 e5810000 STR r0,[r1,#0]
0000a8 e3a00880 MOV r0,#0x800000
0000ac e3a0144a MOV r1,#0x4a000000
0000b0 e5810010 STR r0,[r1,#0x10]
0000b4 e3a0044a MOV r0,#0x4a000000
0000b8 e5900010 LDR r0,[r0,#0x10]
;;;59 rSUBSRCPND=(BIT_SUB_TXD1);
0000bc e3a00010 MOV r0,#0x10
0000c0 e3a0144a MOV r1,#0x4a000000
0000c4 e5810018 STR r0,[r1,#0x18]
;;;60 rINTMSK|=(BIT_UART1); // Unmask sub int
0000c8 e3a0044a MOV r0,#0x4a000000
0000cc e5900008 LDR r0,[r0,#8]
0000d0 e3800880 ORR r0,r0,#0x800000
0000d4 e3a0144a MOV r1,#0x4a000000
0000d8 e5810008 STR r0,[r1,#8]
;;;61 }
;;;62 }
|L1.220|
0000dc e8bd0007 LDMFD sp!,{r0-r2}
0000e0 e25ef004 SUBS pc,lr,#4
ENDP
__sub_Uart1_RxErrInt PROC
;;;147 void __sub_Uart1_RxErrInt(void)
;;;148 {
0000e4 e92d4008 STMFD sp!,{r3,lr}
;;;149 switch(rUERSTAT1)//to clear and check the status of register bits
0000e8 e59f006c LDR r0,|L1.348|
0000ec e5900014 LDR r0,[r0,#0x14]
0000f0 e3500001 CMP r0,#1
0000f4 0a000006 BEQ |L1.276|
0000f8 e3500002 CMP r0,#2
0000fc 0a000007 BEQ |L1.288|
000100 e3500004 CMP r0,#4
000104 0a000008 BEQ |L1.300|
000108 e3500008 CMP r0,#8
00010c 1a00000c BNE |L1.324|
000110 ea000008 B |L1.312|
;;;150 {
;;;151 case 1:
;;;152 Uart_Printf("Overrun error\n");
|L1.276|
000114 e28f0048 ADR r0,|L1.356|
000118 ebfffffe BL Uart_Printf
;;;153 break;
00011c ea000009 B |L1.328|
;;;154 case 2:
;;;155 Uart_Printf("Parity error\n");
|L1.288|
000120 e28f004c ADR r0,|L1.372|
000124 ebfffffe BL Uart_Printf
;;;156 break;
000128 ea000006 B |L1.328|
;;;157 case 4:
;;;158 Uart_Printf("Frame error\n");
|L1.300|
00012c e28f0050 ADR r0,|L1.388|
000130 ebfffffe BL Uart_Printf
;;;159 break;
000134 ea000003 B |L1.328|
;;;160 case 8:
;;;161 Uart_Printf("Breake detect\n");
|L1.312|
000138 e28f0054 ADR r0,|L1.404|
00013c ebfffffe BL Uart_Printf
;;;162 break;
000140 ea000000 B |L1.328|
;;;163 default :
;;;164 break;
|L1.324|
000144 e1a00000 NOP
;;;165 }
;;;166 isRxInt=0;
|L1.328|
000148 e3a00000 MOV r0,#0
00014c e59f1050 LDR r1,|L1.420|
000150 e5810000 STR r0,[r1,#0] ; isRxInt
;;;167 }
000154 e8bd8008 LDMFD sp!,{r3,pc}
|L1.344|
000158 00000000 DCD ||.bss$2||
|L1.348|
00015c 50004000 DCD 0x50004000
|L1.352|
000160 00000000 DCD isTxInt
|L1.356|
000164 7265764f DCB "Over"
000168 206e7572 DCB "run "
00016c 6f727265 DCB "erro"
000170 00000a72 DCB "r\n\0\0"
|L1.372|
000174 69726150 DCB "Pari"
000178 65207974 DCB "ty e"
00017c 726f7272 DCB "rror"
|L1.384|
000180 0000000a DCB "\n\0\0\0"
|L1.388|
000184 6d617246 DCB "Fram"
000188 72652065 DCB "e er"
00018c 0a726f72 DCB "ror\n"
000190 00000000 DCB "\0\0\0\0"
|L1.404|
000194 61657242 DCB "Brea"
000198 6420656b DCB "ke d"
00019c 63657465 DCB "etec"
0001a0 00000a74 DCB "t\n\0\0"
|L1.420|
0001a4 00000000 DCD isRxInt
ENDP
__sub_Uart1_RxInt PROC
;;;114 void __sub_Uart1_RxInt(void)
;;;115 {
0001a8 e92d4008 STMFD sp!,{r3,lr}
;;;116 if(RdURXH1()!='\r')
0001ac e51f0058 LDR r0,|L1.348|
0001b0 e5d00024 LDRB r0,[r0,#0x24]
0001b4 e350000d CMP r0,#0xd
0001b8 0a00000d BEQ |L1.500|
;;;117 {
;;;118 Uart_Printf("%c",RdURXH1());
0001bc e51f0068 LDR r0,|L1.348|
0001c0 e5d00024 LDRB r0,[r0,#0x24]
0001c4 e1a01000 MOV r1,r0
0001c8 e28f004c ADR r0,|L1.540|
0001cc ebfffffe BL Uart_Printf
;;;119 *uart1RxStr++ =(char) RdURXH1();
0001d0 e51f007c LDR r0,|L1.348|
0001d4 e5d01024 LDRB r1,[r0,#0x24]
0001d8 e59f0040 LDR r0,|L1.544|
0001dc e5900000 LDR r0,[r0,#0] ; uart1RxStr
0001e0 e5c01000 STRB r1,[r0,#0]
0001e4 e2800001 ADD r0,r0,#1
0001e8 e59f1030 LDR r1,|L1.544|
0001ec e5810000 STR r0,[r1,#0] ; uart1RxStr
0001f0 ea000008 B |L1.536|
;;;120 }
;;;121 else
;;;122 {
;;;123 isRxInt=0;
|L1.500|
0001f4 e3a00000 MOV r0,#0
0001f8 e51f105c LDR r1,|L1.420|
0001fc e5810000 STR r0,[r1,#0] ; isRxInt
;;;124 *uart1RxStr='\0';
000200 e3a00000 MOV r0,#0
000204 e59f1014 LDR r1,|L1.544|
000208 e5911000 LDR r1,[r1,#0] ; uart1RxStr
00020c e5c10000 STRB r0,[r1,#0]
;;;125 Uart_Printf("\n");
000210 e24f0098 ADR r0,|L1.384|
000214 ebfffffe BL Uart_Printf
;;;126 }
;;;127 }
|L1.536|
000218 e8bd8008 LDMFD sp!,{r3,pc}
|L1.540|
00021c 00006325 DCB "%c\0\0"
|L1.544|
000220 00000004 DCD ||.bss$2|| + 4
ENDP
Uart1_RxIntOrErr PROC
;;;64 void __irq Uart1_RxIntOrErr(void)
;;;65 {
000224 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;66 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000228 e3a0044a MOV r0,#0x4a000000
00022c e590001c LDR r0,[r0,#0x1c]
000230 e3800038 ORR r0,r0,#0x38
000234 e3a0144a MOV r1,#0x4a000000
000238 e581001c STR r0,[r1,#0x1c]
;;;67 if(rSUBSRCPND&BIT_SUB_RXD1) __sub_Uart1_RxInt();
00023c e3a0044a MOV r0,#0x4a000000
000240 e5900018 LDR r0,[r0,#0x18]
000244 e3100008 TST r0,#8
000248 0a000001 BEQ |L1.596|
00024c ebfffffe BL __sub_Uart1_RxInt
000250 ea000000 B |L1.600|
;;;68 else __sub_Uart1_RxErrInt();
|L1.596|
000254 ebfffffe BL __sub_Uart1_RxErrInt
;;;69
;;;70 ClearPending(BIT_UART1);
|L1.600|
000258 e3a00880 MOV r0,#0x800000
00025c e3a0144a MOV r1,#0x4a000000
000260 e5810000 STR r0,[r1,#0]
000264 e3a00880 MOV r0,#0x800000
000268 e3a0144a MOV r1,#0x4a000000
00026c e5810010 STR r0,[r1,#0x10]
000270 e3a0044a MOV r0,#0x4a000000
000274 e5900010 LDR r0,[r0,#0x10]
;;;71 rSUBSRCPND=(BIT_SUB_RXD1|BIT_SUB_ERR1); // Clear Sub int pending
000278 e3a00028 MOV r0,#0x28
00027c e3a0144a MOV r1,#0x4a000000
000280 e5810018 STR r0,[r1,#0x18]
;;;72 rINTSUBMSK&=~(BIT_SUB_RXD1|BIT_SUB_ERR1);
000284 e3a0044a MOV r0,#0x4a000000
000288 e590001c LDR r0,[r0,#0x1c]
00028c e3c00028 BIC r0,r0,#0x28
000290 e3a0144a MOV r1,#0x4a000000
000294 e581001c STR r0,[r1,#0x1c]
;;;73 }
000298 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
00029c e25ef004 SUBS pc,lr,#4
ENDP
Uart1_TxDmaDone PROC
;;;75 void __irq Uart1_TxDmaDone(void)
;;;76 {
0002a0 e92d0003 STMFD sp!,{r0,r1}
;;;77 rDMASKTRIG1=0x0; // Stop Dma1
0002a4 e3a00000 MOV r0,#0
0002a8 e3a0144b MOV r1,#0x4b000000
0002ac e5810060 STR r0,[r1,#0x60]
;;;78 isDone=0;
0002b0 e3a00000 MOV r0,#0
0002b4 e59f1124 LDR r1,|L1.992|
0002b8 e5810000 STR r0,[r1,#0] ; isDone
;;;79 rINTMSK |= BIT_DMA1;
0002bc e3a0044a MOV r0,#0x4a000000
0002c0 e5900008 LDR r0,[r0,#8]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -