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

📄 wdtrun.s

📁 周立功单片机ARM学习板easyARM2104的测试程序等
💻 S
字号:
;******************************************************************************	
; File:WDTRUN.S
; 功能:运行WDT,由KEY1键控制程序不喂狗,实现WDT复位操作。
; 说明:将跳线器JP8_LED4短接。
;******************************************************************************	
		    INCLUDE	    LPC2106.INC	

LED4CON		EQU		0x00002000	    ; P0.13引脚控制LED4,低电平点亮		
KEY1		EQU		0x00004000	    ; P0.14引脚连接KEY1
		
		    AREA   	WDTRUNC,CODE,READONLY 
		    ENTRY
		
		    CODE32					
MAIN 		LDR	    SP,=0x40003000	; 设置堆栈指针SP
		    LDR	    R0,=IODIR		; 设置LED控制口为输出,而KEY1控制口为输入
		    MOV	    R1,#LED4CON
		    STR	    R1,[R0]
		
		    ; 控制LED快速闪烁50次,以便指示系统复位
		    MOV	    R5,#50
LEDSET		LDR	    R1,=LED4CON
		    LDR	    R0,=IOSET			                            
		    STR	    R1,[R0]			; LED4控制的I/O置位,即LED4熄灭  
		    BL	    DELAYUS                                                      
				                                                                            
LEDCLR		LDR	    R0,=IOCLR                                                   
		    STR	    R1,[R0]			; LED4控制的I/O复位,即LED4点亮  
		    BL	    DELAYUS
		
		    SUBS	R5,R5,#1
		    BNE	    LEDSET
		
		    ; 设置并启动WDT
		    LDR	    R0,=WDOG_BASE
		    MOV	    R1,#0xFF000	    ; 设置WDTC,喂狗重装值
		    STR	    R1,[R0,#0x04]	
		    MOV	    R1,#0x03		; 设置WDT工作模式,WDMOD
		    STR	    R1,[R0]					
		    BL	    RSTWDT			; 进行喂狗操作
		
		    ; 正常操作显示(LED4闪烁),若按住KEY1键,则不进行喂狗处理
MAIN_LOOP	LDR	    R1,=LED4CON
		    LDR	    R0,=IOSET			                            
		    STR	    R1,[R0]			; LED4控制的I/O置位,即LED4熄灭  
		    BL	    DELAYS
	                                                                            
		    LDR	    R0,=IOCLR                                                   
		    STR	    R1,[R0]			; LED4控制的I/O复位,即LED4点亮  
		    BL	    DELAYS
		    
		    LDR		R0,=IOPIN
WAITKEY1    LDR		R1,[R0]         ; 若按住KEY1键,则一直循环等待放开
		    ANDS	R1,R1,#KEY1		; 若WDT溢出复位,则LED4立即熄灭	
		    BEQ		WAITKEY1  

		    B	    MAIN_LOOP
		
;******************************************************************************		
; 名称:RSTWDT
; 功能:清WDT
; 入口参数:无                                          
; 出口参数:无                                          
; 占用资源:R0、R1
;******************************************************************************
RSTWDT
		    LDR	    R0,=WDFEED                          
		    MOV	    R1,#0xAA
		    STR	    R1,[R0]
		    MOV	    R1,#0x55
		    STR	    R1,[R0]
		    MOV	    PC,LR
		    
;******************************************************************************		
; 名称:DELAYS  
; 功能:短软件延时
; 入口参数:无 		
; 出口参数:无                                          
; 占用资源:R7
;******************************************************************************                                          
DELAYUS	                                                
		    MOV	    R7,#0xF000	    ; 延时参数
DELAYUS_L1	SUBS	R7,R7,#1	    ; R7 = R7-1
		    BNE	    DELAYUS_L1      ; 判断R7-1结果是否为0,若不为0则跳转  
		    MOV	    PC,LR		    ; 返回	
		
;******************************************************************************			
; 名称:DELAYS  
; 功能:软件延时。并具有清WDT指令。
; 入口参数:无  
; 出口参数:无  
; 占用资源:R7 
;****************************************************************************** 
DELAYS	        
		    STMFD	SP!,{R0-R7,LR}  ; 保存参数
		
		    MOV	    R7,#0x1F000		; 延时参数
DELAYS_L1	BL	    RSTWDT
		    SUBS	R7,R7,#1		; R7 = R7-1
		    BNE	    DELAYS_L1       ; 判断R7-1结果是否为0,若不为0则跳
		
		    LDMFD	SP!,{R0-R7,PC}  ; 返回	
		
		    ALIGN				    ; 数据字对齐
		    LTORG				    ; 声明文字池		 
		
		
		    END
;系统正常运行时,LED4闪烁,若按住KEY1键,程序将不进行喂狗操作,则WDT溢出而复位系统。
;在使用JTAG进行调试时,可以检查0xE0000000地址(WDMOD寄存器)处的内容,判断是其WDTOF标
;志是否置位。
		    

⌨️ 快捷键说明

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