发一个51单片机的键盘扫描程序,算法简单有效
/****************************************
键盘_不采用定时器_不延时
特点:
按键在松手后有效,灵敏度高,消耗资源少,运行效率高
独立键盘为:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7;
矩阵键盘为:行(上到下)_P2.3_P2.2_P2.1_P2.0
列(左到右)_P2.7_P2.6_P2.5_P2.4
提供的操作函数:
//独立键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key
extern unsigned char keyboard_self();
//矩阵键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key****检测高四位
extern unsigned char keyboard_matrix();
****************************************/
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
num_check++;
if(num_check==10)//连续10次(10ms)低电平有效,则认为按键有效
{
key_flag=1;//使能按键有效标识
temp_code=temp;//保存按键值
}
}
无延时无定时器的话这里怎么会是10ms?
外部每1ms调用一次?那也就是定时延时了
{
num_check++;
if(num_check==10)//连续10次(10ms)低电平有效,则认为按键有效
{
key_flag=1;//使能按键有效标识
temp_code=temp;//保存按键值
}
}
1、延时的楼上提出了
2、要想更可靠,不是判断10次有没有低电平,而是这十次是不是都是一样的值
不管用定时器延时还是直接延时,都只是换汤不换药,换来一种写法而已
一周热门 更多>