歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

具體思路:

由於開發板是將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