找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4421|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ARM S2C2410A控制5個(gè)LED流水燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:113276 發(fā)表于 2016-4-10 17:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
無(wú)論是S3C2410A還是S3C2440A,其IO口B都是11位二進(jìn)制數(shù),xxx  xxxx xxxx,現(xiàn)在控制第5、6、7、8為做輸出點(diǎn)亮LED燈(共陽(yáng)極,輸出0點(diǎn)亮),即xx8  765x  xxxx,GPBCON            equ            0x56000010
GPBDAT             equ            0x56000014
GPBUP               equ            0x56000018
                        xport xmain
                        area Init,code,readonly
                        entry
                        export
xmain
                        ldr r0,=GPBCON
                        ldr r1,[r0]
                        bic r1,#0x3fC00  ;r1=xx00 0000 00xx xxxx xxxx
                        orr r1,#0x15400  ;r1=xx01 0101 01xx xxxx xxxx
                        str r1,[r0]            ;r1傳給GPBCON設(shè)置8765位為輸出
                        ldr r0,=GPBUP
                        ldr r1,[r0]
                        orr r1,#0x1e0       ;r1=xx1 111x xxxx
                        str r1,[r0]             ;開B口第8、7、6、5位上拉電阻
                        ldr r0,=GPBDAT

        ldr r2,[r0]            ;把B口最初狀態(tài)保存在R2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
LOOP                dr r1,[r2]
                        orr r1,#0x1c0
                        str r1,[r0]
                        bl  delay      ;BL跳轉(zhuǎn)時(shí)將PC+4值自動(dòng)保存在R14即LR中,也就是將程序的下一個(gè)語(yǔ)句地址保存在lr中
                                          ;在轉(zhuǎn)移的程序后執(zhí)行mov     pc,lr相當(dāng)于返回,這樣BL相當(dāng)于調(diào)用子程序,pc=lr相當(dāng)于子程序返回

                      ;;;;;;;;;;;;;;;;;;
                        dr r1,[r2]
                        orr r1,#0x1a0
                        str r1,[r0]
                        bl  delay
                    ;;;;;;;;;;;;;;;;;;;;;
                        ldr r1,[r2]
                        orr r1,#0x160
                        str r1,[r0]
                        bl  delay
                    ;;;;;;;;;;;;;;;;;;;;;;;;
                        ldr r1,[r2]
                        orr r1,#0x0e0
                        str r1,[r0]
                        bl  delay
                    ;;;;;;;;;;;;;;;;;;;;;;;;
                        b LOOP
delay
                        mov r3,#3
delay1               sub r3,r3,#1
                        cmp r3,#0x0
                        bne delay1
                        mov pc,lr           ;這句相當(dāng)于子程序返回語(yǔ)句
                        end






GPA            equ 0x000000
                    GET d:\abc\INC\2440addr.inc
                    GET d:\abc\INC\Option.inc
                    GET d:\abc\INC\Memcfg.inc

                    area Init,code,readonly
                    CODE32
                     entry     
xmain                  
start
                    ldr r0,=GPACON
                    ldr r1,=GPA
                    str r1,[r0]
                    ldr r0,=GPADAT;
LOOP2        mov r1,#0
                    mov r2,#1
LOOP1        str r2,[r0]
                    BL delay
                    MOV r2,r2,LSL#1
                    add r1,#1
                    cmp r1,#23
                    bne LOOP1
                    B LOOP2

delay           mov r3,#5
delay1        sub r3,r3,#1
                   cmp r3,#0
                    bne delay1
                    mov pc,lr
                    end





GPBCON                                  equ            0x56000010
GPBDAT                                  equ            0x56000014
GPBUP                                    equ            0x56000018
GPAOUT                                 equ             0x0000000
GPACON                                 equ             0x56000000
GPADAT                                  equ            0x56000004
                                                 export  xmain
                                                area Init,code,readonly
                                                 CODE32
                                                 entry
                                                export
                                                GBLA nn   ;設(shè)置全局變量nn

xmain                  
                                            ldr r1,=GPAOUT ;調(diào)取設(shè)置A口為輸出的數(shù)據(jù)

                                           ldr r0,=GPACON  ;調(diào)取A口輸出的方向控制寄存器地址
                                           str r1,[r0]              ;把方向控制數(shù)據(jù)賦值給A口方向寄存器0x56000000
                                           ldr r0,=GPADAT   ;調(diào)取A口輸出的寄存器地址,傳遞給[r0]就是輸出
LOOP2                                mov r1,#0             ;r1計(jì)數(shù)23次,22個(gè)輸出腳循環(huán)一次流水效果
                                            mov r2,#1             ;點(diǎn)亮流水燈一個(gè)燈亮
LOOP1
                                            str r2,[r0]                ;點(diǎn)亮一個(gè)燈
                                            BL delay                 ;延遲
                                            MOV r2,r2,LSL#1  ;左移點(diǎn)亮下一個(gè),依次類推
                                            add r1,#1               ;計(jì)數(shù)加1
                                            cmp r1,#23      ;計(jì)數(shù)加1看夠不夠23,
                                            bne LOOP1            ;不夠23次,說(shuō)明沒(méi)有全部輪流一次,跳到LOOP1繼續(xù)。
                                            B LOOP2                 ;夠23次,流水燈循環(huán)1次,跳到LOOP2處從頭再來(lái)

delay                                    mov r3,#5
delay1                                  sub r3,r3,#1
                                            cmp   r3,#0
                                            bne delay1
                                            mov pc,lr
                                            end
流水燈C語(yǔ)言程序
#include"S3C2440.h"
void xmain()
{
            unsigned char n,m;
             GPACON =0;
             while(1)
                 {
                     for(n=0;n<23;n++)
                         {
                                GPADAT =1<<n;
                                for(m=0;m<15;m++)
                                    GPADAT = 1<<n;
                         }
                 }
}





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表