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

📄 spidisp.s

📁 easyarm实验开发平台
💻 S
字号:
;******************************************************************************
; File:SPIDISP.S
; 功能:使用硬件SPI接口输出显示。(硬件:74HC595输出控制数码管D1显示)
; 说明:将跳线器JP9短接。
;******************************************************************************

                INCLUDE LPC2106.INC
                
HC595_CS        EQU     0x00000100              ; P0.8口为74HC595的片选

                AREA    SPIDISPC,CODE,READONLY 
                ENTRY
                
                CODE32                                  
MAIN            LDR     SP,=0x40003000          ; 设置堆栈指针SP
                LDR     R0,=PINSEL0             ; 设置SPI接口有效
                MOV     R1,#0x00005500          
                STR     R1,[R0]                 
                LDR     R0,=IODIR               ; 设置HC595片选控制口为输出
                MOV     R1,#HC595_CS
                STR     R1,[R0] 
                
                ; 设置SPI接口
                LDR     R0,=SPI_BASE
                MOV     R1,#0x52                ; 设置SPI时钟
                STR     R1,[R0,#0x0C]
                MOV     R1,#0x30                ; 设置SPI接口模式,MSTR=1,CPOL=1,CPHA=0,LSBF=0
                STR     R1,[R0]
                
                                        
                
                ; 使用SPI进行数据发送(查表)
                LDR     R4,=DISP_TAB
MAIN_LOOP       MOV     R5,#0
MAIN_LOOP1      LDR     R2,[R4,R5,LSL #2]       ; 查表取得显示数据
 
                LDR     R0,=IOCLR               ; HC595_CS = 0
                MOV     R1,#HC595_CS
                STR     R1,[R0]
                BL      MSEND_DAT               ; 发送显示
                LDR     R0,=IOSET               ; 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
                
                
                ;此表为0--F的字模
DISP_TAB        DCD 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92
                DCD 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83
                DCD 0xC6, 0xA1, 0x86, 0x8E, 0xFF                                

;******************************************************************************
; 名称:MSEND_DAT
; 功能:通过SPI接口向74HC595发送一字节数据
; 入口参数:R2          待发送的数据,低8位有效
; 出口参数:R1          接收到的从机数据
; 占用资源:R0、R1、R2
;******************************************************************************
MSEND_DAT
                LDR     R0,=SPI_BASE
                MOV     R1,#0x00                ; 清除各种标志位
                STR     R1,[R0,#0x04]                   
                
                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 + -