[求助] MSP430413按键扫描求助

leoandaries   2014-9-16 13:07 楼主
这是一个按键扫描的程序,按键接在P6.0~P6.3
LCD显示部分程序没问题,但是按键扫描显示键值无法显示,在线Debug 也进不去按键检测程序。困扰好几天了 麻烦大神指教,万分感谢。

test.zip (166.55 KB)
(下载次数: 20, 2014-9-16 13:07 上传)

回复评论 (4)


  1. #define keyin    (P6IN & 0x0f)
  2. while(1)
  3.     {
  4.       __bis_SR_register(GIE);
  5.       if(keyin != 0x0f)       //如果有键被按下
  6.       {
  7.         delay_1();            //延时消抖
  8.         if(keyin != 0x0f)   //再次检测按键状态
  9.         {
  10.           temp=keyin;
  11.           //while(keyin != 0x0f);   //等待按键被放开
  12.           switch(temp)    //转换键值
  13.           {
  14.           case 0x0e:
  15.             keyval = 1;break;
  16.           case 0x0d:
  17.             keyval = 2;break;
  18.           case 0x0b:
  19.             keyval = 3;break;
  20.           case 0x07:
  21.             keyval = 4;break;
  22.           default:
  23.             keyval = 0;break;
  24.           }
  25.           Display_LOW(keyval);
  26.         }
  27.       }
  28.     }

帮你把主要代码贴出来了,你不给电路没办法判断是什么问题。
点赞  2014-9-17 05:07
用的是IAR吗?Debug的时候可以看一下P6IN的寄存器值,应该第四位一直是1,然后你检查一下你的电路是否有上拉,按键按下电平是否变成0,都OK的话,再看一下P6DIR的设置,第一次初始化设置完之后,有没有再次操作P6DIR的值
点赞  2014-9-17 08:54
引用: qiushenghua 发表于 2014-9-17 05:07
帮你把主要代码贴出来了,你不给电路没办法判断是什么问题。

谢谢,问题已解决 哈哈~
点赞  2014-9-18 14:35
引用: MrKingMCU 发表于 2014-9-17 08:54
用的是IAR吗?Debug的时候可以看一下P6IN的寄存器值,应该第四位一直是1,然后你检查一下你的电路是否有上 ...

嗯 后来就是这样查的 原因是引脚上接了外围电路,对IO的输入有影响~谢谢啊
点赞  2014-9-18 14:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复