ARM专辑-152M-pdf.zip

源代码在线查看: wdtrun.s

软件大小: 74715 K
上传用户: QQ
关键词: M-pdf ARM 152 zip
下载地址: 免注册下载 普通下载 VIP

相关代码

				;****************************************************************************** 
				; 文件名:WDTRUN.S
				; 功能:运行WDT,并控制LED1--LED8显示输出。程序开始先对LED1--LED8闪烁控制,并进行喂
				;       狗处理;然后只点亮LED1,并进入死循环,等待WDT复位。
				; 说明:将跳线器JP8短接。
				;****************************************************************************** 
							INCLUDE		LPC2294.INC
							EXPORT  	MAIN
							
				; 定义SPI控制口
				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   	WDTRUNC,CODE,READONLY 	
							ENTRY							
						
				MAIN 		LDR		SP,=0x40003F00		; 设置堆栈指针
						    LDR	    R0,=PINSEL0			; 设置所有管脚连接GPIO
						    MOV	    R1,#0x00000000		
						    STR	    R1,[R0]						
				
						    LDR	    R0,=IO0DIR			; 设置SPI控制口为输出				
						    MOV	    R1,#SPI_IOCON		
						    STR	    R1,[R0]
						    
						    LDR		R0,=WDTC
						    LDR		R1,=0xFF000			
						    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,#0xFE		
						    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,#0x1000		; 延时参数
				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
				
				
							

相关资源