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

📄 leddisp.s

📁 周立功单片机ARM学习板easyARM2104的测试程序等
💻 S
字号:
;******************************************************************************
; File:LEDDISP.S
; 功能:LED数码管显示。
;      通过I/O模同步串口与74HC595进行连接,控制74HC595驱动LED数管显示。
; 说明:将跳线器JP9短接。
;******************************************************************************
		    INCLUDE	    LPC2106.INC		
		
SPI_CS		EQU	    0x00000100		; P0.8
SPI_DATA	EQU	    0x00000040		; P0.6
SPI_CLK		EQU	    0x00000010		; P0.4

SPI_IOCON	EQU	    0x00000150		; SPI接口的I/O设置字
		
		
		    AREA   	LEDDISPC,CODE,READONLY 
		    ENTRY
		
		    CODE32					
STARTC 		LDR	    SP,=0x40003000	; 设置堆栈指针SP
		    LDR	    R0,=PINSEL0		; 设置所有管脚连接GPIO
		    MOV	    R1,#0x00000000		
		    STR	    R1,[R0],#4			
		    STR	    R1,[R0]

		    LDR	    R0,=IODIR		; 设置SPI控制口为输出				
		    MOV	    R1,#SPI_IOCON		
		    STR	    R1,[R0]				
		
		    LDR	    R4,=DISP_TAB
MAIN_LOOP	MOV	    R5,#0
MAIN_LOOP1	LDR	    R2,[R4,R5,LSL #2]	; 查表取得显示数据
		    BL	    HC595_SENDDAT		; 发送显示
		    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
				
;******************************************************************************		
; 名称:HC595_SENDDAT
; 功能:向74HC595发送一字节数据
; 入口参数:R2		待发送的数据,低8位有效
; 占用资源:(R0、R1、R2、R7)
;******************************************************************************
HC595_SENDDAT
		    STMFD	SP!,{R0-R12,LR}		; 寄存器入栈保护
		    LDR	    R0,=IOCLR		    ; SPI_CS = 0
		    MOV	    R1,#SPI_CS
		    STR	    R1,[R0]
		
		    MOV	    R7,#8
HC595_SDL1	LDR	    R0,=IOCLR		    ; SPI_CLK = 0
		    MOV	    R1,#SPI_CLK
		    STR	    R1,[R0]
		
		    ANDS	R1,R2,#0x00000080	; 判断要发送的数据位,并设置SPI_DAT
		    LDRNE	R0,=IOSET
		    LDREQ	R0,=IOCLR
		    MOV	    R1,#SPI_DATA
		    STR	    R1,[R0]
		    MOV	    R2,R2,LSL #1        ; 数据左移一位
		
		    LDR	    R0,=IOSET		    ; SPI_CLK = 1
		    MOV	    R1,#SPI_CLK
		    STR	    R1,[R0]
		
		    SUBS	R7,R7,#1
		    BNE	    HC595_SDL1		    ; 若数据未发送完毕,再次发送
		
		    LDR	    R0,=IOSET		    ; SPI_CS = 1,输出显示数据
		    MOV	    R1,#SPI_CS
		    STR	    R1,[R0]
		
		    LDMFD	SP!,{R0-R12,PC}		; 返回
		    
		
;******************************************************************************				
; 名称: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 + -