好久没更新了,今天开始继续,争取日更。
今天我们来讲按键。开发板的右下角有4个按键,按下会有明显的“咔嗒”声。如何检测按键是否被按下呢?首先要把按键或直接或间接地连接到单片机上。与之前使用的4个LED不同,4个按键没有全部连接到单片机上――左边2个是连接的,右边2个通过按键上方标有B2、B3的接口引出(从左到右分别为B0、B1、B2和B3)。如果要使用B2、B3,要用杜邦线连接到16个单片机引出针脚上。
<ee1/button.h>这里是库函数手册。值得一提的是1.1版本的库中,换用枚举类型表示按键等设备,不再使用整数与宏定义(但用整数也是兼容的)。在Atmel Studio 7.0中写代码时,编辑器会提示函数接口,可以根据参数类型知道应该写什么。
对于单片机而言,按键是一种输入设备。程序都有零个或若干个输入,一个或多个输出,而我们学过的唯一一种输出设备就是LED。所以理所当然地,今天我们要用按键来控制LED:按键按下,LED亮起;按键抬起,LED关闭;4个按键分别对应4个LED。
我们先来实现一个简单的版本――只考虑一个按键和一个LED。
button_downbutton_down
1 #include <ee1/led.h> 2 #include <ee1/button.h> 3 4 int main(void) 5 { 6 led_init(); 7 button_init(PIN_NULL, PIN_NULL); 8 while (1) 9 led_set(LED_RED, button_down(BUTTON_0)); 10 }
led_setled_set
LED_REDBUTTON_0fori
1 #include <ee1/led.h> 2 #include <ee1/button.h> 3 4 int main(void) 5 { 6 led_init(); 7 button_init(PIN_0, PIN_1); 8 while (1) 9 { 10 for (int i = 0; i != BUTTON_COUNT; ++i) 11 led_set(i, button_down(i)); 12 } 13 }
注意将B2、B3分别连接到端口0和1上。你当然可以改变连接的端口,但也要相应地修改初始化参数。
iBUTTON_COUNT - 1LED_COUNTled_set
现在你已经学会如何读取按键状态了。但有时候我们关心的是按键被按下这一动作,而动作是不能仅由一个状态表示的,下一篇教程将介绍实现方案。
来源:博客园
作者:jerry_fuyi
链接:https://www.cnblogs.com/jerry-fuyi/p/11538260.html