📄 uart4.lst
字号:
ARM COMPILER V2.32c, UART4 14/09/05 13:27:44 PAGE 1
ARM COMPILER V2.32c, COMPILATION OF MODULE UART4
OBJECT MODULE PLACED IN UART4.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe UART4.c THUMB DEBUG TABS(4)
stmt level source
1 /*********************************************************************
2
3 Author : ADI - Apps www.analog.com/MicroConverter
4
5 Date : Sept. 2005
6
7 File : UART2.c
8
9 Hardware : Applicable to ADuC702x rev H or I silicon
10 Currently targetting ADuC7026.
11
12 Description : This code demonstrates the use of the fractional divider.
13 The baudrate generated is 115200bps, with a CD of 3.
14
15 Without using a fractional divider, the baudrate generated
16 would be 88062bps or an error of 24%
17
18 with the fractional divider, we can acheive an error of
19 3.54 E-3%
20
21 ***********************************************************************/
22
23 #include <ADuC7026.h>
24
25 extern int write (int file, char * ptr, int len); // Functions used to
26 extern int getchar (void); // to output data
27 extern int putchar(int); // Write character to Serial Port
28
29
30 int main (void) {
31 1 unsigned char jchar = 0x30;
32 1
33 1 char output1[13] = "Hello World\n";
34 1
35 1 // Setup tx & rx pins on P1.0 and P1.1
36 1 GP1CON = 0x011;
37 1
38 1 // CD = 3 !
39 1 COMCON0 = 0x80; // Setting DLAB
40 1 COMDIV0 = 0x01; // Setting DIV0 and DIV1 to DL calculated
41 1 COMDIV1 = 0x00;
42 1 COMCON0 = 0x07; // Clearing DLAB
43 1 COMDIV2 = 0x8B55; // fractional divider
44 1
45 1 GP4DAT = 0x04000000; // P4.2 configured as an output. LED is turned on
46 1
47 1 while(1)
48 1 {
49 2
50 2 GP4DAT ^= 0x00040000; // Complement P4.2
51 2 write(0,output1,13); // Output Data
52 2 jchar = getchar(); // RX Data, Single Byte
53 2 write(0,&jchar,1); // Output Rxed Data
54 2 }
55 1 }
ARM COMPILER V2.32c, UART4 14/09/05 13:27:44 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (write?T)
EXTERN CODE16 (getchar?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC main
*** DATA SEGMENT '?CON?UART4':
00000000 ?tpl?0001:
00000000 BEGIN_INIT
00000000 DB 'Hello World',0x0A,0x00
0000000D END_INIT
*** CODE SEGMENT '?PR?main?UART4':
30: int main (void) {
00000000 B500 PUSH {LR}
00000002 B085 SUB R13,#0x14
00000004 ; SCOPE-START
31: unsigned char jchar = 0x30;
00000004 2030 MOV R0,#0x30
00000006 9000 STR R0,[R13,#0x0] ; jchar
33: char output1[13] = "Hello World\n";
00000008 4800 LDR R1,=?tpl?0001 ; ?tpl?0001
0000000A A801 ADD R0,R13,#0x4
0000000C 220D MOV R2,#0xD
0000000E L_6:
0000000E 780B LDRB R3,[R1,#0x0]
00000010 7003 STRB R3,[R0,#0x0]
00000012 1C49 ADD R1,R1,#0x1
00000014 1C40 ADD R0,R0,#0x1
00000016 1E52 SUB R2,R2,#0x1
00000018 D1F9 BNE L_6 ; T=0x0000000E
36: GP1CON = 0x011;
0000001A 2111 MOV R1,#0x11
0000001C 4800 LDR R0,=0xFFFFF404
0000001E 6001 STR R1,[R0,#0x0]
39: COMCON0 = 0x80; // Setting DLAB
00000020 2180 MOV R1,#0x80
00000022 4800 LDR R0,=0xFFFF070C
00000024 6001 STR R1,[R0,#0x0]
40: COMDIV0 = 0x01; // Setting DIV0 and DIV1 to DL calculated
00000026 2101 MOV R1,#0x1
00000028 4800 LDR R0,=0xFFFF0700
0000002A 6001 STR R1,[R0,#0x0]
41: COMDIV1 = 0x00;
0000002C 2100 MOV R1,#0x0
0000002E 4800 LDR R0,=0xFFFF0704
00000030 6001 STR R1,[R0,#0x0]
42: COMCON0 = 0x07; // Clearing DLAB
00000032 2107 MOV R1,#0x7
00000034 4800 LDR R0,=0xFFFF070C
00000036 6001 STR R1,[R0,#0x0]
43: COMDIV2 = 0x8B55; // fractional divider
00000038 4800 LDR R1,=0x8B55
0000003A 4800 LDR R0,=0xFFFF072C
0000003C 6001 STR R1,[R0,#0x0]
45: GP4DAT = 0x04000000; // P4.2 configured as an output. LED is turned on
0000003E 4800 LDR R1,=0x4000000
00000040 4800 LDR R0,=0xFFFFF460
00000042 6001 STR R1,[R0,#0x0]
47: while(1)
00000044 L_3:
ARM COMPILER V2.32c, UART4 14/09/05 13:27:44 PAGE 3
50: GP4DAT ^= 0x00040000; // Complement P4.2
00000044 4800 LDR R2,=0x40000
00000046 4800 LDR R0,=0xFFFFF460
00000048 6801 LDR R1,[R0,#0x0]
0000004A 4051 EOR R1,R2
0000004C 6001 STR R1,[R0,#0x0]
51: write(0,output1,13); // Output Data
0000004E A901 ADD R1,R13,#0x4
00000050 2000 MOV R0,#0x0
00000052 220D MOV R2,#0xD
00000054 F7FF BL write?T ; T=0x0001 (1)
00000056 FFD4 BL write?T ; T=0x0001 (2)
52: jchar = getchar(); // RX Data, Single Byte
00000058 F7FF BL getchar?T ; T=0x0001 (1)
0000005A FFD2 BL getchar?T ; T=0x0001 (2)
0000005C 9000 STR R0,[R13,#0x0] ; jchar
53: write(0,&jchar,1); // Output Rxed Data
0000005E A900 ADD R1,R13,#0x0
00000060 2000 MOV R0,#0x0
00000062 2201 MOV R2,#0x1
00000064 F7FF BL write?T ; T=0x0001 (1)
00000066 FFCC BL write?T ; T=0x0001 (2)
54: }
00000068 E7EC B L_3 ; T=0x00000044
0000006A ; SCOPE-END
55: }
0000006A B005 ADD R13,#0x14
0000006C BC08 POP {R3}
0000006E 4718 BX R3
00000070 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 13
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -