微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 改进的矩阵键盘扫描程序

改进的矩阵键盘扫描程序

时间:10-02 整理:3721RD 点击:
#include <reg51.h>
#include <math.h>
#define uchar unsigned char
void T_delay()
{
        uchar c;
        for(c=0;c<55;c++)
                ;
}
uchar log2(int d)
{
        uchar t;
        t=(int)(log10(d)/log10(2));
        return t;
}
void main()
{
        
        uchar g,h,key,value;
{        for(g=0;g<4;g++)
        {
                h=pow(2,g);
                P1=h;
                T_delay();
                key=P1;
                key>>=4;
                if(key)
                        value=log2(key)+g*4;                        
        }        
}
}
矩阵键盘接在P1口,value为按下的按键
不知道执行效率怎么样,看起来简洁了许多

执行一次,少个主循环

忽略了,嘿嘿,主要看下面键盘扫描吧

代码少并不意味运行时间少。你这里面调用了数学运算函数,这在8位单片机上可是很要命的。
而且还有延时函数,直正的工程中是不行的哦。
给你个思路,按键这个东西其实就是定时去采样IO的电平而已。重点是定时采样。

谢谢

那就是放到定时器的中断函数里把。
  h=pow(2,g);其实可以用h=1>>g;代替,

先看看,谢谢分享!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top