本人系新手。在进行矩阵键盘实验时,没有按照常规的方法(一行行扫描全部列举出来),而是用循环扫描的方法,结果出现了问题:如果按下的第一个键是第一行按键时,能正常显示;而后第一行按键就没有任何反应。
用Keil软件调试没有问题。
望解答!!
(不得不附上不完全代码)
uchar code table1[]={0x70,0xb0,0xd0,0xe0};
uint table2[]={0xfe,0xfd,0xfb,0xf7};
void main()
{
while(1)
{
for(j = 0;j<4;j++)//行扫描
{
P3 = table2[j];//将检测第j行的代码赋给P3
temp = P3;
if((temp&0xf0)!=0xf0)//有键被按下
{
t = 10;
while(t--) display(num,1);
if((P3&0xf0)!=0xf0)//确认有键被按下
{
temp = temp&0xf0;
while((P3&0xf0)!=0xf0);
for(i = 0;i<4;i++)
{
if(table1==temp)//列扫描
{
num = j*4+i+1;
}
}
}
}
display(num,1);
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
首先谢谢你的回复:)
for(j = 0;j<4;j++)//行扫描
{
P3 = table2[j];//将检测第j行的代码赋给P3
temp = P3;
//....
但是这里赋值过了啊。
问题是只有第一排的按键按下没有反应。
一周热门 更多>