基於arm開發板四個按鍵控制四個燈亮

基於s5pv2410,cortex a8的四個按鍵每個按鍵點了對應的燈編程

對於用匯編來編程的話不難,重點在於數據手冊,電路圖,管腳的看懂函數

直接上代碼oop

.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: @循環讀取按鍵的值
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 looploop

delay: @延遲函數r0爲參數每次減一
subs r0,r0,#1
bne delay @r0不爲0繼續循環
mov pc,lrco

相關文章
相關標籤/搜索