?? uart.lst
字號(hào):
00000004 E5100000 LDR R0,=0xE000C008
00000008 E5D00000 LDRB R0,[R0,#0x0]
0000000C E200000F AND R0,R0,#0x000F
00000010 E3500004 CMP R0,#0x0004
00000014 1A00001C BNE L_1 ; Targ=0x8C
42: receive_buffer[uart0_receive_count++]=U0RBR;
00000018 E5100000 LDR R0,=0xE000C000
0000001C E5D00000 LDRB R0,[R0,#0x0]
00000020 E5102000 LDR R2,=uart0_receive_count ; uart0_receive_count
00000024 E5D21000 LDRB R1,[R2,#0x0] ; uart0_receive_count
00000028 E2813001 ADD R3,R1,#0x0001
0000002C E5C23000 STRB R3,[R2,#0x0] ; uart0_receive_count
00000030 E1A02001 MOV R2,R1
00000034 E5101000 LDR R1,=receive_buffer ; receive_buffer
00000038 E7C10002 STRB R0,[R1,+R2]
43: if(receive_buffer[uart0_receive_count-2]=='\r'&&
0000003C E5100000 LDR R0,=uart0_receive_count ; uart0_receive_count
00000040 E5D00000 LDRB R0,[R0,#0x0] ; uart0_receive_count
00000044 E1A01000 MOV R1,R0
00000048 E5100000 LDR R0,=receive_buffer + 0xFFFFFFFE ; receive_buffer-2
0000004C E7D00001 LDRB R0,[R0,+R1]
00000050 E350000D CMP R0,#0x000D
00000054 1A000009 BNE L_2 ; Targ=0x80
00000058 E5100000 LDR R0,=receive_buffer + 0xFFFFFFFF ; receive_buffer-1
0000005C E7D00001 LDRB R0,[R0,+R1]
00000060 E350000A CMP R0,#0x000A
00000064 1A000005 BNE L_2 ; Targ=0x80
45: uart0_receive_count=0;
00000068 E3A01000 MOV R1,#0x0
0000006C E5100000 LDR R0,=uart0_receive_count ; uart0_receive_count
00000070 E5C01000 STRB R1,[R0,#0x0] ; uart0_receive_count
46: uart0_receive_ok_flag=TRUE;
00000074 E3A01001 MOV R1,#0x1
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 5
00000078 E5100000 LDR R0,=uart0_receive_ok_flag ; uart0_receive_ok_flag
0000007C E5C01000 STRB R1,[R0,#0x0] ; uart0_receive_ok_flag
47: }
00000080 L_2:
49: VICVectAddr = 0x00; // 中斷處理結(jié)束
00000080 E3A01000 MOV R1,#0x0
00000084 E5100000 LDR R0,=0xFFFFF030
00000088 E5801000 STR R1,[R0,#0x0]
50: }
0000008C L_1:
53: }
0000008C E8BD000F LDMIA R13!,{R0-R3}
00000090 E25EF004 SUBS R15,R14,#0x0004
00000094 ENDP ; 'irq_uart0?A'
*** CODE SEGMENT '?PR?initialize_uart0?T?uart':
65: {
00000000 ; SCOPE-START
69: PINSEL0 |= 0x00000005;
00000000 2205 MOV R2,#0x5
00000002 4800 LDR R0,=0xE002C000
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
71: U0LCR = 0x83; // DLAB=1,允許設(shè)置波特率
0000000A 2183 MOV R1,#0x83
0000000C 4800 LDR R0,=0xE000C00C
0000000E 7001 STRB R1,[R0,#0x0]
73: U0DLM = Fdiv / 256;
00000010 2100 MOV R1,#0x0
00000012 4800 LDR R0,=0xE000C004
00000014 7001 STRB R1,[R0,#0x0]
74: U0DLL = Fdiv % 256;
00000016 21B4 MOV R1,#0xB4
00000018 4800 LDR R0,=0xE000C000
0000001A 7001 STRB R1,[R0,#0x0]
75: U0LCR = 0x03;
0000001C 2103 MOV R1,#0x3
0000001E 4800 LDR R0,=0xE000C00C
00000020 7001 STRB R1,[R0,#0x0]
79: U0FCR = 0x01; // 使能FIFO,并設(shè)置觸發(fā)點(diǎn)為1字節(jié)
00000022 2101 MOV R1,#0x1
00000024 4800 LDR R0,=0xE000C008
00000026 7001 STRB R1,[R0,#0x0]
80: U0IER = 0x01; // 允許RBR中斷,即接收中斷
00000028 4800 LDR R0,=0xE000C004
0000002A 7001 STRB R1,[R0,#0x0]
84: VICIntSelect = 0x00000000; // 設(shè)置所有的通道為IRQ中斷
0000002C 2100 MOV R1,#0x0
0000002E 4800 LDR R0,=0xFFFFF00C
00000030 6001 STR R1,[R0,#0x0]
85: VICVectCntl0 = 0x20 | 0x06; // UART0分配到IRQ slot0,即最高優(yōu)先級(jí)
00000032 2126 MOV R1,#0x26
00000034 4800 LDR R0,=0xFFFFF200
00000036 6001 STR R1,[R0,#0x0]
86: VICVectAddr0 = (unsigned long int)irq_uart0; // 設(shè)置UART0向量地址
00000038 4900 LDR R1,=irq_uart0?A ; irq_uart0?A
0000003A 4800 LDR R0,=0xFFFFF100
0000003C 6001 STR R1,[R0,#0x0]
87: VICIntEnable |= 1 << 0x06; // 使能UART0中斷
0000003E 2240 MOV R2,#0x40
00000040 4800 LDR R0,=0xFFFFF010
00000042 6801 LDR R1,[R0,#0x0]
00000044 4311 ORR R1,R2
00000046 6001 STR R1,[R0,#0x0]
00000048 ; SCOPE-END
89: }
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 6
00000048 4770 BX R14
0000004A ENDP ; 'initialize_uart0?T'
*** CODE SEGMENT '?PR?initialize_uart1?T?uart':
103: {
00000000 ; SCOPE-START
107: PINSEL0 |= 0x00050000;
00000000 4800 LDR R2,=0x50000
00000002 4800 LDR R0,=0xE002C000
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
109: U1LCR = 0x83; // DLAB=1,允許設(shè)置波特率
0000000A 2183 MOV R1,#0x83
0000000C 4800 LDR R0,=0xE001000C
0000000E 7001 STRB R1,[R0,#0x0]
111: U1DLM = Fdiv / 256;
00000010 2100 MOV R1,#0x0
00000012 4800 LDR R0,=0xE0010004
00000014 7001 STRB R1,[R0,#0x0]
112: U1DLL = Fdiv % 256;
00000016 21B4 MOV R1,#0xB4
00000018 4800 LDR R0,=0xE0010000
0000001A 7001 STRB R1,[R0,#0x0]
113: U1LCR = 0x03;
0000001C 2103 MOV R1,#0x3
0000001E 4800 LDR R0,=0xE001000C
00000020 7001 STRB R1,[R0,#0x0]
116: U1FCR = 0x01; // 使能FIFO,并設(shè)置觸發(fā)點(diǎn)為1字節(jié)
00000022 2101 MOV R1,#0x1
00000024 4800 LDR R0,=0xE0010008
00000026 7001 STRB R1,[R0,#0x0]
117: U1IER = 0x0; // 禁止中斷
00000028 2100 MOV R1,#0x0
0000002A 4800 LDR R0,=0xE0010004
0000002C 7001 STRB R1,[R0,#0x0]
0000002E ; SCOPE-END
118: }
0000002E 4770 BX R14
00000030 ENDP ; 'initialize_uart1?T'
*** CODE SEGMENT '?PR?send_string_to_uart1?T?uart':
130: void send_string_to_uart1(char * str)
00000000 ---- Variable 'str' assigned to Register 'R0' ----
134: while(*str!='\0'){
00000000 E009 B L_3 ; T=0x00000016
00000002 L_5:
135: U1THR=(*str++);
00000002 1C01 MOV R1,R0 ; str
00000004 3001 ADD R0,#0x1
00000006 780A LDRB R2,[R1,#0x0] ; str
00000008 4800 LDR R1,=0xE0010000
0000000A 700A STRB R2,[R1,#0x0]
136: while(!(U1LSR&0X40));
0000000C L_7:
0000000C 4800 LDR R1,=0xE0010014
0000000E 7809 LDRB R1,[R1,#0x0]
00000010 2240 MOV R2,#0x40
00000012 4211 TST R1,R2
00000014 D0FA BEQ L_7 ; T=0x0000000C
137: }
00000016 L_3:
00000016 1C01 MOV R1,R0 ; str
00000018 7809 LDRB R1,[R1,#0x0] ; str
0000001A 2900 CMP R1,#0x0
0000001C D1F1 BNE L_5 ; T=0x00000002
139: }
0000001E 4770 BX R14
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 7
00000020 ENDP ; 'send_string_to_uart1?T'
*** CODE SEGMENT '?PR?send_string_to_uart0?T?uart':
153: void send_string_to_uart0(char * str)
00000000 ---- Variable 'str' assigned to Register 'R0' ----
157: while(*str!='\0'){
00000000 E009 B L_11 ; T=0x00000016
00000002 L_13:
158: U0THR=(*str++);
00000002 1C01 MOV R1,R0 ; str
00000004 3001 ADD R0,#0x1
00000006 780A LDRB R2,[R1,#0x0] ; str
00000008 4800 LDR R1,=0xE000C000
0000000A 700A STRB R2,[R1,#0x0]
159: while(!(U0LSR&0X40));
0000000C L_15:
0000000C 4800 LDR R1,=0xE000C014
0000000E 7809 LDRB R1,[R1,#0x0]
00000010 2240 MOV R2,#0x40
00000012 4211 TST R1,R2
00000014 D0FA BEQ L_15 ; T=0x0000000C
160: }
00000016 L_11:
00000016 1C01 MOV R1,R0 ; str
00000018 7809 LDRB R1,[R1,#0x0] ; str
0000001A 2900 CMP R1,#0x0
0000001C D1F1 BNE L_13 ; T=0x00000002
164: }
0000001E 4770 BX R14
00000020 ENDP ; 'send_string_to_uart0?T'
*** CODE SEGMENT '?PR?clear_receive_buffer?T?uart':
176: void clear_receive_buffer(void)
00000000 B500 PUSH {LR}
178: memset(receive_buffer,0,sizeof(receive_buffer));
00000002 4800 LDR R0,=receive_buffer ; receive_buffer
00000004 2100 MOV R1,#0x0
00000006 2264 MOV R2,#0x64
00000008 F7FF BL memset?T ; T=0x0001 (1)
0000000A FFFA BL memset?T ; T=0x0001 (2)
0000000C BC08 POP {R3}
0000000E 4718 BX R3
00000010 ENDP ; 'clear_receive_buffer?T'
Module Information Static
----------------------------------
code size = ------
data size = 102
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -