ARM汇编示例—按键LED(循环)

发布者:yunhao最新更新时间:2016-07-06 来源: eefocus关键字:ARM  汇编  按键LED  循环 手机看文章 扫描二维码
随时随地手机看文章
汇编程序是学习硬件非常好的切入点,虽然程序用C来写回比较方便,但是要想真正了解一款硬件,还是得从体系结构和汇编指令上下点功夫。

一下是一个最基础的ARM 汇编程序,程序的功能是按键,然后在LED上显示出来是哪个键按了下去。

;引脚连线
;GPF0~GPF3 K1~K4
;GPF4~GPF7 LED1~LED4
;GPG3 K5
;GPG11 K6
;GPxCON的配置寄存器每个引脚都占两位,00表示表示输入,01表示输出
;GPxDAT寄存器表示引脚的高低电平状态,读写数据在这个寄存器里进行
;程序结果:按Kx,则LED就根据x的二进制表示出来

GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPGCON EQU 0x56000060
GPGDAT EQU 0x56000064

    AREA KEY_LED, CODE, READONLY ;这里表示此区域是只读代码"KEY_LED"
    EXPORT _ENTRY ;引入程序入口,这里跟连接器有关系

;程序入口
_ENTRY

    ;初始化GPIO的配置
    ;这里包括K1~K4输入配置和LED1~LED4的配置
    ldr r0, =GPFCON
    mov r1, #0x5500
    str r1, [r0]
    
    ;K5和K6的配置
    ldr r0, =GPGCON
    ldr r1, =0xff3fff3f
    str r1, [r0]
    
    ;初始化将led都熄灭
    ldr r0, =GPFDAT
    mov r1, #0xf0
    str r1, [r0] 

;循环测试各按键状态,并修改led状态
LOOP
    
    ;测试按键1 GPF0
    ldr r0, =GPFDAT ;将GPF的数据寄存器地址放入r0
    ldr r1, [r0] ;读取GPF数据寄存器
    tst r1, #0x01 ;测试GPF0是否变0(K1按下),若是按下,EQ置1,否则NE置1
    andeq r1, r1, #0xef ;若是EQ为1,将GPF4置0(点亮),其他不变
    orrne r1, r1, #0x10 ;若是NE为1,将GPF4置1(熄灭),其他不变
    str r1, [r0] ;将LED状态写入GPF数据寄存器
    
    ;测试按键2 GPF2
    ldr r0, =GPFDAT
    ldr r1, [r0]
    tst r1, #0x02
    andeq r1, r1, #0xdf
    orrne r1, r1, #0x20
    str r1, [r0]
    
    ;测试按键3 GPF3
    ldr r0, =GPFDAT
    ldr r1, [r0]
    tst r1, #0x04
    andeq r1, r1, #0xcf
    orrne r1, r1, #0x30
    str r1, [r0]

    ;测试按键4 GPF04
    ldr r0, =GPFDAT
    ldr r1, [r0]
    tst r1, #0x08
    andeq r1, r1, #0xbf
    orrne r1, r1, #0x40
    str r1, [r0]
    
    ;测试按键5 GPG3
    ldr r0, =GPGDAT
    ldr r1, [r0]
    ldr r0, =GPFDAT
    ldr r2, [r0]
    tst r1, #0x0008
    andeq r2, r2, #0xaf
    orrne r2, r2, #0x50
    str r2, [r0]
    
    ;测试按键5 GPG11
    ldr r0, =GPGDAT
    ldr r1, [r0]
    ldr r0, =GPFDAT
    ldr r2, [r0]
    tst r1, #0x0800
    andeq r2, r2, #0x9f
    orrne r2, r2, #0x60
    str r2, [r0]

    b LOOP

    END


关键字:ARM  汇编  按键LED  循环 引用地址:ARM汇编示例—按键LED(循环)

上一篇:ARM中C和汇编混合编程及示例ARM中C和汇编混合编程及示
下一篇:移植Lua到ARM平台

推荐阅读最新更新时间:2024-03-16 14:59

