?? leddisp.s
字號:
;******************************************************************************
; 文件名:LEDDISP.S
; 功能:LED數(shù)碼管顯示。
; 通過I/O模擬同步串口與74HC595進行連接,控制74HC595驅動LED數(shù)管顯示。
; 說明:將跳線器JP3短接。
;******************************************************************************
INCLUDE LPC2294.INC
EXPORT MAIN
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 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] ; 查表取得顯示數(shù)據(jù)
BL HC595_SENDDAT ; 發(fā)送顯示
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發(fā)送一字節(jié)數(shù)據(jù)
; 入口參數(shù):R2 待發(fā)送的數(shù)據(jù),低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 ; 判斷要發(fā)送的數(shù)據(jù)位,并設置SPI_DAT
LDRNE R0,=IO0SET
LDREQ R0,=IO0CLR
MOV R1,#SPI_DATA
STR R1,[R0]
MOV R2,R2,LSL #1 ; 數(shù)據(jù)左移一位
LDR R0,=IO0SET ; SPI_CLK = 1
MOV R1,#SPI_CLK
STR R1,[R0]
SUBS R7,R7,#1
BNE HC595_SDL1 ; 若數(shù)據(jù)未發(fā)送完畢,再次發(fā)送
LDR R0,=IO0SET ; SPI_CS = 1,輸出顯示數(shù)據(jù)
MOV R1,#SPI_CS
STR R1,[R0]
LDMFD SP!,{R0-R12,PC} ; 返回
;******************************************************************************
; 名稱:DELAYS
; 功能:軟件延時
; 入口參數(shù):無
; 出口參數(shù):無
; 占用資源:R7
;******************************************************************************
DELAYS
MOV R7,#0x000FF000 ; 延時參數(shù)
DELAYS_L1 SUBS R7,R7,#1 ; R7 = R7-1
BNE DELAYS_L1 ; 判斷R7-1結果是否為0,若不為0則跳轉
MOV PC,LR ; 返回
ALIGN ; 數(shù)據(jù)字對齊
LTORG ; 聲明文字池
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -