按键 led灯实验
来源:互联网 发布:手机数据作图软件 编辑:程序博客网 时间:2024/04/28 03:33
汇编代码部分:
AREA Init,CODE,READONLY
ENTRY
IMPORT Main
ldr r13,=0x1000
b Main
END
c语言部分:
#include <stdio.h>
#define GPBCON(*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)
#define GPFCON(*(volatile unsigned *)0x56000050)
#define GPFDAT (*(volatile unsigned *)0x56000054)
#define GPFUP (*(volatile unsigned *)0x56000058)
int key1(void)
{
if ((GPFDAT &= 1)==0)
return 1;
else
return 0;
}
int key2(void)
{
if ((GPFDAT &= 4)==0)
return 1;
else
return 0;
}
int key3(void)
{
if ((GPFDAT &= 8)==0)
return 1;
else
return 0;
}
int key4(void)
{
if ((GPFDAT &= 16)==0)
return 1;
else
return 0;
}
void led1_on(void)
{
GPBDAT &=~(1<<5);
}
void led2_on(void)
{
GPBDAT &=~(1<<6);
}
void led3_on(void)
{
GPBDAT &=~(1<<8);
}
void led4_on(void)
{
GPBDAT &=~(1<<10);
}
void led1_off(void)
{
GPBDAT |=(1<<5);
}
void led2_off(void)
{
GPBDAT |=(1<<6);
}
void led3_off(void)
{
GPBDAT |=(1<<8);
}
void led4_off(void)
{
GPBDAT |=(1<<10);
}
void delay(int time)
{
int i,j;
for (i=0;i<time;i++)
{
for(j=0;j<0xfff;j++);
}
}
int Main(void)
{
GPFUP &=~((1<<0)|(1<<2)|(1<<3)|(1<<4));
GPFCON &=~((3<<0)|(3<<4)|(3<<6)|(3<<8));
GPBCON &=~((3<<5)|(3<<6)|(3<<8)|(3<<10));
GPBCON |=(1<<10)|(1<<12)|(1<<16)|(1<<20);
while(1)
{
if(key1())
led1_on();
else
led1_off();
if(key2())
led2_on();
else
led2_off();
if(key3())
led3_on();
else
led3_off();
if(key4())
led4_on();
else
led4_off();
}
return 0;
}
在实验过程中的错误是:led3 led4一直保持亮的状态,不论按键是不是按下,均保持亮的状态
debug:首先想到的是按键不起作用了,通过查看对应的内存发现确实按键按下后,对应的地址的数值为发生任何变化。
不起作用的原因是:其对应的I/O口的CON寄存器是否设置为输入入状态.结果发现GPFCON &=~((3<<0)|(3<<2)|(3<<3)|(3<<4))了 应该改成GPFCON &=~((3<<0)|(3<<4)|(3<<6)|(3<<8))。最后实验调试成功!!!
- 按键 led灯实验
- 按键中断,点亮LED实验
- mini2440 按键中断LED 实验
- [nRF52832] 外设篇 | 实验一 LED 灯 及 BUTTON 按键
- 嵌入式按键LED灯
- LED驱动及按键中断(未实验)
- 第二个实验 按键 点亮led
- 嵌入式S3C2440开发板LED灯和按键(去抖)驱动实验
- 2013-11-17 实验之裸板按键控制Led灯
- 5.0 按键控制LED灯
- ok6410 按键中断点LED灯
- 独立按键控制led灯
- 中断-按键控制LED灯
- LED灯控制实验
- led灯实验总结
- 按键+Led
- 按键-LED
- 基于实验开发板的按键处理与LED显示
- 存储过程示例
- WindowsXp文件读写模块
- hdu1162
- 根据要求填充,ACM波形.wav格式的文件头
- 基于 mini2440 电阻式触摸屏(一):电阻式触摸屏工作原理
- 按键 led灯实验
- WindowsXP录音模块
- Asp.Net+Jquery Ajax异步分页
- 利用yum下载而不安装
- 小型多任务操作系统miniOS的实现
- AjaxPager.js
- Eclipse导入Android项目的正确方法
- CityInfo.cs
- kettle plugin 插件开发