2geioshibie.c
来自「2个IO口识别6个按键」· C语言 代码 · 共 90 行
C
90 行
#include <reg52.h>
#define uchar unsigned char
sbit IO1=P1^6;
sbit IO2=P1^7;
uchar keybuf,keydat;
bit bkeyok;
void delay_us(unsigned int n)
{
while(--n);
}
void delay_ms(unsigned int n)
{
do
{
delay_us(1000);
}
while(--n);
}
bit scan_key(void)
{
uchar tempkey;
IO1=1;
IO2=1;
if(!IO1)
{
if(!IO2)
tempkey=3;
else
tempkey=2;
}
else
{
if(!IO2)
tempkey=1;
else
{
IO1=0;
if(!IO2)
{
IO1=1;
IO2=0;
if(!IO1)
tempkey=4;
else
tempkey=6;
}
else
{
IO1=1;
IO2=0;
if(!IO1)
tempkey=5;
else
tempkey=0;
}
}
}
IO1=1;
IO2=1;
if((keybuf!=0)&&(keybuf==tempkey))
{
bkeyok=1;
keydat=tempkey;
}
keybuf=tempkey;
teturn(bkeyok);
}
uchar read_key(void)
{
bkeyok=0;
return(keydat);
}
void doanthing(uchar key)
{
//按键处理只有按键并正确消抖时才会进入,功能自己随便写
}
void main(void)
{
while(1)
{
if(scan_key())
doanthing(read_key());
delay_ms(10);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?