我用的是PD0-PD3,PE4-PE7作为按键的输入。
PD0-PD3,按键的另外一端接地,
PE4-PE7,按键的另外一段接电源。
#include <delay.h>
int key;
/*
默认初始化状态为:PD0-PD3 输入 on output
PE4-PE7 输入 off output
DDRD &= 0xf0; //PD0-PD3 输入
PORTD &= 0x0f; //set PD0-PD4 all on output
DDRE &= 0x0f;//PE4-PE7 输入
PORTE &= 0x00;//set PE4-PE7 all off output
*/
int keysarch(void)
{
key = 0;
if(PIND&0x0f != 0x0f) //set PD0-PD3 all on output
{
delay_ms(10);
if(PIND&0x0f != 0x0f)
{
switch(PIND&0x0f)
{
case 0x0e:key = 1;break;
case 0x0d:key = 2;break;
case 0x0b:key = 3;break;
case 0x07:key = 4;break;
default: key = 0;break;
}
}
}
if(PINE&0xf0 != 0x00)
{
delay_ms(10);
if(PINE&0xf0 != 0x00)
{
switch(PINE&0xf0)
{
case 0x10:key = 5;break;
case 0x20:key = 6;break;
case 0x40:key = 7;break;
case 0x80:key = 8;break;
default: key = 0;break;
}
}
}
return key;
}
|