歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C2410 MDK實驗---ARM匯編語言實現跑馬燈

S3C2410 MDK實驗---ARM匯編語言實現跑馬燈

日期:2017/3/1 10:06:09   编辑:Linux編程

具體思路:

由於開發板是將GPF4-7與燈相連,所以通過設置GPFCON控制寄存器將將LED燈相連的引腳4,5,6,7設置為輸出功能,將他們的上拉電阻設置為禁用(設置GPFUP為0),通過修改GPFDAT寄存器的數值來實現燈的亮和滅,主要是將具體引腳對應的GPFUP設置為0,使之為低電平,從而使燈可以亮。再設置幾個延遲將燈亮的時間延長。最後用C語言的mian函數調用LEDTEST函數即可。

主要ARM代碼部分:

GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058
AREA LEDTESTARM,CODE,READONLY
EXPORT LEDTEST
IMPORT main
ENTRY
LEDTEST
;設置每個引腳的功能,設置GPF4-7為output
LDR R0,=GPFCON
LDR R1,=0x5500
STR R1,[R0]
;禁止他們的上拉電阻
LDR R0,=GPFUP
LDR R1,=0xff00
STR R1,[R0]
LDR R2,=GPFDAT
;下面進行跑馬燈的循環

LOOP2
LDR R1,=0xdf
STR R1,[R2]
BL DELAY2
LOOP3
LDR R1,=0x7f
STR R1,[R2]
BL DELAY3
LOOP1
LDR R1,=0xef ;低電平設置
STR R1,[R2]
BL DELAY1 ;延遲
LOOP4
LDR R1,=0xbf
STR R1,[R2]
BL DELAY4

;延遲程序
DELAY1
LDR R3,=0x8ffff ;設置延長時間
DELAY5
SUB R3,R3,#1 ;r3=r3-1
CMP R3,#0x0 ;將r3的值與0相比較
BNE DELAY5 ;比較的結果不為0(r3不為0),繼續調用delay1,否則執行下一條語句
B LOOP4
MOV PC,LR ;返回


DELAY2
LDR R3,=0x8ffff

DELAY6
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY6
B LOOP3
MOV PC,LR

DELAY3
LDR R3,=0x8ffff
DELAY7
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY7
B LOOP1
MOV PC,LR

DELAY4
LDR R3,=0x8ffff
DELAY8
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY8
B LOOP2
MOV PC,LR

END

Copyright © Linux教程網 All Rights Reserved