用avr单片机设计了一个4*4矩阵键盘,但是实验发现只能识别8个按键第一行和第二行不能识别,不知道是什么问题请高手指教按键程序如下: uchar x=1; uchar get_key(void) { uchar key=0; DDRA=0xff; PORTA=0xF0; DDRA=0x0F; if(PINA==0xf0) {x=0;} else { delay(12); if((PINA!=0xf0)&&(x==0)) { nop();nop();nop();nop(); delay(10); if(~PINA&0x80) key=0;//第一横高端 else if(~PINA&0x40) key=4;//第二横 else if(~PINA&0x20) key=8;//第三横 else if(~PINA&0x10) key=12;//第四横 DDRA=0xff; PORTA=0x0f; DDRA=0xf0; delay(15); if(~PINA&0x08) key+=0;//第一竖 else if(~PINA&0x04) key+=1;//第二竖 else if(~PINA&0x02) key+=2;//第三竖 else if(~PINA&0x01) key+=3;//第四竖低端 x=1; } } return(key); } //在主函数中根据不同键值实现不同功能 设计电路如下: |