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

📄 spidisp.s

📁 基于ARM7的LPC21XX系列的部分汇编源码
💻 S
字号:
;****************************************************************************** 
; 文件名:SPIDISP.S
; 功能:使用硬件SPI接口输出控制LED显示。(硬件:74HC595输出控制数码管D1显示)
; 说明:将跳线器JP3短接。
;****************************************************************************** 
				INCLUDE		LPC2294.INC
				EXPORT  	MAIN
			
SPI0_BASE		EQU		0xE0020000
				
HC595_CS  		EQU     (1<<29)              	; P0.29口为74HC595的片选

				AREA   	SPIDISPC,CODE,READONLY 								
		
MAIN 			LDR     SP,=0x40003F00          ; 设置堆栈指针SP
           		LDR     R0,=PINSEL0             ; 设置SPI0接口有效
            	MOV     R1,#0x00005500          
            	STR     R1,[R0]                 
            	LDR     R0,=IO0DIR              ; 设置HC595片选控制口为输出
            	MOV     R1,#HC595_CS
            	STR     R1,[R0] 
                
            	; 设置SPI接口
            	LDR     R0,=SPI0_BASE
            	MOV     R1,#0x52                
            	STR     R1,[R0,#0x0C]			; S0PCCR=0x52,设置SPI时钟
            	MOV     R1,#0x30                
            	STR     R1,[R0] 				; S0PCR=0x30,设置SPI接口模式,MSTR=1,CPOL=1,CPHA=0,LSBF=0

               ; 使用SPI进行数据发送(查表)
                LDR     R4,=DISP_TAB
MAIN_LOOP       MOV     R5,#0
MAIN_LOOP1      LDR     R2,[R4,R5,LSL #2]       ; 查表取得显示数据
 
                LDR     R0,=IO0CLR               ; HC595_CS=0
                MOV     R1,#HC595_CS
                STR     R1,[R0]
                BL      MSEND_DAT               ; 发送显示
                LDR     R0,=IO0SET               ; HC595_CS=1
                MOV     R1,#HC595_CS
                STR     R1,[R0]
                
                BL      DELAYS                  ; 软件延时
                        
                ADD     R5,R5,#1
                CMP     R5,#0x0F
                BLS     MAIN_LOOP1
                B       MAIN_LOOP
                
                
DISP_TAB        DCD 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
                DCD 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E

;******************************************************************************
; 名称:MSEND_DAT
; 功能:通过SPI接口向74HC595发送一字节数据
; 入口参数:R2          待发送的数据,低8位有效
; 出口参数:R1          接收到的从机数据
; 占用资源:R0、R1、R2
;******************************************************************************
MSEND_DAT
                LDR     R0,=SPI0_BASE             
                LDR     R1,[R0,#0x04]           ; 读取S0PSR,清除各种标志位
                
                STR     R2,[R0,#0x08]           ; 发送数据
MSEND_DTL1      LDR     R1,[R0,#0x04]                   
                ANDS    R1,R1,#0x80
                BEQ     MSEND_DTL1
                
                LDR     R1,[R0,#0x08]           ; 接收从机的数据
                MOV     PC,LR
                
                
                                
;******************************************************************************                
; 名称: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                   ; 返回  
                
                ALIGN                           ; 数据字对齐
                LTORG                           ; 声明文字池
                
                END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -