📄 lpclib.lst
字号:
0000002E 4A40 LDR R2,=0x100
00000030 1C11 MOV R1,R2
00000032 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 14
00000034 FFE5 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000036 1C08 MOV R0,R1
00000038 0601 LSL R1,R0,#0x18
0000003A 0E09 LSR R1,R1,#0x18
0000003C 4800 LDR R0,=0xE000C004
0000003E 7001 STRB R1,[R0,#0x0]
53: U0DLL = Fdiv % 256;
00000040 1C18 MOV R0,R3 ; Fdiv
00000042 0400 LSL R0,R0,#0x10 ; Fdiv
00000044 0C00 LSR R0,R0,#0x10
00000046 1C11 MOV R1,R2
00000048 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
0000004A FFDA BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
0000004C 1C01 MOV R1,R0
0000004E 0609 LSL R1,R1,#0x18
00000050 0E09 LSR R1,R1,#0x18
00000052 4800 LDR R0,=0xE000C000
00000054 7001 STRB R1,[R0,#0x0]
54: U0LCR = 0x03;
00000056 2103 MOV R1,#0x3
00000058 4800 LDR R0,=0xE000C00C
0000005A 7001 STRB R1,[R0,#0x0]
0000005C ; SCOPE-END
55: }
0000005C BC08 POP {R3}
0000005E 4718 BX R3
00000060 ENDP ; 'UART0_Init?T'
*** CODE SEGMENT '?PR?UART1_Init?T?lpclib':
61: void UART1_Init (uint32 baud)
00000000 B500 PUSH {LR}
00000002 1C02 MOV R2,R0 ; baud
00000004 ---- Variable 'baud' assigned to Register 'R2' ----
62: {
00000004 ; SCOPE-START
64: PINSEL0 =(PINSEL0&(~(0x0f<<16)))|(0x05<<16); //设置UART0连接,其他为普通IO 口
00000004 4800 LDR R0,=0xE002C000
00000006 6801 LDR R1,[R0,#0x0]
00000008 4800 LDR R0,=0xF0000
0000000A 4381 BIC R1,R0
0000000C 4800 LDR R0,=0x50000
0000000E 4301 ORR R1,R0
00000010 4800 LDR R0,=0xE002C000
00000012 6001 STR R1,[R0,#0x0]
65: U1LCR = 0x80; // DLAB=1,允许设置波特率
00000014 2180 MOV R1,#0x80
00000016 4800 LDR R0,=0xE001000C
00000018 7001 STRB R1,[R0,#0x0]
66: Fdiv = (Fpclk / 16) / baud; // 设置波特率
0000001A 1C11 MOV R1,R2 ; baud
0000001C 4800 LDR R0,=0xA8C00
0000001E F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
00000020 FFEF BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000022 1C08 MOV R0,R1
00000024 0403 LSL R3,R0,#0x10
00000026 0C1B LSR R3,R3,#0x10
00000028 ---- Variable 'Fdiv' assigned to Register 'R3' ----
67: U1DLM = Fdiv / 256;
00000028 1C18 MOV R0,R3 ; Fdiv
0000002A 0400 LSL R0,R0,#0x10 ; Fdiv
0000002C 0C00 LSR R0,R0,#0x10
0000002E 4A40 LDR R2,=0x100
00000030 1C11 MOV R1,R2
00000032 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000034 FFE5 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000036 1C08 MOV R0,R1
00000038 0601 LSL R1,R0,#0x18
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 15
0000003A 0E09 LSR R1,R1,#0x18
0000003C 4800 LDR R0,=0xE0010004
0000003E 7001 STRB R1,[R0,#0x0]
68: U1DLL = Fdiv % 256;
00000040 1C18 MOV R0,R3 ; Fdiv
00000042 0400 LSL R0,R0,#0x10 ; Fdiv
00000044 0C00 LSR R0,R0,#0x10
00000046 1C11 MOV R1,R2
00000048 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
0000004A FFDA BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
0000004C 1C01 MOV R1,R0
0000004E 0609 LSL R1,R1,#0x18
00000050 0E09 LSR R1,R1,#0x18
00000052 4800 LDR R0,=0xE0010000
00000054 7001 STRB R1,[R0,#0x0]
69: U1LCR = 0x03; //锁定设设置
00000056 2103 MOV R1,#0x3
00000058 4800 LDR R0,=0xE001000C
0000005A 7001 STRB R1,[R0,#0x0]
70: U1FCR = 0X01; //使能FIFO并设置触发点为1字节
0000005C 2101 MOV R1,#0x1
0000005E 4800 LDR R0,=0xE0010008
00000060 7001 STRB R1,[R0,#0x0]
71: U1IER = 0X01; //使能接收中断
00000062 4800 LDR R0,=0xE0010004
00000064 7001 STRB R1,[R0,#0x0]
00000066 ; SCOPE-END
72: }
00000066 BC08 POP {R3}
00000068 4718 BX R3
0000006A ENDP ; 'UART1_Init?T'
*** CODE SEGMENT '?PR?Uart_Getch?T?lpclib':
79: {
00000000 ; SCOPE-START
82: while ((U1LSR & 0x01) == 0);
00000000 L_12:
00000000 4800 LDR R0,=0xE0010014
00000002 7800 LDRB R0,[R0,#0x0]
00000004 2101 MOV R1,#0x1
00000006 4208 TST R0,R1
00000008 D0FA BEQ L_12 ; T=0x00000000
83: rcv_dat = U1RBR;
0000000A 4800 LDR R0,=0xE0010000
0000000C 7801 LDRB R1,[R0,#0x0]
0000000E ---- Variable 'rcv_dat' assigned to Register 'R1' ----
85: return (rcv_dat);
0000000E 1C08 MOV R0,R1 ; rcv_dat
00000010 0600 LSL R0,R0,#0x18 ; rcv_dat
00000012 0E00 LSR R0,R0,#0x18
00000014 ; SCOPE-END
86: }
00000014 4770 BX R14
00000016 ENDP ; 'Uart_Getch?T'
*** CODE SEGMENT '?PR?Uart_SendByte?T?lpclib':
91: void Uart_SendByte (uint8 dat)
00000000 1C02 MOV R2,R0 ; dat
00000002 ---- Variable 'dat' assigned to Register 'R2' ----
93: U1THR = dat;
00000002 1C11 MOV R1,R2 ; dat
00000004 4800 LDR R0,=0xE0010000
00000006 7001 STRB R1,[R0,#0x0]
94: while ((U1LSR & 0x20) == 0); // 等待数据发送完毕
00000008 L_17:
00000008 4800 LDR R0,=0xE0010014
0000000A 7800 LDRB R0,[R0,#0x0]
0000000C 2120 MOV R1,#0x20
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 16
0000000E 4208 TST R0,R1
00000010 D0FA BEQ L_17 ; T=0x00000008
95: }
00000012 4770 BX R14
00000014 ENDP ; 'Uart_SendByte?T'
*** CODE SEGMENT '?PR?Uart_SendString?T?lpclib':
102: void Uart_SendString(char *pt)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; pt
00000004 ---- Variable 'pt' assigned to Register 'R3' ----
104: while(*pt)
00000004 E004 B L_21 ; T=0x00000010
00000006 L_23:
00000006 1C18 MOV R0,R3 ; pt
00000008 3301 ADD R3,#0x1
0000000A 7800 LDRB R0,[R0,#0x0] ; pt
0000000C F7FF BL Uart_SendByte?T ; T=0x0001 (1)
0000000E FFF8 BL Uart_SendByte?T ; T=0x0001 (2)
00000010 L_21:
00000010 1C18 MOV R0,R3 ; pt
00000012 7800 LDRB R0,[R0,#0x0] ; pt
00000014 2800 CMP R0,#0x0
00000016 D1F6 BNE L_23 ; T=0x00000006
106: }
00000018 BC08 POP {R3}
0000001A 4718 BX R3
0000001C ENDP ; 'Uart_SendString?T'
*** CODE SEGMENT '?PR?Uart_Printf?T?lpclib':
112: void Uart_Printf(char *fmt,...)
00000000 B40E PUSH {R1-R3}
00000002 B510 PUSH {R4,LR}
00000004 1C02 MOV R2,R0 ; fmt
00000006 ---- Variable 'fmt' assigned to Register 'R2' ----
00000006 B0C0 SUB R13,#0x100
113: {
00000008 ; SCOPE-START
117: va_start(ap,fmt);
00000008 AC40 ADD R4,R13,#0x100
0000000A ---- Variable 'ap' assigned to Register 'R4' ----
118: vsprintf(string,fmt,ap);
0000000A A800 ADD R0,R13,#0x0
0000000C 1C11 MOV R1,R2 ; fmt
0000000E 1C22 MOV R2,R4 ; ap
00000010 F7FF BL vsprintf?T ; T=0x0001 (1)
00000012 FFF6 BL vsprintf?T ; T=0x0001 (2)
119: Uart_SendString(string);
00000014 A800 ADD R0,R13,#0x0
00000016 F7FF BL Uart_SendString?T ; T=0x0001 (1)
00000018 FFF3 BL Uart_SendString?T ; T=0x0001 (2)
120: va_end(ap);
0000001A 2400 MOV R4,#0x0
0000001C ; SCOPE-END
121: }
0000001C B040 ADD R13,#0x100
0000001E BC10 POP {R4}
00000020 BC08 POP {R3}
00000022 B003 ADD R13,#0xC
00000024 4718 BX R3
00000026 ENDP ; 'Uart_Printf?T'
*** CODE SEGMENT '?PR?Uart_GetString?T?lpclib':
127: void Uart_GetString(char *string)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C05 MOV R5,R0 ; string
00000004 ---- Variable 'string' assigned to Register 'R5' ----
00000004 ---- Variable 'c' assigned to Register 'R4' ----
128: {
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 17
00000004 ; SCOPE-START
129: char *string2=string;
00000004 1C2E MOV R6,R5 ; string
00000006 ---- Variable 'string2' assigned to Register 'R6' ----
131: while((c=Uart_Getch())!='\r')
00000006 E016 B L_25 ; T=0x00000036
00000008 L_27:
133: if(c=='\b')
00000008 1C20 MOV R0,R4 ; c
0000000A 0600 LSL R0,R0,#0x18 ; c
0000000C 0E00 LSR R0,R0,#0x18
0000000E 2808 CMP R0,#0x8
00000010 D108 BNE L_29 ; T=0x00000024
135: if( (int)string2 < (int)string )
00000012 1C29 MOV R1,R5 ; string
00000014 1C30 MOV R0,R6 ; string2
00000016 4288 CMP R0,R1
00000018 DA0D BGE L_25 ; T=0x00000036
137: Uart_Printf("\b \b");
0000001A 4800 LDR R0,=??S_1 ; ??S_1
0000001C F7FF BL Uart_Printf?T ; T=0x0001 (1)
0000001E FFF0 BL Uart_Printf?T ; T=0x0001 (2)
138: string--;
00000020 3D01 SUB R5,#0x1
140: }
00000022 E008 B L_25 ; T=0x00000036
00000024 L_29:
143: *string++=c;
00000024 1C21 MOV R1,R4 ; c
00000026 1C28 MOV R0,R5 ; string
00000028 3501 ADD R5,#0x1
0000002A 7001 STRB R1,[R0,#0x0] ; string
144: Uart_SendByte(c);
0000002C 1C20 MOV R0,R4 ; c
0000002E 0600 LSL R0,R0,#0x18 ; c
00000030 0E00 LSR R0,R0,#0x18
00000032 F7FF BL Uart_SendByte?T ; T=0x0001 (1)
00000034 FFE5 BL Uart_SendByte?T ; T=0x0001 (2)
146: }
00000036 L_25:
00000036 F7FF BL Uart_Getch?T ; T=0x0001 (1)
00000038 FFE3 BL Uart_Getch?T ; T=0x0001 (2)
0000003A 1C04 MOV R4,R0 ; c
0000003C 0600 LSL R0,R0,#0x18 ; Uart_Getch?T
0000003E 0E00 LSR R0,R0,#0x18
00000040 280D CMP R0,#0xD
00000042 D1E1 BNE L_27 ; T=0x00000008
147: *string='\0';
00000044 2100 MOV R1,#0x0
00000046 1C28 MOV R0,R5 ; string
00000048 7001 STRB R1,[R0,#0x0] ; string
148: Uart_SendByte('\n');
0000004A 200A MOV R0,#0xA
0000004C F7FF BL Uart_SendByte?T ; T=0x0001 (1)
0000004E FFD8 BL Uart_SendByte?T ; T=0x0001 (2)
00000050 ; SCOPE-END
149: }
00000050 BC70 POP {R4-R6}
00000052 BC08 POP {R3}
00000054 4718 BX R3
00000056 ENDP ; 'Uart_GetString?T'
*** CODE SEGMENT '?PR?Port_Init?T?lpclib':
171: PINSEL1=0x000003c1; //IO状态控制1
00000000 4800 LDR R1,=0x3C1
00000002 4800 LDR R0,=0xE002C004
00000004 6001 STR R1,[R0,#0x0]
ARM COMPILER V2.54a, lpclib 04/09/07 10:03:16 PAGE 18
172: PINSEL0=0xb0c500c5; //IO状态控制0
00000006 4800 LDR R1,=0xB0C500C5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -