linux arm中断跑马灯,S3C2410 MDK实验---ARM汇编语言实现跑马灯
具體思路:
由于開發(fā)板是將GPF4-7與燈相連,所以通過設(shè)置GPFCON控制寄存器將將LED燈相連的引腳4,5,6,7設(shè)置為輸出功能,將他們的上拉電阻設(shè)置為禁用(設(shè)置GPFUP為0),通過修改GPFDAT寄存器的數(shù)值來實現(xiàn)燈的亮和滅,主要是將具體引腳對應(yīng)的GPFUP設(shè)置為0,使之為低電平,從而使燈可以亮。再設(shè)置幾個延遲將燈亮的時間延長。最后用C語言的mian函數(shù)調(diào)用LEDTEST函數(shù)即可。
主要ARM代碼部分:
GPFCON? EQU? ? 0x56000050
GPFDAT? EQU? ? 0x56000054
GPFUP? ? EQU? ? 0x56000058
AREA? LEDTESTARM,CODE,READONLY
EXPORT LEDTEST
IMPORT main
ENTRY
LEDTEST
;設(shè)置每個引腳的功能,設(shè)置GPF4-7為output
LDR R0,=GPFCON
LDR R1,=0x5500
STR R1,[R0]
;禁止他們的上拉電阻
LDR R0,=GPFUP
LDR R1,=0xff00
STR R1,[R0]
LDR R2,=GPFDAT
;下面進行跑馬燈的循環(huán)
LOOP2
LDR R1,=0xdf
STR R1,[R2]
BL DELAY2
LOOP3
LDR R1,=0x7f
STR R1,[R2]
BL DELAY3
LOOP1
LDR R1,=0xef? ;低電平設(shè)置
STR R1,[R2]
BL DELAY1? ? ? ;延遲
LOOP4
LDR R1,=0xbf
STR R1,[R2]
BL DELAY4
;延遲程序
DELAY1
LDR R3,=0x8ffff? ? ? ? ? ? ;設(shè)置延長時間
DELAY5
SUB R3,R3,#1? ? ? ? ? ? ? ;r3=r3-1
CMP R3,#0x0? ? ? ? ? ? ? ? ;將r3的值與0相比較
BNE DELAY5? ? ? ? ? ? ? ? ;比較的結(jié)果不為0(r3不為0),繼續(xù)調(diào)用delay1,否則執(zhí)行下一條語句
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
總結(jié)
以上是生活随笔為你收集整理的linux arm中断跑马灯,S3C2410 MDK实验---ARM汇编语言实现跑马灯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下free源码,linux命令
- 下一篇: linux支持hd610显卡吗,HD61