📄 uart0.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\uart0.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Ch11_UART PROC
;;;74 void Ch11_UART(void)
;;;75 {
|L1.0|
000000 e92d4038 STMFD sp!,{r3-r5,lr}
;;;76 int j;
;;;77 Uart_Printf("Select the Uart Port\n");
000004 e28f0f5f ADR r0,|L1.392|
000008 ebfffffe BL _printf
;;;78 Uart_Printf("0.Uart0 test 1.Uart1 test\n");
00000c e28f0f63 ADR r0,|L1.416|
000010 ebfffffe BL _printf
;;;79 j=Uart_Getch();
000014 ebfffffe BL Uart_Getch
000018 e1a05000 MOV r5,r0
;;;80 switch(j)
00001c e3550030 CMP r5,#0x30
000020 0a000002 BEQ |L1.48|
000024 e3550031 CMP r5,#0x31
000028 1a000054 BNE |L1.384|
00002c ea000029 B |L1.216|
;;;81 {
;;;82 case '0':
;;;83 while(1)
|L1.48|
000030 e1a00000 NOP
|L1.52|
000034 e1a00000 NOP
;;;84 {
;;;85 int i = 0;
000038 e3a04000 MOV r4,#0
;;;86 while(1)
00003c e1a00000 NOP
|L1.64|
000040 e1a00000 NOP
;;;87 { //display menu
;;;88 Uart_Printf("%2d:%s ",i,Uart0_func[i][1]);
000044 e59f0170 LDR r0,|L1.444|
000048 e0800184 ADD r0,r0,r4,LSL #3
00004c e1a01004 MOV r1,r4
000050 e5902004 LDR r2,[r0,#4]
000054 e28f0f59 ADR r0,|L1.448|
000058 ebfffffe BL _printf
;;;89 i++;
00005c e2844001 ADD r4,r4,#1
;;;90 if((int)(Uart0_func[i][0])==0)
000060 e59f0154 LDR r0,|L1.444|
000064 e7900184 LDR r0,[r0,r4,LSL #3]
000068 e3500000 CMP r0,#0
00006c 1a000002 BNE |L1.124|
;;;91 {
;;;92 Uart_Printf("\n");
000070 e28f0f49 ADR r0,|L1.412|
000074 ebfffffe BL _printf
;;;93 break;
000078 ea000004 B |L1.144|
;;;94 }
;;;95 if((i%4)==0)
|L1.124|
00007c e3140003 TST r4,#3
000080 1a000001 BNE |L1.140|
;;;96 Uart_Printf("\n");
000084 e28f0f44 ADR r0,|L1.412|
000088 ebfffffe BL _printf
;;;97 }
|L1.140|
00008c eaffffeb B |L1.64|
;;;98
;;;99 Uart_Printf("\nSelect the function to test : ");
|L1.144|
000090 e28f0f4d ADR r0,|L1.460|
000094 ebfffffe BL _printf
;;;100 i = Uart_GetIntNum();
000098 ebfffffe BL Uart_GetIntNum
00009c e1a04000 MOV r4,r0
;;;101 Uart_Printf("\n");
0000a0 e28f00f4 ADR r0,|L1.412|
0000a4 ebfffffe BL _printf
;;;102 if(i==-1) break;
0000a8 e3740001 CMN r4,#1
0000ac 1a000000 BNE |L1.180|
0000b0 ea000007 B |L1.212|
;;;103 if(i>=0 && (i<(sizeof(Uart0_func)/8)) )
|L1.180|
0000b4 e3540000 CMP r4,#0
0000b8 ba000004 BLT |L1.208|
0000bc e3540007 CMP r4,#7
0000c0 2a000002 BCS |L1.208|
;;;104 ( (void (*)(void)) (Uart0_func[i][0]) )();
0000c4 e59f10f0 LDR r1,|L1.444|
0000c8 e7910184 LDR r0,[r1,r4,LSL #3]
0000cc e12fff30 BLX r0
;;;105 }
|L1.208|
0000d0 eaffffd7 B |L1.52|
;;;106 break;
|L1.212|
0000d4 ea00002a B |L1.388|
;;;107 case '1':
;;;108 while(1)
|L1.216|
0000d8 e1a00000 NOP
|L1.220|
0000dc e1a00000 NOP
;;;109 {
;;;110 int i = 0;
0000e0 e3a04000 MOV r4,#0
;;;111 while(1)
0000e4 e1a00000 NOP
|L1.232|
0000e8 e1a00000 NOP
;;;112 { //display menu
;;;113 Uart_Printf("%2d:%s ",i,Uart1_func[i][1]);
0000ec e59f00f8 LDR r0,|L1.492|
0000f0 e0800184 ADD r0,r0,r4,LSL #3
0000f4 e1a01004 MOV r1,r4
0000f8 e5902004 LDR r2,[r0,#4]
0000fc e28f00bc ADR r0,|L1.448|
000100 ebfffffe BL _printf
;;;114 i++;
000104 e2844001 ADD r4,r4,#1
;;;115 if((int)(Uart1_func[i][0])==0)
000108 e59f00dc LDR r0,|L1.492|
00010c e7900184 LDR r0,[r0,r4,LSL #3]
000110 e3500000 CMP r0,#0
000114 1a000002 BNE |L1.292|
;;;116 {
;;;117 Uart_Printf("\n");
000118 e28f007c ADR r0,|L1.412|
00011c ebfffffe BL _printf
;;;118 break;
000120 ea000004 B |L1.312|
;;;119 }
;;;120 if((i%4)==0)
|L1.292|
000124 e3140003 TST r4,#3
000128 1a000001 BNE |L1.308|
;;;121 Uart_Printf("\n");
00012c e28f0068 ADR r0,|L1.412|
000130 ebfffffe BL _printf
;;;122 }
|L1.308|
000134 eaffffeb B |L1.232|
;;;123
;;;124 Uart_Printf("\nSelect the function to test : ");
|L1.312|
000138 e28f008c ADR r0,|L1.460|
00013c ebfffffe BL _printf
;;;125 i = Uart_GetIntNum();
000140 ebfffffe BL Uart_GetIntNum
000144 e1a04000 MOV r4,r0
;;;126 Uart_Printf("\n");
000148 e28f004c ADR r0,|L1.412|
00014c ebfffffe BL _printf
;;;127 if(i==-1) break;
000150 e3740001 CMN r4,#1
000154 1a000000 BNE |L1.348|
000158 ea000007 B |L1.380|
;;;128 if(i>=0 && (i<(sizeof(Uart1_func)/8)) )
|L1.348|
00015c e3540000 CMP r4,#0
000160 ba000004 BLT |L1.376|
000164 e3540009 CMP r4,#9
000168 2a000002 BCS |L1.376|
;;;129 ( (void (*)(void)) (Uart1_func[i][0]) )();
00016c e59f1078 LDR r1,|L1.492|
000170 e7910184 LDR r0,[r1,r4,LSL #3]
000174 e12fff30 BLX r0
;;;130 }
|L1.376|
000178 eaffffd7 B |L1.220|
;;;131 break;
|L1.380|
00017c ea000000 B |L1.388|
;;;132 default:
;;;133 break;
|L1.384|
000180 e1a00000 NOP
;;;134 }
;;;135 }
|L1.388|
000184 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.392|
000188 656c6553 DCB "Sele"
00018c 74207463 DCB "ct t"
000190 55206568 DCB "he U"
000194 20747261 DCB "art "
000198 74726f50 DCB "Port"
|L1.412|
00019c 0000000a DCB "\n\0\0\0"
|L1.416|
0001a0 61552e30 DCB "0.Ua"
0001a4 20307472 DCB "rt0 "
0001a8 74736574 DCB "test"
0001ac 2e312020 DCB " 1."
0001b0 74726155 DCB "Uart"
0001b4 65742031 DCB "1 te"
0001b8 000a7473 DCB "st\n\0"
|L1.444|
0001bc 00000000 DCD Uart0_func
|L1.448|
0001c0 3a643225 DCB "%2d:"
0001c4 20207325 DCB "%s "
0001c8 00000000 DCB "\0\0\0\0"
|L1.460|
0001cc 6c65530a DCB "\nSel"
0001d0 20746365 DCB "ect "
0001d4 20656874 DCB "the "
0001d8 636e7566 DCB "func"
0001dc 6e6f6974 DCB "tion"
0001e0 206f7420 DCB " to "
0001e4 74736574 DCB "test"
0001e8 00203a20 DCB " : \0"
|L1.492|
0001ec 00000000 DCD Uart1_func
ENDP
Uart_Port_Set PROC
;;;137 void Uart_Port_Set(void)
;;;138 {
0001f0 e59f0278 LDR r0,|L1.1136|
;;;139 //edited by junon
;;;140 //Push UART GPIO port configuration
;;;141 save_rGPCON_U=rGPCON_U;
0001f4 e5900000 LDR r0,[r0,#0]
0001f8 e59f1274 LDR r1,|L1.1140|
0001fc e5810000 STR r0,[r1,#0] ; save_rGPCON_U
;;;142 save_rGPDAT=rGPDAT;
000200 e59f0268 LDR r0,|L1.1136|
000204 e590000c LDR r0,[r0,#0xc]
000208 e59f1268 LDR r1,|L1.1144|
00020c e5810000 STR r0,[r1,#0] ; save_rGPDAT
;;;143 save_rGPUP=rGPPU;
000210 e59f0258 LDR r0,|L1.1136|
000214 e5900010 LDR r0,[r0,#0x10]
000218 e59f125c LDR r1,|L1.1148|
00021c e5810000 STR r0,[r1,#0] ; save_rGPUP
;;;144 //Configure UART port for 24A0
;;;145 rGPCON_U|=(2<<24)|(2<<22)|(2<<20)|(2<<18); // RxD1, TxD1, RTS1, CTS1 port select
000220 e59f0248 LDR r0,|L1.1136|
000224 e5900000 LDR r0,[r0,#0]
000228 e38007aa ORR r0,r0,#0x2a80000
00022c e59f123c LDR r1,|L1.1136|
000230 e5810000 STR r0,[r1,#0]
;;;146 rGPCON_U&=~((1<<24)|(1<<22)|(1<<20)|(1<<18)); // RxD1, TxD1, RTS1, CTS1 port select
000234 e1a00001 MOV r0,r1
000238 e5900000 LDR r0,[r0,#0]
00023c e3c00755 BIC r0,r0,#0x1540000
000240 e5810000 STR r0,[r1,#0]
;;;147 rGPPU|=(0xf<<28); //Uart port pull-up disable
000244 e1a00001 MOV r0,r1
000248 e5900010 LDR r0,[r0,#0x10]
00024c e38004f0 ORR r0,r0,#0xf0000000
000250 e5810010 STR r0,[r1,#0x10]
;;;148 //rINTSUBMSK=0x7ff; //SUBINT ALL MASK
;;;149 //end junon
;;;150
;;;151 //Push Uart control registers
;;;152 save_ULCON0=rULCON0;
000254 e2410840 SUB r0,r1,#0x400000
000258 e5900000 LDR r0,[r0,#0]
00025c e59f121c LDR r1,|L1.1152|
000260 e5810000 STR r0,[r1,#0] ; save_ULCON0
;;;153 save_UCON0=rUCON0;
000264 e59f0218 LDR r0,|L1.1156|
000268 e5900004 LDR r0,[r0,#4]
00026c e59f1214 LDR r1,|L1.1160|
000270 e5810000 STR r0,[r1,#0] ; save_UCON0
;;;154 save_UFCON0=rUFCON0;
000274 e59f0208 LDR r0,|L1.1156|
000278 e5900008 LDR r0,[r0,#8]
00027c e59f1208 LDR r1,|L1.1164|
000280 e5810000 STR r0,[r1,#0] ; save_UFCON0
;;;155 save_UMCON0=rUMCON0;
000284 e59f01f8 LDR r0,|L1.1156|
000288 e590000c LDR r0,[r0,#0xc]
00028c e59f11fc LDR r1,|L1.1168|
000290 e5810000 STR r0,[r1,#0] ; save_UMCON0
;;;156 save_ULCON1=rULCON1;
000294 e59f01f8 LDR r0,|L1.1172|
000298 e5900000 LDR r0,[r0,#0]
00029c e59f11f4 LDR r1,|L1.1176|
0002a0 e5810000 STR r0,[r1,#0] ; save_ULCON1
;;;157 save_UCON1 =rUCON1;
0002a4 e59f01e8 LDR r0,|L1.1172|
0002a8 e5900004 LDR r0,[r0,#4]
0002ac e59f11e8 LDR r1,|L1.1180|
0002b0 e5810000 STR r0,[r1,#0] ; save_UCON1
;;;158 save_UFCON1=rUFCON1;
0002b4 e59f01d8 LDR r0,|L1.1172|
0002b8 e5900008 LDR r0,[r0,#8]
0002bc e59f11dc LDR r1,|L1.1184|
0002c0 e5810000 STR r0,[r1,#0] ; save_UFCON1
;;;159 save_UMCON1=rUMCON1;
0002c4 e59f01c8 LDR r0,|L1.1172|
0002c8 e590000c LDR r0,[r0,#0xc]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -