key_4x3.c

来自「51单片机的二极管键盘,4IO口12键,驱动函数 按键检测 按键扫描 等待」· C语言 代码 · 共 56 行

C
56
字号
#include "key_4x3.h"

/***************底层函数******************/
uchar Read_io()             //ok
{
    uchar tmp;
    tmp = Px;                   //读入数据
    tmp = (tmp >> MOVE) & 0x0f; //处理数据
    return(tmp);
}

void Write_io(uchar value)      //ok
{
    uchar tmp = 0x0f;
    Px = Px & ~(tmp << MOVE);   //键盘口清0
    Px = Px | (value << MOVE);  //装入数值
}

/****************主函数*******************/
uchar KEY_value(uchar key)
{
	uchar code _value[]={14,13,11,7}, _key[]={12,10,6,12,9,5,10,9,3,6,5,3};
	--key;
	Write_io(_value[key/3]);
	if(Read_io() == _key[key])
	{
		delay2ms(14);
		if(Read_io() == _key[key]) 	
        { 
            while(Read_io() == _key[key])
			{}
			return(1);
        } 
		else return(0);
	}
	else return(0);
}

uchar KEY_num(void)
{
	uchar num;
	for(num=1;num<13;num++)
	{
	if(KEY_value(num))
        {return(num);break;}
	}
}

uchar KEY_wait()
{
    uchar tmp;
    while(!(tmp = KEY_num()));
    return tmp;
}
/***********/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?