我用矩阵键盘的状态机写法,但是有一列根本检测不出,这是什么情况,请各位大佬指教

qq_42681825 2019-01-15 03:23:13
#include <stc15f2k60s2.h> #include <intrins.h> #define key_state_0 0 #define key_state_1 1 #define key_state_2 2 #define key P3 char keyresult(); void main() { unsigned char key_val; while(1) { P2=0XA0;P2=0X1F;P0=0X00; key_val=keyresult(); if(key_val==1){P2=0X80;P2=0X1F;P0=0X00;} } } char keyresult(void) { static char key_state=0; unsigned char key_return=0,key_press; unsigned char key1,key2; key=0Xf0; key1=key&0Xf0; key=0X0f; key2=key&0X0f; key_press=key1|key2; switch(key_state) { case key_state_0: if(key_press!=0XFF)key_state=key_state_1;break; case key_state_1: if(key_press!=0XFF) { if(key_press==0X7e)key_return=1; if(key_press==0Xdd)key_return=2; key_state=key_state_2; } else key_state=key_state_0; break; case key_state_2: if(key_press==0XFF) { key_state=key_state_0; } break; } return key_return; }
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2019-01-16
  • 打赏
  • 举报
回复
矩阵键盘应该逐线输出,然后读入判断
dceacho 2019-01-15
  • 打赏
  • 举报
回复
引用 2 楼 qq_42681825 的回复:
[quote=引用 1 楼 dceacho的回复:]

char keyresult(void)
{
static char key_state=0;

unsigned char key_return=0,key_press;

unsigned char key1,key2;
key=0Xf0;
key1=key&0Xf0;
key=0X0f;
key2=key&0X0f;
key_press=key1|key2;
switch(key_state) //这个switch(key_state)有意义?
有哇,判断状态消抖啊[/quote] 我还以为局部static会每次初始化 P37,P30 P35,P31 这两个按键有个没反应?
qq_42681825 2019-01-15
  • 打赏
  • 举报
回复
引用 1 楼 dceacho的回复:

char keyresult(void)
{
static char key_state=0;

unsigned char key_return=0,key_press;

unsigned char key1,key2;
key=0Xf0;
key1=key&0Xf0;
key=0X0f;
key2=key&0X0f;
key_press=key1|key2;
switch(key_state) //这个switch(key_state)有意义?
有哇,判断状态消抖啊
dceacho 2019-01-15
  • 打赏
  • 举报
回复

char keyresult(void)
{
static char key_state=0;

unsigned char key_return=0,key_press;

unsigned char key1,key2;
key=0Xf0;
key1=key&0Xf0;
key=0X0f;
key2=key&0X0f;
key_press=key1|key2;
switch(key_state) //这个switch(key_state)有意义?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