在上一篇LED博客上面进行添加程序。

首先看原理图知道KEY的引脚:

那么我们知道了按键的引脚,根据上一篇的led的引脚,可以理清楚,按键按下会修改某寄存器的值,CPU检测到按键修改,则输出电平到LED数据寄存器,进而控制LED的亮灭。

那么来修改程序。

/*LED.c*/#define GPBCON  ((volatile unsigned int *)0x56000010)/*led控制引脚*/#define GPBDAT  ((volatile unsigned int *)0x56000014)/*led数据引脚*/#define GPGCON  ((volatile unsigned int *)0x56000060)/*key控制引脚*/#define GPGDAT  ((volatile unsigned int *)0x56000064)/*key数据引脚*/#define GPB5_clear  (3<<10)#define GPB6_clear  (3<<12)#define GPB7_clear  (3<<14)#define GPB8_clear  (3<<16)#define GPB5_in  (1<<10)#define GPB6_in  (1<<12)#define GPB7_in  (1<<14)#define GPB8_in  (1<<16)#define GPG0_OUT  (3<<0)#define GPG3_OUT  (3<<6)#define GPG5_OUT  (3<<10)#define GPG6_OUT  (3<<12)void delay(int count){while(count--);}int main(){unsigned int *Kdata ;*GPBCON &= ~(GPB5_clear|GPB6_clear|GPB7_clear|GPB8_clear);     //clear 0*GPBCON |= (GPB5_in|GPB6_in|GPB7_in|GPB8_in); /*设置GPBCON位的led1-4输出模式01*/*GPGCON &=  ~(GPG0_OUT|GPG3_OUT|GPG5_OUT|GPG6_OUT); /*设置GPGCON位的KEY1-4输入模式00*/Kdata = GPGDAT;while(1)  /*一直监测按键情况*/{if(*Kdata & (1<<0))       /*检查到松开key1*/*GPBDAT |= (1<<5) ;  /*熄灭LED1*/else*GPBDAT &= ~(1<<5) ; /*点亮LED1*/if(*Kdata & (1<<3))*GPBDAT |= (1<<6) ;else*GPBDAT &= ~(1<<6) ;if(*Kdata & (1<<5))*GPBDAT |= (1<<7) ;else*GPBDAT &= ~(1<<7) ;if(*Kdata & (1<<6))*GPBDAT |= (1<<8) ;else*GPBDAT &= ~(1<<8) ;delay(10000); //延时一下}return 0;}
/*start.s--增加关闭看门狗等操作*/.text.global _start_start:/*diaable watchdog*/ldr r0 ,=0x53000000ldr r1 ,=0str r1 ,[r0]/*往0地址处写0,如果读出来是0,则说明硬盘被修改了,是nand启动,如果不是0,则是nor启动*/ldr r0 ,= 0ldr r1 , [r0] //store the inital valuestr r0 , [r0]ldr r2 , [r0] //store the after valuecmp r0 , r2    //r0 == r2?ldr sp,=0x40000000 + 0x4096 /*nor启动*/moveq sp , #4096    /*nand启动时,0地址处是4K的片内内存,它会映射到0地址,设置为4K的顶部(栈可能是满减栈)*/streq r1 , [r0]/*设置内存:sp栈*///ldr sp,=4096  /*nand启动时,0地址处是4K的片内内存,它会映射到0地址,设置为4K的顶部(栈可能是满减栈)*/// ldr sp,=0x40000000 + 0x4096  /*nor启动*/bl mainhalt:b halt  /*加一个死循环*/

三.mini2440按键控制LED相关推荐

  1. 记录1——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯

    文章目录 前言 一.准备工作 二.点亮一盏LED灯 1.配置工程 2.代码实现 3.程序烧录注意 三.按键控制LED灯 1.配置工程 2.代码实现 按键控制 按键进阶1: 按键进阶2 3.基于自己理解 ...

  2. Arduino程序设计(二) 按键控制LED灯

    按键控制LED灯程序设计 前言 一.按键控制LED灯--内部上拉(基础) 二.按键控制LED灯--外部上拉(基础) 三.按键控制LED灯(进阶) 总结 参考文献 前言 本文主要介绍三种按键控制LED灯 ...

  3. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  4. STM32按键控制led四种方法

    文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...

  5. 03独立按键控制LED移动

    51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...

  6. Mixly按键控制LED灯

    一.实验目的及要求 button开关led. 二.实验原理与内容 实现米思齐按键控制LED(改写方法3). 三.实验软硬件环境 硬件:Arduino.LED 软件:Mixly IDE 四.核心代码 五 ...

  7. STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭

    STM32F072 Nucleo学习笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭 本文例子用到: 1.  STM32F072 Nucleo开发板 2.  STM32CubeMX软 ...

  8. 基于FPGA的两位按键控制LED数码管加减计数实验

    两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...

  9. 利用Arduino在米思齐上实现按键控制led灯

    一.实验目的及要求 button开关led,当按键的次数为奇数时灯为亮的状态,当按键的次数为偶数时灯为关闭状态. 二.实验原理与内容 实现米思齐按键控制LED 三.实验软硬件环境 硬件:Arduino ...

最新文章

  1. Error: could not find function ... in R
  2. 华为手机的“美国梦”
  3. [SOJ] connect components in undirected graph
  4. 查询能力(SIP OPTIONS)
  5. python 几种常用测试框架
  6. leetcode 1221 python
  7. 随想录(学习消费类soc芯片)
  8. [ thanos源码分析系列 ]thanos sidecar组件源码简析
  9. 模模搭古城搭建学习笔记3:建筑篇
  10. 前端基础-04-盒子模型
  11. Java后端面经(部分)
  12. s3c24xx的时钟初始化
  13. js根据年份计算年龄
  14. 关于PTA题目集1-3的总结
  15. 实现在网页上下载文件
  16. ×××便利店与自营便利店的投资、成本费用与利润的分析
  17. html分享标题描述图片尺寸,微信分享网页时自定义标题、描述和图片
  18. 电赛总结(二)——AD芯片总结之高速AD9224
  19. 超级计算机用户名,天河二号超级计算机资源申请表.doc
  20. 特斯拉的12V蓄电池有什么不同?

热门文章

  1. 最火的 Vue 前端框架,你用对了么?
  2. windows to go 和 linux to go 制作教程
  3. 【BZOJ4976】宝石镶嵌 DP
  4. 芍药甘草汤,止痛神方
  5. Win软件 - Sublime 插件安装
  6. 第二十五届中国烘焙展览会10万平米,全面升级,大不一样
  7. html5 接元宝 源码,新年儿歌
  8. 【杂谈】PHP程序员的能力水平层次
  9. VMware12安装虚拟机教程、Ubuntu16.04安装教程、常见问题解决方法
  10. python word2vec库_python word2vec的使用