?? keypad._c
字號:
#include <iom128v.h>
/*鍵盤掃描函數,沒有鍵按下返回0x7f*/
/*如果shift按下,返回值最高位為1*/
extern void delay_ms(unsigned int time);
unsigned char scan_key(void)
{
unsigned char i,temp;
unsigned shift=0;
DDRB=0x0f;
PORTB=0xff;
for (i=0;i<4;i++)
{
PORTB=~(1<<i); //鍵盤線掃描
delay_1ms(); //等待低電平穩定
temp=PINB&0xf0;//讀取鍵盤掃描信號,屏蔽低四位
if ((PIND&0x20)==0) temp|=01;//檢查shift鍵
if (temp!=0xf0)//如果有鍵按下,延時10ms消抖
{ //本程序用display代替10ms延時,
delay_ms(5); //可消除顯示抖動
temp=PINB&0xf0;//再讀鍵盤
if ((PIND&0x20)==0) //檢查shift鍵
{
temp|=01;
shift=1;
}
if (temp!=0xf0)
{
temp&=0xf0;
switch (temp) //計算鍵值
{
case 0x70:temp=15-(3-i)*4;break;
case 0xb0:temp=14-(3-i)*4;break;
case 0xd0:temp=13-(3-i)*4;break;
case 0xe0:temp=12-(3-i)*4;break;
default:temp=0x7f;
}
if (shift==1) temp|=0x80;
return temp;
}
}
PORTB=0xff;
}
return 0x7f;
}
unsigned char keypad(void)
{
unsigned char temp1,temp2;
temp1=scan_key();
if (temp1==0x7f) return 0x7f;
do
temp2=scan_key();
while (temp1==temp2);
return temp1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -