?? rs232.lst
字號:
###############################################################################
# #
# 18/Apr/2009 12:13:10 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.30622/W32 KICKSTART #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = J:\IAR5\LPC2148_UART\src\rs232.c #
# Command line = J:\IAR5\LPC2148_UART\src\rs232.c -lCN #
# J:\IAR5\LPC2148_UART\Debug\List\ -o #
# J:\IAR5\LPC2148_UART\Debug\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu #
# ARM7TDMI-S -e --fpu None --dlib_config "C:\Program #
# Files\IAR Systems\Embedded Workbench 5.0 #
# Kickstart\ARM\INC\DLib_Config_Normal.h" -I #
# J:\IAR5\LPC2148_UART\include\ -I "C:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 Kickstart\ARM\INC\" #
# --interwork --cpu_mode thumb -Ol #
# List file = J:\IAR5\LPC2148_UART\Debug\List\rs232.lst #
# Object file = J:\IAR5\LPC2148_UART\Debug\Obj\rs232.o #
# #
# #
###############################################################################
J:\IAR5\LPC2148_UART\src\rs232.c
1 //rs232.c
2 #include "rs232.h"
3
4 /**** UART0 ****/
\ In section .text, align 4, keep-with-next
5 void UART0Initialize(unsigned int baud) {
\ UART0Initialize:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
6 unsigned int divisor = GetPclk() / (16 * baud);
\ 00000004 ........ BL GetPclk
\ 00000008 1021 MOVS R1,#+16
\ 0000000A 4C43 MULS R4,R1,R4
\ 0000000C 2100 MOVS R1,R4
\ 0000000E ........ BL __aeabi_uidivmod
7 // 設(shè)置行控制寄存器
8 U0LCR_bit.WLS = 0x3; // 8位數(shù)據(jù)
\ 00000012 1C49 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000014 0978 LDRB R1,[R1, #+0]
\ 00000016 0322 MOVS R2,#+3
\ 00000018 0A43 ORRS R2,R2,R1
\ 0000001A 1A49 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 0000001C 0A70 STRB R2,[R1, #+0]
9 U0LCR_bit.SBS = 0x0; // 1位停止位
\ 0000001E 1949 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000020 0978 LDRB R1,[R1, #+0]
\ 00000022 FB22 MOVS R2,#+251
\ 00000024 0A40 ANDS R2,R2,R1
\ 00000026 1749 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000028 0A70 STRB R2,[R1, #+0]
10 U0LCR_bit.PE = 0x0; // 無校驗(yàn)
\ 0000002A 1649 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 0000002C 0978 LDRB R1,[R1, #+0]
\ 0000002E F722 MOVS R2,#+247
\ 00000030 0A40 ANDS R2,R2,R1
\ 00000032 1449 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000034 0A70 STRB R2,[R1, #+0]
11 U0LCR_bit.DLAB = 0x1; // 允許DLAB
\ 00000036 1349 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000038 0978 LDRB R1,[R1, #+0]
\ 0000003C 0A43 ORRS R2,R2,R1
\ 0000003E 1149 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 00000040 0A70 STRB R2,[R1, #+0]
12 // 除法因子
13 U0DLL = divisor & 0xFF;
\ 00000042 .... LDR R1,??DataTable12 ;; 0xe000c000
\ 00000044 0200 MOVS R2,R0
\ 00000046 0A70 STRB R2,[R1, #+0]
14 U0DLM = (divisor >> 8) & 0xFF;
\ 00000048 000A LSRS R0,R0,#+8
\ 0000004A 0006 LSLS R0,R0,#+24 ;; ZeroExtS R0,R0,#+24,#+24
\ 0000004C 000E LSRS R0,R0,#+24
\ 0000004E 0E49 LDR R1,??UART0Initialize_0+0x4 ;; 0xe000c004
\ 00000050 0860 STR R0,[R1, #+0]
15 U0LCR &= ~0x80;
\ 00000052 0C48 LDR R0,??UART0Initialize_0 ;; 0xe000c00c
\ 00000054 0078 LDRB R0,[R0, #+0]
\ 00000056 4006 LSLS R0,R0,#+25 ;; ZeroExtS R0,R0,#+25,#+25
\ 00000058 400E LSRS R0,R0,#+25
\ 0000005A 0A49 LDR R1,??UART0Initialize_0 ;; 0xe000c00c
\ 0000005C 0870 STRB R0,[R1, #+0]
16 //配置引腳功能: port0.0 -> TX0, port0.1 -> RXD0
17 PINSEL0_bit.P0_0 = 0x1;
\ 0000005E .... LDR R0,??DataTable17 ;; 0xe002c000
\ 00000060 0068 LDR R0,[R0, #+0]
\ 00000062 0321 MOVS R1,#+3
\ 00000064 8843 BICS R0,R0,R1
\ 00000066 0121 MOVS R1,#+1
\ 00000068 0143 ORRS R1,R1,R0
\ 0000006A .... LDR R0,??DataTable17 ;; 0xe002c000
\ 0000006C 0160 STR R1,[R0, #+0]
18 PINSEL0_bit.P0_1 = 0x1;
\ 0000006E .... LDR R0,??DataTable17 ;; 0xe002c000
\ 00000070 0068 LDR R0,[R0, #+0]
\ 00000072 0C21 MOVS R1,#+12
\ 00000074 8843 BICS R0,R0,R1
\ 00000076 0421 MOVS R1,#+4
\ 00000078 0143 ORRS R1,R1,R0
\ 0000007A .... LDR R0,??DataTable17 ;; 0xe002c000
\ 0000007C 0160 STR R1,[R0, #+0]
19 }
\ 0000007E 10BC POP {R4}
\ 00000080 01BC POP {R0}
\ 00000082 0047 BX R0 ;; return
\ ??UART0Initialize_0:
\ 00000084 0CC000E0 DC32 0xe000c00c
\ 00000088 04C000E0 DC32 0xe000c004
\ 0000008C REQUIRE _A_PINSEL0
\ 0000008C REQUIRE U0RBRTHR
\ 0000008C REQUIRE _A_U0IER
\ 0000008C REQUIRE _A_U0LCR
20
\ In section .text, align 4, keep-with-next
21 void UART0WriteChar(unsigned char ch0) {
\ UART0WriteChar:
\ 00000000 01B5 PUSH {R0,LR}
22 //當(dāng) U0LSR_bit.THRE = 0 時(shí), U0THR 包含有效數(shù)據(jù)
23 while (U0LSR_bit.THRE == 0);
\ ??UART0WriteChar_0:
\ 00000002 .... LDR R1,??DataTable11 ;; 0xe000c014
\ 00000004 0978 LDRB R1,[R1, #+0]
\ 00000006 8906 LSLS R1,R1,#+26
\ 00000008 FBD5 BPL ??UART0WriteChar_0
24 U0THR = ch0;
\ 0000000A .... LDR R1,??DataTable12 ;; 0xe000c000
\ 0000000C 0870 STRB R0,[R1, #+0]
25 }
\ 0000000E 08BC POP {R3}
\ 00000010 01BC POP {R0}
\ 00000012 0047 BX R0 ;; return
\ 00000014 REQUIRE U0RBRTHR
\ 00000014 REQUIRE _A_U0LSR
26
\ In section .text, align 4, keep-with-next
27 unsigned char UART0ReadChar(void) {
\ UART0ReadChar:
\ 00000000 01B5 PUSH {R0,LR}
28 //當(dāng) U0LSR_bit.DR = 1 時(shí), U0RBR 包含有效數(shù)據(jù)
29 while (U0LSR_bit.DR == 0);
\ ??UART0ReadChar_0:
\ 00000002 .... LDR R0,??DataTable11 ;; 0xe000c014
\ 00000004 0078 LDRB R0,[R0, #+0]
\ 00000006 C007 LSLS R0,R0,#+31
\ 00000008 FBD5 BPL ??UART0ReadChar_0
30 return U0RBR;
\ 0000000A .... LDR R0,??DataTable12 ;; 0xe000c000
\ 0000000C 0078 LDRB R0,[R0, #+0]
\ 0000000E 0006 LSLS R0,R0,#+24 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000010 000E LSRS R0,R0,#+24
\ 00000012 08BC POP {R3}
\ 00000014 02BC POP {R1}
\ 00000016 0847 BX R1 ;; return
\ 00000018 REQUIRE U0RBRTHR
\ 00000018 REQUIRE _A_U0LSR
31 }
32
\ In section .text, align 4, keep-with-next
33 unsigned char UART0ReadChar_nostop(void) {
\ UART0ReadChar_nostop:
\ 00000000 01B5 PUSH {R0,LR}
34 //當(dāng) U0LSR_bit.DR = 1 時(shí), U0RBR 包含有效數(shù)據(jù)
35 if(U0LSR_bit.DR == 1) return U0RBR;
\ 00000002 .... LDR R0,??DataTable11 ;; 0xe000c014
\ 00000004 0078 LDRB R0,[R0, #+0]
\ 00000006 C007 LSLS R0,R0,#+31
\ 00000008 04D5 BPL ??UART0ReadChar_nostop_0
\ 0000000A .... LDR R0,??DataTable12 ;; 0xe000c000
\ 0000000C 0078 LDRB R0,[R0, #+0]
\ 0000000E 0006 LSLS R0,R0,#+24 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000010 000E LSRS R0,R0,#+24
\ 00000012 00E0 B ??UART0ReadChar_nostop_1
36 else return 0;
\ ??UART0ReadChar_nostop_0:
\ 00000014 0020 MOVS R0,#+0
\ ??UART0ReadChar_nostop_1:
\ 00000016 08BC POP {R3}
\ 00000018 02BC POP {R1}
\ 0000001A 0847 BX R1 ;; return
\ 0000001C REQUIRE U0RBRTHR
\ 0000001C REQUIRE _A_U0LSR
37 }
38
\ In section .text, align 4, keep-with-next
39 void UART0WriteChar_nostop(unsigned char ch0) {
\ UART0WriteChar_nostop:
\ 00000000 01B5 PUSH {R0,LR}
40 //當(dāng) U0LSR_bit.THRE = 0 時(shí), U0THR 包含有效數(shù)據(jù)
41 if(U0LSR_bit.THRE == 1) U0THR = ch0;
\ 00000002 .... LDR R1,??DataTable11 ;; 0xe000c014
\ 00000004 0978 LDRB R1,[R1, #+0]
\ 00000006 8906 LSLS R1,R1,#+26
\ 00000008 01D5 BPL ??UART0WriteChar_nostop_0
\ 0000000A .... LDR R1,??DataTable12 ;; 0xe000c000
\ 0000000C 0870 STRB R0,[R1, #+0]
42 }
\ ??UART0WriteChar_nostop_0:
\ 0000000E 08BC POP {R3}
\ 00000010 01BC POP {R0}
\ 00000012 0047 BX R0 ;; return
\ 00000014 REQUIRE U0RBRTHR
\ 00000014 REQUIRE _A_U0LSR
43
44 /**** UART1 ****/
\ In section .text, align 4, keep-with-next
45 void UART1Initialize(unsigned int baud) {
\ UART1Initialize:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
46 unsigned int divisor = GetPclk() / (16 * baud);
\ 00000004 ........ BL GetPclk
\ 00000008 1021 MOVS R1,#+16
\ 0000000A 4C43 MULS R4,R1,R4
\ 0000000C 2100 MOVS R1,R4
\ 0000000E ........ BL __aeabi_uidivmod
47 // 設(shè)置行控制寄存器
48 U1LCR_bit.WLS = 0x3; // 8位數(shù)據(jù)
\ 00000012 1D49 LDR R1,??UART1Initialize_0 ;; 0xe001000c
\ 00000014 0978 LDRB R1,[R1, #+0]
\ 00000016 0322 MOVS R2,#+3
\ 00000018 0A43 ORRS R2,R2,R1
\ 0000001A 1B49 LDR R1,??UART1Initialize_0 ;; 0xe001000c
\ 0000001C 0A70 STRB R2,[R1, #+0]
49 U1LCR_bit.SBS = 0x0; // 1位停止位
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -