三.mini2440按键控制LED
在上一篇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——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯
文章目录 前言 一.准备工作 二.点亮一盏LED灯 1.配置工程 2.代码实现 3.程序烧录注意 三.按键控制LED灯 1.配置工程 2.代码实现 按键控制 按键进阶1: 按键进阶2 3.基于自己理解 ...
- Arduino程序设计(二) 按键控制LED灯
按键控制LED灯程序设计 前言 一.按键控制LED灯--内部上拉(基础) 二.按键控制LED灯--外部上拉(基础) 三.按键控制LED灯(进阶) 总结 参考文献 前言 本文主要介绍三种按键控制LED灯 ...
- led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验
1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...
- STM32按键控制led四种方法
文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...
- 03独立按键控制LED移动
51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...
- Mixly按键控制LED灯
一.实验目的及要求 button开关led. 二.实验原理与内容 实现米思齐按键控制LED(改写方法3). 三.实验软硬件环境 硬件:Arduino.LED 软件:Mixly IDE 四.核心代码 五 ...
- STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭
STM32F072 Nucleo学习笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭 本文例子用到: 1. STM32F072 Nucleo开发板 2. STM32CubeMX软 ...
- 基于FPGA的两位按键控制LED数码管加减计数实验
两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...
- 利用Arduino在米思齐上实现按键控制led灯
一.实验目的及要求 button开关led,当按键的次数为奇数时灯为亮的状态,当按键的次数为偶数时灯为关闭状态. 二.实验原理与内容 实现米思齐按键控制LED 三.实验软硬件环境 硬件:Arduino ...
最新文章
- Error: could not find function ... in R
- 华为手机的“美国梦”
- [SOJ] connect components in undirected graph
- 查询能力(SIP OPTIONS)
- python 几种常用测试框架
- leetcode 1221 python
- 随想录(学习消费类soc芯片)
- [ thanos源码分析系列 ]thanos sidecar组件源码简析
- 模模搭古城搭建学习笔记3:建筑篇
- 前端基础-04-盒子模型
- Java后端面经(部分)
- s3c24xx的时钟初始化
- js根据年份计算年龄
- 关于PTA题目集1-3的总结
- 实现在网页上下载文件
- ×××便利店与自营便利店的投资、成本费用与利润的分析
- html分享标题描述图片尺寸,微信分享网页时自定义标题、描述和图片
- 电赛总结(二)——AD芯片总结之高速AD9224
- 超级计算机用户名,天河二号超级计算机资源申请表.doc
- 特斯拉的12V蓄电池有什么不同?