野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16441|回复: 5

矩阵按键求解答疑惑

[复制链接]
发表于 2019-8-11 23:38:39 | 显示全部楼层 |阅读模式
本帖最后由 saber 于 2019-8-13 10:47 编辑

u8 KEY_Scan()
{
   1 static u8 key1_up=1;//按键按松开标志


    //第一行
        Hang_00_L;//把第一行输出低电平
        Hang_01_H;
        Hang_02_H;
        Hang_03_H;
                if(key1_up&&Lie_00_V==0)
                {   
                   delayMs(jpys); //延时20秒,软件消抖
                        
                  2 key1_up=0;
                   if(Lie_00_V==0) //如果第一列是低电平,说明有键被按下,如果没有直接退出if语句
                   {
                          return 16;
                   }
                }else if(Lie_00_V==1)key1_up=1;

}


int main(void){
  while(1)
        {
        3  A = KEY_Scan();
                if(A != 0)
                {
                        USART_SendData(DEBUG_USARTx,A);
                        printf("\r\n%d\r\n",A);
                }
        }
}
硬件调试的时候为什么我把按键按下不松开的时候第一次经过2那里后key1_up的值就一直为0,每次进入KEY_Scan()函数不都应该执行static u8 key1_up=1;赋值为1吗
而当我按下按键松开后,再次执行KEY_Scan()函数A就会变为1.为什么松开就可以重新赋值,不松开就不行

回复

使用道具 举报

发表于 2019-8-12 22:22:24 | 显示全部楼层
KEY_Scan函数定义时没有参数,调用时写个1是什么?
回复 支持 反对

使用道具 举报

发表于 2019-8-13 07:28:34 | 显示全部楼层
因为你用的静态变量,只有初始化时赋值为1了,后面赋值为0了,也没有再赋值成1肯定一直是0了撒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-13 10:50:49 | 显示全部楼层
本帖最后由 saber 于 2019-8-13 10:52 编辑
WishWish 发表于 2019-8-12 22:22
KEY_Scan函数定义时没有参数,调用时写个1是什么?

之前可以传参数 发帖的时候这里忘删了  已经修改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-13 10:56:50 | 显示全部楼层
非谢家之宝树 发表于 2019-8-13 07:28
因为你用的静态变量,只有初始化时赋值为1了,后面赋值为0了,也没有再赋值成1肯定一直是0了撒

每次循环到A = KEY_Scan()那里,KEY_Scan()函数第一句代码为什么不会重新赋值,我硬件调试的时候按键按下他是直接跳到delayMs(jpys); //延时20秒,软件消抖,这是为什么呢,代码不应该是一步一步执行的吗
回复 支持 反对

使用道具 举报

发表于 2019-8-13 14:27:33 | 显示全部楼层
saber 发表于 2019-8-13 10:56
每次循环到A = KEY_Scan()那里,KEY_Scan()函数第一句代码为什么不会重新赋值,我硬件调试的时候按键按下 ...

在函数里面声明了 static变量就是这样的特性,只会初始化一次,可以百度看看 static变量 更多相关内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 16:57 , Processed in 0.072058 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表