📄 uarttest.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART 08/May/2006 11:36:39 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\SRC\UartTest.c #
# Command line = "E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\SRC\UartTest.c" #
# -lCN "E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\Jlink_RAM\List\" #
# -o "E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\Jlink_RAM\Obj\" #
# -z2 --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --cpu_mode thumb --endian #
# little --cpu ARM7TDMI-S --stack_align 4 --interwork #
# -e --fpu None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Kickstart\arm\LIB\dl4tptinl8n.h" -I "C:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Kickstart\arm\INC\" #
# List file = E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\Jlink_RAM\List\Uar #
# tTest.lst #
# Object file = E:\项目文档\LPC2103 开发板\项目文档\LPC210X #
# EK_V2.0\JLINK Program Example\I2C\Jlink_RAM\Obj\Uart #
# Test.r79 #
# #
# #
##############################################################################
E:\项目文档\LPC2103 开发板\项目文档\LPC210X EK_V2.0\JLINK Program Example\I2C\SRC\UartTest.c
1
2 #define UART_BPS 9600
3
4 #include "..\inc\config.h"
5 /**********************串口0初始化****************************************/
\ In segment CODE, align 4, keep-with-next
6 void UART0_Init (void)
7 {
\ UART0_Init:
\ 00000000 00B5 PUSH {LR}
8 U16 Fdiv;
9
10 U0LCR = 0x83; // DLAB = 1,可设置波特率
\ 00000002 0E48 LDR R0,??UART0_Init_0 ;; 0xe000c00c
\ 00000004 8321 MOV R1,#+0x83
\ 00000006 0170 STRB R1,[R0, #+0]
11 Fdiv = (Fpclk / 16)/ UART_BPS; // 设置波特率
\ 00000008 4820 MOV R0,#+0x48
\ 0000000A 021C MOV R2,R0
12 U0DLM = Fdiv / 256;
\ 0000000C 0C4B LDR R3,??UART0_Init_0+0x4 ;; 0xe000c004
\ 0000000E 1204 LSL R2,R2,#+0x10 ;; ZeroExt R2,R2,#+0x10,#+0x10
\ 00000010 120C LSR R2,R2,#+0x10
\ 00000012 101C MOV R0,R2
\ 00000014 8021 MOV R1,#+0x80
\ 00000016 4900 LSL R1,R1,#+0x1 ;; #+0x100
\ 00000018 ........ _BLF ??div32_t,??rT??div32_t
\ 0000001C 1970 STRB R1,[R3, #+0]
13 U0DLL = Fdiv % 256;
\ 0000001E .... LDR R3,??DataTable3 ;; 0xe000c000
\ 00000020 1204 LSL R2,R2,#+0x10 ;; ZeroExt R2,R2,#+0x10,#+0x10
\ 00000022 120C LSR R2,R2,#+0x10
\ 00000024 101C MOV R0,R2
\ 00000026 8021 MOV R1,#+0x80
\ 00000028 4900 LSL R1,R1,#+0x1 ;; #+0x100
\ 0000002A ........ _BLF ??div32_t,??rT??div32_t
\ 0000002E 1870 STRB R0,[R3, #+0]
14 U0LCR = 0x03;
\ 00000030 0248 LDR R0,??UART0_Init_0 ;; 0xe000c00c
\ 00000032 0321 MOV R1,#+0x3
\ 00000034 0170 STRB R1,[R0, #+0]
15 }
\ 00000036 01BC POP {R0}
\ 00000038 0047 BX R0 ;; return
\ 0000003A C046 NOP
\ ??UART0_Init_0:
\ 0000003C 0CC000E0 DC32 0xe000c00c
\ 00000040 04C000E0 DC32 0xe000c004
16
17 /***************************从串口0接收数据*********************************/
\ In segment CODE, align 4, keep-with-next
18 char UART0_GetChar ( void )
19 {
20 U8 Rcv_Data;
21
22 while((U0LSR&0x01)==0); //等待有效数据
\ UART0_GetChar:
\ ??UART0_GetChar_0:
\ 00000000 .... LDR R1,??DataTable4 ;; 0xe000c014
\ 00000002 0978 LDRB R1,[R1, #+0]
\ 00000004 C907 LSL R1,R1,#+0x1F
\ 00000006 FBD5 BPL ??UART0_GetChar_0
23 Rcv_Data=U0RBR; //读取数据
\ 00000008 .... LDR R1,??DataTable3 ;; 0xe000c000
\ 0000000A 0978 LDRB R1,[R1, #+0]
\ 0000000C 081C MOV R0,R1
24 return(Rcv_Data);
\ 0000000E 0006 LSL R0,R0,#+0x18 ;; ZeroExt R0,R0,#+0x18,#+0x18
\ 00000010 000E LSR R0,R0,#+0x18
\ 00000012 7047 BX LR ;; return
25 }
26
27 /***************************从串口0接收字符串*********************************/
\ In segment CODE, align 4, keep-with-next
28 void UART0_GetString ( U8 *s,U32 n )
29 {
\ UART0_GetString:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 041C MOV R4,R0
\ 00000004 0D1C MOV R5,R1
30 for(;n>0;n++)
\ ??UART0_GetString_0:
\ 00000006 002D CMP R5,#+0
\ 00000008 05D0 BEQ ??UART0_GetString_1
31 {
32 *s++=UART0_GetChar();
\ 0000000A ........ BL UART0_GetChar
\ 0000000E 2070 STRB R0,[R4, #+0]
\ 00000010 641C ADD R4,#+0x1
33 }
\ 00000012 6D1C ADD R5,#+0x1
\ 00000014 F7E7 B ??UART0_GetString_0
34 }
\ ??UART0_GetString_1:
\ 00000016 30BC POP {R4,R5}
\ 00000018 01BC POP {R0}
\ 0000001A 0047 BX R0 ;; return
35
36 /***************************向串口0发送数据*********************************/
37
\ In segment CODE, align 4, keep-with-next
38 void UART0_PutChar ( U32 data)
39 {
40 U0THR = data; // 发送数据
\ UART0_PutChar:
\ 00000000 .... LDR R1,??DataTable3 ;; 0xe000c000
\ 00000002 021C MOV R2,R0
\ 00000004 0A70 STRB R2,[R1, #+0]
41 while( (U0LSR&0x40)==0 ); // 等待数据发送完毕
\ ??UART0_PutChar_0:
\ 00000006 .... LDR R1,??DataTable4 ;; 0xe000c014
\ 00000008 0978 LDRB R1,[R1, #+0]
\ 0000000A 4906 LSL R1,R1,#+0x19
\ 0000000C FBD5 BPL ??UART0_PutChar_0
42 }
\ 0000000E 7047 BX LR ;; return
43
44 /***************************向串口0发送字符串*********************************/
\ In segment CODE, align 4, keep-with-next
45 void UART0_PutString(char *str)
46 {
\ UART0_PutString:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 041C MOV R4,R0
47 while(*str !='\0')
\ ??UART0_PutString_0:
\ 00000004 2078 LDRB R0,[R4, #+0]
\ 00000006 0028 CMP R0,#+0
\ 00000008 04D0 BEQ ??UART0_PutString_1
48 {
49 UART0_PutChar(*str++);
\ 0000000A 2078 LDRB R0,[R4, #+0]
\ 0000000C ........ BL UART0_PutChar
\ 00000010 641C ADD R4,#+0x1
\ 00000012 F7E7 B ??UART0_PutString_0
50 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -