📄 spidisp.s
字号:
/******************************************************************************
*文件名:SPIDISP.S
*使用硬件SPI接口输出控制LED显示。(硬件:74HC595输出控制数码管显示)
******************************************************************************/
.INCLUDE "LPC2294.INC"
.EQU SPI0_BASE, 0xE0020000
.EQU HC595_CS, (1<<29) /* P0.29口为74HC595的片选 */
.text /* 声明程序代码块 */
.arm
.global main
.func main
main: LDR SP,=0x40003F00 /* 设置堆栈指针SP */
LDR R0,=PINSEL0 /*设置SPI0接口效 */
MOV R1,#0x00005500
STR R1,[R0]
LDR R0,=PINSEL1
MOV R1,#0x00000000
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: .long 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
.long 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 + -