📄 sendstr.s
字号:
;******************************************************************************
; File:SENDSTR.S
; 功能:串口发送数据。
; 说明:将跳线器JP2短接。
; 使用外部11.0592MHz晶振,不使用PLL,Fpclk = 1/4 Fcclk。
;******************************************************************************
INCLUDE LPC2106.INC ; 引入头文件
CODE32
AREA UARTSENDC,CODE,READONLY
ENTRY
STARC MSR CPSR_c,#0x10 ; 设置进入用户模式
LDR SP,=0x40003000 ; 设置堆栈
MOV R7,#0xFF0 ; 系统上电延时
DELAY_L1 SUBS R7,R7,#1
BNE DELAY_L1
BL UART0_INI ; 初始化串口UART0,设置波特率
LOOP LDR R3,=HELLO
BL UART0_SENDSTR ; 发送字串,字串中以0x00结束
BL DELAYS ; 软件延时
B LOOP
;******************************************************************************
; 名称:DELAYS
; 功能:软件延时
; 入口参数:无
; 出口参数:无
; 占用资源:R7
;******************************************************************************
DELAYS
MOV R7,#0x000FF000 ; 延时参数
DELAYS_L1 SUBS R7,R7,#1 ; R7 = R7-1
BNE DELAYS_L1 ; 判断R7-1结果是否为0,若不为0则跳转
MOV PC,LR ; 返回
;******************************************************************************
; 名称:UART0_INI
; 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
; 入口参数:无
; 出口参数:无
; 占用资源:R0、R1
;******************************************************************************
UART0_INI
LDR R0,=PINSEL0 ; 设置IO口使用为UART0
MOV R1,#0x05
STR R1,[R0]
LDR R0,=U0LCR ; 设置UART工作模式
MOV R1,#0x83 ; DLAB = 1,可设置波特率
STR R1,[R0]
LDR R0,=U0DLL ; 设置波特率,9600
MOV R1,#0x12 ; 除法器设置为0x12,外部11.0592M晶振
STR R1,[R0]
LDR R0,=U0DLM
MOV R1,#0x00
STR R1,[R0]
LDR R0,=U0LCR
MOV R1,#0x03
STR R1,[R0] ; 8位数据位,1位停止位,无奇偶校验,DLAB = 0
MOV PC,LR ; 返回
;******************************************************************************
; 名称:UART_SENDB
; 功能:串口发送字节数据。向UART0发送一字节数据,并等待发送完毕
; 入口参数:R1 要发送的数据,低8位有效
; 出口参数:无
; 占用资源:R0、R1
;******************************************************************************
UART_SENDB
LDR R0,=U0THR
STR R1,[R0] ; 发送数据
LDR R0,=U0LSR ; 等待发送完毕
UARTSD_L1 LDR R1,[R0]
ANDS R1,R1,#0x40
BEQ UARTSD_L1
MOV PC,LR
;******************************************************************************
; 名称:UART0_SENDSTR
; 功能:向UART0发送字符串。发送字串指针R3,字串中以0x00结束
; 入口参数:R3 要发送字串指针
; 出口参数:无
; 占用资源:R0、R1
;******************************************************************************
UART0_SENDSTR
STMFA SP!,{R0-R9, LR}
UART0SR_L1 LDR R1,[R3],#4
CMP R1,#0x00
BEQ UART0SR_L2 ; 若数据为0x00,返回
BL UART_SENDB
B UART0SR_L1
UART0SR_L2 LDMFA SP!,{R0-R9, LR}
MOV PC,LR
LTORG ; 在此声明文字池
HELLO DCD 'H', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\r','\n',0x0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -