https://github.com/slimenull/stc89c52rc_keyclick
在STC89C52RC(普中51实验板)中检查按钮是否按下的简单库
https://github.com/slimenull/stc89c52rc_keyclick
Last synced: 6 days ago
JSON representation
在STC89C52RC(普中51实验板)中检查按钮是否按下的简单库
- Host: GitHub
- URL: https://github.com/slimenull/stc89c52rc_keyclick
- Owner: SlimeNull
- Created: 2022-06-18T13:09:08.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-21T01:30:20.000Z (about 4 years ago)
- Last Synced: 2025-10-25T00:40:14.364Z (8 months ago)
- Language: C
- Homepage:
- Size: 5.86 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# KeyClick
独立按键点击检测封装. 通过简单的方式来控制按键单击的处理逻辑.
## 使用:
1. 将仓库中 btnclick.h 和 btnclick.c 文件添加到你的项目中
2. 引用头文件
```cpp
#include "btnclick.h"
```
3. 在程序中添加主循环逻辑:
```cpp
void main()
{
// 其他代码
while (1) // 程序主循环
{
// 其他代码
btnclick_loop(); // 按钮检查
}
}
```
4. 定义按键按下处理函数:
```cpp
void key1click()
{
P2 = ~P2; // 切换 LED 灯显示状态
}
```
5. 订阅按键按下事件
```cpp
void main()
{
on_k1_click(key1click); // 订阅按键按下事件
while (1)
{
btnclick_loop(); // 主循环
}
}
```
## 函数
在 loops.c 文件中, 定义了以下函数:
```cpp
void button_loop(); // 按钮主循环
void on_k1_click(void (*handler)()); // 订阅按钮1按下事件
void on_k2_click(void (*handler)()); // 订阅按钮2按下事件
void on_k3_click(void (*handler)()); // 订阅按钮3按下事件
void on_k4_click(void (*handler)()); // 订阅按钮4按下事件
void on_anyk_click(void (*handler)(int)); // 订阅任意按钮按下事件, 参数为按钮索引
```
## 代码示例
```cpp
#include
#include "btnclick.h"
void switch_led(int index) {
P2 ^= ((1 << (index * 2)) + (1 << (index * 2 + 1)));
}
void main()
{
on_anyk_click(switch_led);
while(1)
{
btnclick_loop();
}
}
```