本帖最后由 sungpeng 于 2011-1-6 22:05 编辑
我用的开发板做的矩阵键盘的实验,16个键显示0~F;发现一个问题,为什么去掉 DDRD=0xff 这句话之后,就可以显示呢?我觉得加上这句话之后没有问题啊。。想不明白,求助高手们。
扫描键盘程序如下:
uchar key_scan()
{
uchar key,i=0x7f,j,num;
if(key_press())
{
delay(10);
if(key_press())
{
do
{
// DDRD=0XFF;
i=(i<<1)|(i>>7);
PORTD=i;
DDRD=0x0f;
j=PIND;
key=j&0xf0;
}
while(key==0xf0);
switch(j)
{
case 0xee: num=0x0;break;
case 0xde: num=0x1;break;
case 0xbe: num=0x2;break;
case 0x7e: num=0x3;break;
case 0xed: num=0x4;break;
case 0xdd: num=0x5;break;
case 0xbd: num=0x6;break;
case 0x7d: num=0x7;break;
case 0xeb: num=0x8;break;
case 0xdb: num=0x9;break;
case 0xbb: num=0xA;break;
case 0x7b: num=0xB;break;
case 0xe7: num=0xC;break;
case 0xd7: num=0xD;break;
case 0xb7: num=0xE;break;
case 0x77: num=0xF;break;
default : num=16; break;
}
while(key_press());
}
}
return num;
} |