This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

矩阵键盘



大神,帮忙看看程序是哪儿的原因??

12.rar
  • 你先说说现在什么问题,好不好,那么长的代码,我要一点点的看,多费劲。记得下次提问,先说明原因,如果是程序,说明你的目的,现在的状况。OK?谢谢配合。

    另外告诉你,键盘最好使用中断程序,这样,键盘不操作的时候,MCU就不执行这段程序,加快了整体程序的实效性。

    建议你,理解矩阵键盘的原理后,重写该程序,记得,别弄那么多返回,一个函数里,就一个返回就行了。

  • 给你看看我以前写的一个51下的,你参考一下方法。

    /***************¼üÅÌɨÃè³ÌÐò*************************/
    unsigned char key()
    {

    KeyPort=0xf0;
    if((KeyPort&0xf0)!=0xf0)
    delaynms(5);
    if((KeyPort&0xf0)!=0xf0)
    {

    KeyPort=0xfe;
    switch(KeyPort)
    {
    case 0xee:KeyVal=0;break;
    case 0xde:KeyVal=1;break;
    case 0xbe:KeyVal=2;break;
    case 0x7e:KeyVal=3;break;
    }
    KeyPort=0xfd;
    switch(KeyPort)
    {
    case 0xed:KeyVal=4;break;
    case 0xdd:KeyVal=5;break;
    case 0xbd:KeyVal=6;break;
    case 0x7d:KeyVal=7;break;
    }
    KeyPort=0xfb;
    switch(KeyPort)
    {
    case 0xeb:KeyVal=8;break;
    case 0xdb:KeyVal=9;break;
    case 0xbb:KeyVal=10;break;
    case 0x7b:KeyVal=11;break;
    }
    KeyPort=0xf7;
    switch(KeyPort)
    {
    case 0xe7:KeyVal=12;break;
    case 0xd7:KeyVal=13;break;
    case 0xb7:KeyVal=14;break;
    case 0x77:KeyVal=15;break;
    }

    }
    return KeyVal;
    }