27,375
社区成员
发帖
与我相关
我的任务
分享
/*请问这个程序有什么问题没??怎么我调用了这个函数按了键没反应呢。*/
void keyScan5()
{
UCHAR i, j;
while(1)
{
P2=0x0F;
if((P2&0x0F)!=0x0F)
{
switch(P2)
{
case 0x07: i=3; break;
case 0x0b: i=2; break;
case 0x0d: i=1; break;
case 0x0e: i=0; break;
default: break;
}
}
delay(10);//软件去抖动
P2=0xF0;//反转行和列上的电平
if((P2&0xF0)!=0xF0)
{
switch(P2)
{
case 0x70: j=3; break;
case 0xb0: j=2; break;
case 0xd0: j=1; break;
case 0xe0: j=0; break;
default: break;
}
//P1=num[j][i];//P1输出对应的按键值
*下面的语句我是为了测试下按键扫描的程序是否有问题
本来按下第一行第二个键灯就应该会亮的。但是我按了不亮
*/
if(i == 0 && j == 1)
{
P1 = 0x00;
while(1);
}
}
}
}
void main()
{
while(1)
{
keyScan5();
}
}
void keyScan5()
{
UCHAR i, j;
while(1)
{
P2=0x0F;
if((P2&0x0F)!=0x0F)
{
switch(P2 & 0x0f)
{
case 0x07: i=3; break;
case 0x0b: i=2; break;
case 0x0d: i=1; break;
case 0x0e: i=0; break;
default: break;
}
}
delay(10);//软件去抖动
P2=0xF0;//反转行和列上的电平
if((P2&0xF0)!=0xF0)
{
switch(P2 & 0xf0)
{
case 0x70: j=3; break;
case 0xb0: j=2; break;
case 0xd0: j=1; break;
case 0xe0: j=0; break;
default: break;
}
//P1=num[j][i];//P1输出对应的按键值
if(i == 0 && j == 1 )
P1 = 0x00;while(1);
}
//while(P2 & 0xf0 != 0xf0);
}
}