⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendstr.s

📁 周立功单片机ARM学习板easyARM2104的测试程序等
💻 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 + -