?? wdtrun.s
字號:
;******************************************************************************
; 文件名: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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -