📄 serial.lst
字号:
ARM COMPILER V2.50a, Serial 23/09/08 18:04:45 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE Serial
OBJECT MODULE PLACED IN .\Obj\Serial.obj
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe Serial.c ARM OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\FLASH\SERIAL.LST) TABS(4
-) OBJECT(.\Obj\Serial.obj)
stmt level source
1 /******************************************************************************/
2 /* This file is part of the uVision/ARM development tools */
3 /* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */
4 /******************************************************************************/
5 /* */
6 /* SERIAL.C: Low Level Serial Routines */
7 /* */
8 /******************************************************************************/
9
10 #include <LPC21xx.H> /* LPC21xx definitions */
11
12 #define CR 0x0D
13
14
15 void init_serial (void) { /* Initialize Serial Interface */
16 1
17 1 PINSEL0 &= ~(0x0F << 0);
18 1 PINSEL0 |= (0x05 << 0);// 设置I/O连接到UART0 P0.0 P0.1
19 1
20 1
21 1 // PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */
22 1 U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
23 1 U0DLL = 0x08; /* 115200 Baud Rate @ 15MHz VPB Clock */
24 1 U0LCR = 0x03; /* DLAB = 0 */
25 1 }
26
27
28 int putchar1 (int ch) { /* Write character to Serial Port */
29 1
30 1 if (ch == '\n') {
31 2 while (!(U0LSR & 0x20));
32 2 U0THR = CR; /* output CR */
33 2 }
34 1 while (!(U0LSR & 0x20));
35 1 return (U0THR = ch);
36 1 }
37
38
39 int getkey (void) { /* Read character from Serial Port */
40 1
41 1 if (U0LSR & 0x01)
42 1 {
43 2 return (U0RBR);
44 2 } else {
45 2 return 0;
46 2 }
47 1 }
ARM COMPILER V2.50a, Serial 23/09/08 18:04:45 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** PUBLICS:
PUBLIC init_serial?A
PUBLIC putchar1?A
PUBLIC getkey?A
*** CODE SEGMENT '?PR?init_serial?A?Serial':
17: PINSEL0 &= ~(0x0F << 0);
00000000 E5100000 LDR R0,=0xE002C000
00000004 E5901000 LDR R1,[R0,#0x0]
00000008 E3C1100F BIC R1,R1,#0x000F
0000000C E5801000 STR R1,[R0,#0x0]
18: PINSEL0 |= (0x05 << 0);// 设置I/O连接到UART0 P0.0 P0.1
00000010 E5100000 LDR R0,=0xE002C000
00000014 E5901000 LDR R1,[R0,#0x0]
00000018 E3811005 ORR R1,R1,#0x0005
0000001C E5801000 STR R1,[R0,#0x0]
22: U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
00000020 E3A01083 MOV R1,#0x83
00000024 E5100000 LDR R0,=0xE000C00C
00000028 E5C01000 STRB R1,[R0,#0x0]
23: U0DLL = 0x08; /* 115200 Baud Rate @ 15MHz VPB Clock */
0000002C E3A01008 MOV R1,#0x8
00000030 E5100000 LDR R0,=0xE000C000
00000034 E5C01000 STRB R1,[R0,#0x0]
24: U0LCR = 0x03; /* DLAB = 0 */
00000038 E3A01003 MOV R1,#0x3
0000003C E5100000 LDR R0,=0xE000C00C
00000040 E5C01000 STRB R1,[R0,#0x0]
25: }
00000044 E12FFF1E BX R14
00000048 ENDP ; 'init_serial?A'
*** CODE SEGMENT '?PR?putchar1?A?Serial':
28: int putchar1 (int ch) { /* Write character to Serial Port */
00000000 E1A01000 MOV R1,R0 ; ch
00000004 ---- Variable 'ch' assigned to Register 'R1' ----
30: if (ch == '\n') {
00000004 E1A00001 MOV R0,R1 ; ch
00000008 E350000A CMP R0,#0x000A ; ch
0000000C 1A000006 BNE L_9 ; Targ=0x2C
31: while (!(U0LSR & 0x20));
00000010 L_2:
00000010 E5100000 LDR R0,=0xE000C014
00000014 E5D00000 LDRB R0,[R0,#0x0]
00000018 E3100020 TST R0,#0x0020
0000001C 0AFFFFFB BEQ L_2 ; Targ=0x10
32: U0THR = CR; /* output CR */
00000020 E3A0200D MOV R2,#0xD
00000024 E5100000 LDR R0,=0xE000C000
00000028 E5C02000 STRB R2,[R0,#0x0]
34: while (!(U0LSR & 0x20));
0000002C L_9:
0000002C L_6:
0000002C E5100000 LDR R0,=0xE000C014
00000030 E5D00000 LDRB R0,[R0,#0x0]
00000034 E3100020 TST R0,#0x0020
00000038 0AFFFFFB BEQ L_6 ; Targ=0x2C
35: return (U0THR = ch);
0000003C E1A00001 MOV R0,R1 ; ch
00000040 E1A00C00 MOV R0,R0,LSL #24 ; ch
00000044 E1A00C20 MOV R0,R0,LSR #24
00000048 E5101000 LDR R1,=0xE000C000
0000004C E5C10000 STRB R0,[R1,#0x0]
00000050 E1A00C00 MOV R0,R0,LSL #24
ARM COMPILER V2.50a, Serial 23/09/08 18:04:45 PAGE 3
00000054 E1A00C20 MOV R0,R0,LSR #24
36: }
00000058 E12FFF1E BX R14
0000005C ENDP ; 'putchar1?A'
*** CODE SEGMENT '?PR?getkey?A?Serial':
41: if (U0LSR & 0x01)
00000000 E5100000 LDR R0,=0xE000C014
00000004 E5D00000 LDRB R0,[R0,#0x0]
00000008 E3100001 TST R0,#0x0001
0000000C 0A000002 BEQ L_11 ; Targ=0x1C
43: return (U0RBR);
00000010 E5100000 LDR R0,=0xE000C000
00000014 E5D00000 LDRB R0,[R0,#0x0]
00000018 EA000000 B L_12 ; Targ=0x20
44: } else {
0000001C L_11:
45: return 0;
0000001C E3A00000 MOV R0,#0x0
47: }
00000020 L_12:
00000020 E12FFF1E BX R14
00000024 ENDP ; 'getkey?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -