key_printf(小结8-5)
来源:互联网 发布:贵阳块数据公司 编辑:程序博客网 时间:2024/05/04 07:03
概要:
我们用一种论循的方式,检查按键按下的时候,我们就打印:hello my_key
下面是按健的三个寄存器:
Register Address R/W Description
GPNCON 0x7F008830 R/W Port N Configuration Register
GPNDAT 0x7F008834 R/W Port N Data Register
GPNPUD 0x7F008838 R/W Port N Pull-up/down Register
1.
配制GPNCON的低两位为1;
s3c6410中的第一个按键所对应的GPNCON中的低两位:
00 = Input
01 = Output
10 = Ext. Interrupt[0]
11 = Key pad ROW[0]
2.
GPNDAT用来检测按键的输入:0为有按下,1为没有动静。
When the port is configured as input port, the corresponding bit is the pin state.
When the port is configured as output port, the pin state is the same as the
corresponding bit. When the port is configured as functional pin, the undefined
value will be read.
汇编如下:
#key,when key down ===>pritnf
.section .text //程序代码段
.global main
main:
#*0x7f008830 &= ~0x3mov ip,sp
stmdb sp!,{fp,ip,lr}
sub fp,ip,#4
key_detection:ldr r1,=0x7F008830 //设置GPNCON
ldr r2,[r1]
mvn r3,#0x3
add r2,r3,r2
str r2,[r1]
//检测GPNDAT
ldr r2,=0x7F008834
ldr r3,[r2]
ldr r1,=0xfffd
bic r3,r3,r1 //判断是否最低一位为0(按下)
cmp r3,#0
bne key_detection //如果没有按下,就一直在这里检测。
key_down_printf:
ldr r0,=string //在arm中我们默认为把对一个函数的调用需要的参数放在r0~r3
ldr r3,=string1 //取string1的地址,string1中的内容为0x57e11d4c
ldr r2,[r3]
blx r2 //调用u-boot里面的打印函数
nop
b key_detection //跳回去,成为一个论循,有点笨着。
sub sp,fp,#8
ldmia sp,{fp,sp,pc}
.section .data
string:
.asciz "hello my_key\n"
.align 2
string1:
.word 0x57e11d4c
- key_printf(小结8-5)
- 8月5日小结
- 2005.7-8小结
- oracle 学习小结8
- 8月份工作小结
- oracle 学习小结8
- led驱动(小结8)
- buzzer(小结8-4)
- Django1.8使用小结
- 2016.4.8每日小结
- 8-11学习小结
- 小结 -2017-8-13
- Linux单元小结(8)
- .net Remoting小结5
- 小结2007-5-9
- cakephp 学习小结 5
- ejb3小结5
- android学习小结5
- EHCache的使用
- Yarn的JVM重用功能——uber
- spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题
- 74HC/LS/HCT/F系列芯片的区别
- Java分布式事务
- key_printf(小结8-5)
- 正则表达式入门的很好资料
- 做菜时你绝对不知道的123个门道
- 基于内容的推荐
- db2命令一些总结
- strstr函数的用法
- 小杨教书
- OCP-1Z0-053-V12.02-17题
- CentOS6.4 读写NTFS分区