📄 key_4x3.c
字号:
#include"key_4x3.h"
/*******************************
*不是很精确,设计允许10%以内的误差
*Ver:1.0 0736
*Ver:2.0 0804
* Ary9006
********************************/
void delay2ms(uchar m)
{
uchar n, s;
for (; m--; )
{
for (n = 16; n--;)
{
for (s=S; s--;)
{
}
}
}
}
void delay5us(uchar u)
{
u *= CLK;
while (--u);
}
/***************底层函数******************/
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 wait)
{
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])
if(!wait)
return(1);
else
{
while(Read_io() == _key[key])
{}
return(1);
}
else return(0);
}
else return(0);
}
uchar KEY_num(uchar wait)
{
uchar num;
for(num=1;num<13;num++)
{
if(KEY_value(num,wait))
{return(num);break;}
}
}
uchar KEY_wait()
{
uchar tmp;
while(!(tmp = KEY_num(0)));
return tmp;
}
/***********/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -