基于arm開(kāi)發(fā)板四個(gè)按鍵控制四個(gè)燈亮
基于s5pv2410,cortex a8的四個(gè)按鍵每一個(gè)按鍵點(diǎn)了對(duì)應(yīng)的燈
對(duì)于用匯編來(lái)編程的話不難,重點(diǎn)在于數(shù)據(jù)手冊(cè),電路圖,管腳的看懂
直接上代碼
.globl _start
_start:
ldr r0,=0xe0200c40 @按鍵控制寄存器的地址
ldr r1,[r0]
bic r1,r1,#0xff @bic一次只能清8為每四位控制一個(gè)按鍵
bic r1,r1,#0xff<<8 @把16位清為零控制四個(gè)按鍵為輸入方式
str r1,[r0] @配置按鍵為輸入方式
ldr r0,=0xe0200280 @led燈控制寄存器的地址
ldr r1,=0x1111
str r1,[r0] @配置led燈為輸出方式
loop: @循環(huán)讀取按鍵的值
ldr r1,=0xe0200c44
ldrb r0,[r1] @ read keys val
and r0,r0,#0xf
teq r0,#0xf @是否沒(méi)有按下
beq loop @如果相等表示沒(méi)有按鍵按下
@從這個(gè)地方開(kāi)始就是有按鍵按下
mov r0,#0xf00 @延遲0xf00進(jìn)行消抖
bl delay
ldr r1,=0xe0200c44
ldrb r0,[r1] @ read keys val
and r0,r0,#0xf
teq r0,#0xf @是否沒(méi)有按下
beq loop
@確定有按鍵按下
mov r1,r0
ldr r0,=0xe0200280
str r1,[r0,#4]
b loop
delay: @延遲函數(shù)r0為參數(shù)每次減一
subs r0,r0,#1
bne delay @r0不為0繼續(xù)循環(huán)
mov pc,lr