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

📄 wdtrun.s

📁 基于ARM7的LPC21XX系列的部分汇编源码
💻 S
字号:
;****************************************************************************** 
; 文件名:WDTRUN.S
; 功能:运行WDT,并控制数码管D1显示输出。程序开始先对数码管D1全闪烁控制,并进行喂
;       狗处理;然后显示'-',并进入死循环,等待WDT复位。
; 说明:将跳线器JP3短接。
;****************************************************************************** 
			INCLUDE		LPC2294.INC
			EXPORT  	MAIN
			
; 定义SPI控制口
SPI_CS			EQU	    (1<<29)			; P0.29
SPI_DATA		EQU	    (1<<6)			; P0.6
SPI_CLK			EQU	    (1<<4)			; P0.4

SPI_IOCON		EQU	    (SPI_CS|SPI_DATA|SPI_CLK)	; SPI接口的I/O设置字

			AREA   	WDTRUNC,CODE,READONLY 							
			
MAIN 		LDR		SP,=0x40003F00		; 设置堆栈指针
		    LDR	    R0,=PINSEL0			; 设置所有管脚连接GPIO
		    MOV	    R1,#0x00000000		
		    STR	    R1,[R0]
		    STR		R1,[R0,#0x04]						

		    LDR	    R0,=IO0DIR			; 设置SPI控制口为输出				
		    LDR     R1,=SPI_IOCON		
		    STR	    R1,[R0]
		    
		    LDR		R0,=WDTC
		    LDR		R1,=0x5F0000			
		    STR		R1,[R0]				; 设置WDTC,喂狗重装值
		    LDR		R0,=WDMOD
		    MOV		R1,#0x03
		    STR		R1,[R0]				; 设置并启动WDT
		    BL		RSTWDT				
		
		    MOV	    R5,#18
MAIN_LOOP	MOV		R2,#0x00		
		    BL	    HC595_SENDDAT		; 发送显示
		    BL	    DELAYS			    ; 软件延时
		    MOV		R2,#0xFF
		    BL	    HC595_SENDDAT		; 发送显示
		    BL	    DELAYS			    ; 软件延时
		    
		    SUBS	R5,R5,#1			; R5=R5-1
		    BNE	    MAIN_LOOP  
		
			MOV		R2,#0xBF		
		    BL	    HC595_SENDDAT		; 发送显示		
HALT		B		HALT


;******************************************************************************		
; 名称: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  
; 功能:软件延时。并具有清WDT指令。
; 入口参数:无  
; 出口参数:无  
; 占用资源:(R7)
;****************************************************************************** 
DELAYS	        
		    STMFD	SP!,{R0-R7,LR}  ; 保存参数
		
		    MOV	    R7,#0x18000		; 延时参数
DELAYS_L1	BL	    RSTWDT
		    SUBS	R7,R7,#1		; R7 = R7-1
		    BNE	    DELAYS_L1       ; 判断R7-1结果是否为0,若不为0则跳
		
		    LDMFD	SP!,{R0-R7,PC}  ; 返回
		    	
		    
;******************************************************************************		
; 名称:RSTWDT
; 功能:清WDT
; 入口参数:无                                          
; 出口参数:无                                          
; 占用资源:R0、R1
;******************************************************************************
RSTWDT
		    LDR	    R0,=WDFEED                          
		    MOV	    R1,#0xAA
		    STR	    R1,[R0]
		    MOV	    R1,#0x55
		    STR	    R1,[R0]
		    MOV	    PC,LR						
			
			END


⌨️ 快捷键说明

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