按键盘没反应
u8 keyboard_scan(void)
{
u8 key, temp1, temp2;
u16 i,j;
u8 a[4][4]={'1','2','3','+',
'4','5','6','-',
'7','8','9','*',
'%','0','.','/'} ;
Keyboard=0xff;//行为1,列为1
if(Keyboard!=0xff)
{
delay_10us(100);
if(Keyboard!=0xff)
{
key=Keyboard;
temp1=key>>4;
temp2=key-(temp1<<4);
switch(temp1) //行扫描
{
case 0x07 : i=0; break;
case 0x0B : i=1; break;
case 0x0D : i=2; break;
case 0x0E : i=3; break;
}
switch(temp2) //列扫描
{
case 0x07 : j=0; break;
case 0x0B : j=1; break;
case 0x0D : j=2; break;
case 0x0E : j=3; break;
}
return a[i][j];
}
}
}
无报错,但无反应
按下矩阵键盘就会返回相应的字符
没电路图,代码也不全。只是猜测。
代码中没有键盘扫描的过程的代码。应该有个循环,行循环输出7,b,d,e判断列是否与行相同。