GPIO编程(三)键盘控制led灯
2011-07-29 23:37
615 查看
在开发板上还有八个按键,用1234分别把1234灯点亮,5678把1234灯灭掉.
我们通过向寄存器写入数据来控制led灯的亮灭,而键盘是我们不断从中读取数据来获取状态。
在看代码之前,把GPIO编程的知识进行一次总结。
1.GPxCON寄存器,选择引脚功能
a.某位为01 output,输出引脚,GPxDAT写入0/1,引脚输出低电平或高电平
b.某位为00 input,输入引脚,引脚为地址线或用于地址控制,GPxDAT无用。我们就可以获取寄存器的状态即相应引脚的电平状态是高是低,比如键盘。
2.GPxDAT寄存器,用于读写引脚数据
3.GPxUP寄存器,是否使用内部上拉电阻
当GPIO引脚不是低电平也不是高电平的时候,状态由上拉电阻、下拉电阻确定。
当把这些理论知识都弄懂了,再写程序就简单许多了,和我下面的两遍篇led和键盘的驱动程序这些就都能很容易的明白了。
这时候再上代码就没有问题了吧!
这里并不局限在什么开发板上,无论是tiny6410,还是ok6410.还是在板子上看下效果吧,如果按到某一个键,相应的灯就亮,松开就不亮了.
我们通过向寄存器写入数据来控制led灯的亮灭,而键盘是我们不断从中读取数据来获取状态。
在看代码之前,把GPIO编程的知识进行一次总结。
1.GPxCON寄存器,选择引脚功能
a.某位为01 output,输出引脚,GPxDAT写入0/1,引脚输出低电平或高电平
b.某位为00 input,输入引脚,引脚为地址线或用于地址控制,GPxDAT无用。我们就可以获取寄存器的状态即相应引脚的电平状态是高是低,比如键盘。
2.GPxDAT寄存器,用于读写引脚数据
3.GPxUP寄存器,是否使用内部上拉电阻
当GPIO引脚不是低电平也不是高电平的时候,状态由上拉电阻、下拉电阻确定。
当把这些理论知识都弄懂了,再写程序就简单许多了,和我下面的两遍篇led和键盘的驱动程序这些就都能很容易的明白了。
这时候再上代码就没有问题了吧!
#define GPMCON (*(volatile int*)0x7f008820) #define GPMDAT (*(volatile int*)0x7f008824) #define GPMPUD (*(volatile int*)0x7f008828) #define GPNCON (*(volatile int*)0x7f008830) #define GPNDAT (*(volatile int*)0x7f008834) #define GPNPUD (*(volatile int*)ox7f008838) void init(); void delay(int); void led(int, int); void myentry() { init(); while(1) { for (int i = 0; i < 4; i++) { if ((GPNDAT>>i)&0x1U) { led(i, 1); } else { led(i, 0); } } } } void init() { GPMCON = (GPMCON && ~(0xffffU))|0x1111U; GPMPUD = GPMPUD && ~(0xffU); GPNCON = GPNCON && ~(0xfffU); GPNPUD = GPNPUD && ~(0xfffU); } void led(int num, int light) { if (light) { GPKDAT |= 1 << num; } else { GPKDAT &= ~(1 << num); } }这里并没有使用前面说的用1234分别把1234灯点亮,5678把1234灯灭掉,因为这个程序是在ok6410上写的,它只有六个button,led的寄存器与上一篇led程序也是不一样的.
这里并不局限在什么开发板上,无论是tiny6410,还是ok6410.还是在板子上看下效果吧,如果按到某一个键,相应的灯就亮,松开就不亮了.
相关文章推荐
- 键盘控制LED——S3C44B0X的IRQ编程
- (一)GPIO 编程实验 LED 流水灯控制
- VB.Net远程控制编程实例[鼠标钩子、 键盘钩子]
- 树莓派 Learning 003 — GPIO 003 中断模式 — 按键控制LED
- android 用gpio作为pwm输出控制led背光
- Nodemcu freertos 学习之路 -- GPIO口控制LED灯开关
- 继续树莓派GPIO:两片74HC595控制一个8x8LED点阵显示爱心
- 【转】Android应用程序:(jni方式)控制LED/GPIO
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- ralink wireless driver中控制开发板gpio LED灯的亮灭
- ARM嵌入式学习--OK6410裸板程序--1.GPIO控制LED
- 6410寄存器控制GPIO点亮LED
- 【蓝牙低功耗BLE】控制GPIO来点亮LED
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- windows编程 win32项目 绘制小球自由落体反弹、键盘控制小球运动
- 【开发手记三】一步一坑:UART和GPIO协同控制LED
- 51 汇编语言编程:8个按键控制8个LED