2124程序例子

源代码在线查看: leddisp.s

软件大小: 1971 K
上传用户: iamguest88
关键词: 2124 程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				;******************************************************************************
				; 文件名:LEDDISP.S
				; 功能:LED数码管显示。
				;      通过I/O模拟同步串口与74HC595进行连接,控制74HC595驱动LED数管显示。
				; 说明:将跳线器JP3短接。
				;******************************************************************************
						    INCLUDE	    LPC2294.INC		
						    
						    EXPORT  	MAIN
						
				SPI_CS		EQU	    (1				SPI_DATA	EQU	    (1				SPI_CLK		EQU	    (1				
				SPI_IOCON	EQU	    (SPI_CS|SPI_DATA|SPI_CLK)			; SPI接口的I/O设置字
						
						
						    AREA   	LEDDISPC,CODE,READONLY 
						
						    CODE32					
				MAIN 		LDR	    SP,=0x40003000		; 设置堆栈指针SP
						    LDR	    R0,=PINSEL0			; 设置所有管脚连接GPIO
						    MOV	    R1,#0x00000000		
						    STR	    R1,[R0],#4			
						    STR	    R1,[R0]
				
						    LDR	    R0,=IO0DIR			; 设置SPI控制口为输出				
						    LDR	    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,=IO0CLR		    ; SPI_CS = 0
						    MOV	    R1,#SPI_CS
						    STR	    R1,[R0]
						
						    MOV	    R7,#8
				HC595_SDL1	LDR	    R0,=IO0CLR		    ; SPI_CLK = 0
						    MOV	    R1,#SPI_CLK
						    STR	    R1,[R0]
						
						    ANDS	R1,R2,#0x00000080	; 判断要发送的数据位,并设置SPI_DAT
						    LDRNE	R0,=IO0SET
						    LDREQ	R0,=IO0CLR
						    MOV	    R1,#SPI_DATA
						    STR	    R1,[R0]
						    MOV	    R2,R2,LSL #1        ; 数据左移一位
						
						    LDR	    R0,=IO0SET		    ; SPI_CLK = 1
						    MOV	    R1,#SPI_CLK
						    STR	    R1,[R0]
						
						    SUBS	R7,R7,#1
						    BNE	    HC595_SDL1		    ; 若数据未发送完毕,再次发送
						
						    LDR	    R0,=IO0SET		    ; 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			

相关资源