1.點亮一盞LED
1.1步驟:
1.1.1檢視原理圖

結果:GPB5輸出低電平時,LED1亮
即nLED1 GPB5 = 0ON
GBP5 = 1OFF
1.1.2檢視datasheet結果:需要控制GPBCON、GPBDAT、GPBUP這3個寄存器
1.點亮一盞LED(ARM彙編實作)1.點亮一盞LED
即GPB5 = 01(設為輸出)
GPBDAT = 0(設為低電平)
GPBUP = 1(設為停止使用上拉電阻)
1.1.3實作代碼
;================================================
;檔案名稱:LED_ASM.s
;摘 要:GEC2440開發闆,點亮LED燈,相關LED1接GPB5
;目前版本:1.0
;作 者:tzf
;完成日期:2012-6
;================================================
;GPIO寄存器宏定義
GPBCON EQU 0x56000010
GPBDAT EQU 0x56000014
GPBUP EQU 0x56000018
EXPORT LEDTEST
AREA LEDTESTASM, CODE, READONLY ;該僞指令定義了一個代碼段,段名為LEDTESTASM
ENTRY ;入口
LEDTEST
;設定GPB5為輸出 00:input 01:output
ldr r0, =GPBCON
ldr r1, [r0]
bic r1, r1, #0x0C00 ;b00 0000 0000 1100 0000 0000
;0x0C00 0x2000 0xC000 0x20000
orr r1, r1, #0x400 ;b00 0000 0000 0100 0000 0000
str r1, [r0]
;禁止GPB5端口的上拉電阻 0:上拉使能 1:禁止上拉
ldr r0, =GPBUP
ldr r1, [r0]
orr r1, r1, #0x20 ;b000 0010 0000
str r1, [r0]
looptest
ldr r2, =GPBDAT
ldr r3, [r2]
bic r3, r3, #0x20 ;b00 0010 0000 -> b11 1101 1111
orr r3, r3, #0x0 ;b00 0000 0000 -> b11 1101 1111
str r3, [r2] ; GPB5輸出1
ldr r0, =0x2fffff
bl delay ;調用延時子程式
ldr r3, [r2]
bic r3, r3, #0x20 ;b00 0010 0000 -> b11 1101 1111 0x2 0x4 0x8 0xA
orr r3, r3, #0x20 ;b00 0010 0000 -> b11 1111 1111
str r3, [r2] ; GPB5輸出0
ldr r0, =0x2fffff
bl delay ;調用延時子程式
b looptest ;實作死循環while(1)
delay
sub r0, r0, #0x1 ;r0 = r0 - 1
cmp r0, #0x0 ;将r0的值與0相比較
bne delay ;比較的結果不為0(r0不為0), 繼續調用delay,否則執行下一條語句
; mov pc, lr ;有警告
bx lr ;可以使用MOV PC, LR或者BX LR來完成子程式傳回
END ;程式結束符