基于arm开发板四个按键控制四个灯亮

时间:2022-06-28 13:43:11

基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯

对于用汇编来编程的话不难,重点在于数据手册,电路图,管脚的看懂

直接上代码

.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 loop

delay: @延迟函数r0为参数每次减一
subs r0,r0,#1
bne delay @r0不为0继续循环
mov pc,lr