基于s5pv2410,cortex a8的四個按鍵每一個按鍵點了對應(yīng)的燈
對于用匯編來編程的話不難,重點在于數(shù)據(jù)手冊,電路圖,管腳的看懂
直接上代碼
.globl _start
_start:
ldr r0,=0xe0200c40 @按鍵控制寄存器的地址
ldr r1,[r0]
bic r1,r1,#0xff @bic一次只能清8為每四位控制一個按鍵
bic r1,r1,#0xff<<8 @把16位清為零控制四個按鍵為輸入方式
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 @是否沒有按下
beq loop @如果相等表示沒有按鍵按下
@從這個地方開始就是有按鍵按下
mov r0,#0xf00 @延遲0xf00進行消抖
bl delay
ldr r1,=0xe0200c44
ldrb r0,[r1] @ read keys val
and r0,r0,#0xf
teq r0,#0xf @是否沒有按下
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