Arm起诉高通:拟瓦解对芯片设计公司Nuvia 14亿美元战略收购
据报道,当地时间周三,软银集团旗下芯片公司Arm宣布,该公司已向高通及高通最近收购的芯片设计公司Nuvia发起诉讼,指控其违反授权协议和侵犯注册商标。    Arm向法院申请禁令,希望迫使高通销毁根据Nuvia与Arm的授权协议开发的设计。Arm认为,必须获得该公司的许可,才能将这些设计转让给高通。    高通去年斥资14亿美元收购Nuvia。该公司称,Arm无权干涉高通或Nuvia的创新。高通总法律顾问安·查普林(Ann Chaplin)说:“Arm的诉讼忽略了一个事实:高通拥有广泛而完善的授权,覆盖其定制的CPU,而且我们相信这些权利将得到确认。”    如果Arm的诉讼能够成功,相当于瓦解了高通近些年来规模最大的一次战略收购
[半导体设计/制造]
第1天-ARM汇编指令B/BL
第1天-ARM汇编指令 B : 分支 (Branch) B{条件} 地址 B 是最简单的分支。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给定的地址,从那里继续执行。注意存储在分支指令中的实际的值是相对当前的 R15 的值的一个偏移量;而不是一个绝对地址。它的值由汇编器来计算,它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(+/- 32 M)。 在其他处理器上,你可能经常见到这样的指令: OPT 1 LDA &70 CMP #0 BEQ Zero STA &72 .Zero RTS (取自 Acorn Electron User Guide issue 1 page 213)
[单片机]
Lumia 950 XL成功运行Win10 ARM系统:下一步搞定exe
Lumia手机死了,Windows 10 Mobile手机系统也死了,但是很多忠实“软粉”、大神级开发者、黑客仍然对Windows手机平台兴趣浓厚,不断各种折腾。 比如Ben|imbushuo,此前就已经在一台Lumia 950 XL上成功安装了UEFI BIOS,实现了Windows 10的引导。 在月初的视频中,Lumia 950 XL这台2015年底的老旗舰已经成功搞定了Windows 10 ARM的启动,进展到了安装阶段。 从最新成果来看,这个安装界面并不是唬人的,Ben成功地进入到了桌面,据他介绍,Windows 10 ARM在Lumia 950 XL上运行地相当好。 计算机属性中,也成功
[手机便携]
ARM-Linux驱动--MTD驱动分析(三)
主机:Gentoo Linux 11.2 with linux kernel 3.0.6 硬件平台:FL2440(S3C2440)with linux kernel 2.6.35 本文分析MTD设备的分区管理机制 分区管理实际上是将一个MTD设备分成几个分区,将其作为单独的MTD原始设备进行管理。 1、分区的结构体描述结构体mtd_part /* Our partition node structure */ //分区结构信息 struct mtd_part { struct mtd_info mtd;//mtd_info数据结构,会被加入mtd_table中 struct mtd_info
[单片机]
ARM64平台下WFE和SEV相关指令解析
WFE 等待事件(Wait For Event)指令。 ARM架构下,有一个全局的事件寄存器(Event Register),系统中的每一个CPU核在这个寄存器上都有对应的位。 当当前CPU执行WFE指令的时候,如果事件寄存器对应当前CPU的位没有被设置(也就是0),则当前CPU核会进入低功耗模式,会被挂起,不会再执行其它操作;而如果事件寄存器对应当前CPU的位被设置了(也就是1),则会将事件寄存器对应当前CPU的位清空(设置成0),然后立即返回,继续执行下面的指令,不会进入低功耗模式。 如果当前CPU核通过WFE指令进入了低功耗模式,那么只有在如下情况下才可能被重新唤醒: 发生了IRQ中断(前提是没有被屏蔽);
[单片机]
当C2000邂逅ARM......
  提及绿色环保,你能想到什么?太阳能?风能?智能电网?电动汽车?......这些应用究竟能够产生多大的效果,似乎大多数人就不明晰了。   对此,美国西北太平洋国家实验室为你算了一笔账:以2030年为例,当真正实现优化后,这些绿色应用能够帮美国剩下12.06%的能源,折成金钱约为534亿美元。也正是看到了如此美妙的前景,智能电机控制、可再生能源、智能电网、数字电源和电动汽车等绿色环保应用越来越流行。   协奏曲——Concerto   而以上的环保型应用对实时控制MCU有着很高的要求,只有这样才能执行精确、高效型功率转换所必需的复杂算法,而这正是高效电机控制、可再生能源和智能电网技术的基本要素。但是,要想将效率提升至可
[单片机]
ARM指令状态切换到Thumb指令状态
span style= white-space:pre /span AREA Arm_to_Thumb,CODE, READONLY ENTRY CODE32 start ldr r0,=aaa+1 mov r3,#18 bx r0 CODE16 aaa mov r1,#12 mov r2,#10 END 请看上面的代码,首先看到第一条指令,ldr r0,=aaa+1,aaa可以理解成一个函数的名字,那么函数aaa执行的时候是不是有第一条指令啊,这条指令是什么呢,那当然是mov r1,#12这条指令了,所以ldr那条指令的意思是
[单片机]
做跨国公司中的“小巨人”——ARM的成长
1990年11月,一位名叫Robin Saxby的英国人带着由Acorn电脑集团提供的技术和最初的12名工程师,借以苹果电脑和VLSI Technology公司出资,开始创业历程。1991年他们便成功地研制出首个低成本RISC结构体系,且被应用于苹果电脑正在开发的PDA上,这也印证了该公司的取名“Advanced RISC Machines”(简称ARM)。 打开市场 “最初的窘态成就了ARM的今天。”1990年由英国电脑公司Acorn、苹果电脑及ASIC芯片公司VLSI Technology合资成立的小型技术企业ARM,最初主业是向苹果提供芯片技术产品,但其业务并没有得到母公司的强力支持,ARM只好转身寻求在芯片业
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved