最近买了本郭天祥的书,看到行列式键盘的代码一大堆switch语句看的我是蛋疼不已,于是去网上看看有妹妹更好一点的方法。
不经意看到周兴华的书,上面的方法我觉得蛮好的
首先是定义了一个数组key[] = {0xfe,0xfd,0xfb,0xf7};
然后用了一个for循环扫描
for(i=0,i<4,i++)
{
P1 = act[i];//第i行为0
delay(10);//延迟消抖动的
in = P1;
in = in>>4;
in = in |0xfo;//这3行就是把P1口读到的数据右移4位并且前4位给0,这样把列的判断变成行一样了
for(j = 0;j<4;j++)
{
if(act[j] = in)//这个呢,就是有键按下了,j可以判断出列的数 ,i可以判断出行的数
{
find =1;
lie = j;
hang = i;
keynum = (lie*4 + hang)//键值就等于列乘以4加上行
}
}
}
这样用一个数组既可以判定行数又可以判定列数,方便很多了,个人觉得比老郭的代码要有技术含量一点,不知道各位还有什么别的方法可以告知在下 |