key.c
来自「用ATmega88的一款温湿度仪的原程序」· C语言 代码 · 共 42 行
C
42 行
#include <avr/io.h>
#include <util/delay.h>
unsigned char p_key;
unsigned int p_kcnt;
unsigned char Scankey(void) //键盘扫描
{ unsigned int key;
static unsigned int p_kold;
key=(PINB&0xC1)|((PIND&0x80)>>1); //读键盘口
if(key)
{
if(key!=p_kold&&(key!=(p_kold&0xFD))) { p_kold=key; p_kcnt=0; } //有新键按下
else
{ if(p_kcnt<300) p_kcnt++;
if((p_kcnt==3)||(p_kcnt>30)) //键值确认
if(!p_key||((p_key&0x02)==0&&p_kcnt>50))
{
if(p_kcnt>50) p_key=key|0x02;
else p_key=key;
return(1);
}
}
}
else p_kold=p_kcnt=0; //无键按下
return(0);
}
unsigned char Getkey(void) //程序提取键值
{ unsigned int rkey;
if(p_key&&p_kcnt==0)
{
rkey=p_key; p_key=0; // 短按键
return(rkey);
}
else if(p_key&0x02)
{
rkey=p_key; p_key=0;
return(rkey);
}
else return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?