launchpad 矩阵键盘

2019-03-24 12:17发布

各位,调了半天了,怎么貌似都不得行啊,麻烦各位大神帮我看一看~,谢谢!
#include "msp430g2553.h"

unsigned char H[]={0xe0,0xd0,0xb0,0x70};  //行
unsigned char L[] ={BIT0,BIT1,BIT2,BIT3};  //列
unsigned int keyvalue;
unsigned int keyscan(void);

int main( void )
{

          WDTCTL = WDTPW + WDTHOLD;         // Stop watchdog timer to prevent time out reset
          P1SEL=0X00;
          P1DIR =0Xf0;
          P2DIR |= BIT0;                                // 设置输出
        //  P2OUT &=~BIT0;
      for(;;)
        {
                        keyscan();
                        if(keyvalue<16)
                        {
                         P2OUT &=~BIT0;
                         _delay_cycles(500);
                    }
        }
}

unsigned int keyscan(void)
{
    unsigned int i=0,lie=0,j=0,hang=0;

    P1REN=0X0F;    //上拉使能
//    P1IN=0X0f;
    P1OUT=0xf0;
    if((P1IN & 0X0F)!=0X0F)
    {
            _delay_cycles(100);
        if((P1IN & 0X0F)!=0X0F)
        {

           _delay_cycles(100);
           for(i=0;i<4;i++)     //行检测
          {
                 P1OUT = H;
             for(j=0;j<4;j++)//列检测
             {
                  if((P1IN & L[j])!=L[j])
                  {
//                       P1OUT=0X00;
                    hang=i;
                    lie=j;
                    keyvalue=lie+hang*4;
                  }
              }
           }
       }
    }
    return keyvalue;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
haiduoduo
2019-03-25 04:02
原帖由 carlnerv 于 2012-8-3 07:03 发表
感觉有点乱啊,/*xxx*/是我补的注释。论坛显示代码补全,你可以复制到别的地方看#include "msp430g2553.h" /*这里引号行吗?引号引用工程内文件,尖括号引用编译器的文件*/


unsigned char H[]={0xe0,0xd0,0xb0, ...
万分感谢!

一周热门 更多>

相关问题

    相关文章