key.h

来自「俄罗斯方块的MSP430F449系列的LCD以及点阵按键的代码.」· C头文件 代码 · 共 64 行

H
64
字号

#define     key_press       0x2

static  unsigned char flag;                       //flag register
static  unsigned char key_buff;                   //key vaule buffer
const   unsigned char key_table[12]={
0x0b,       //*(key_vaule)          00(key_num)
0x09,       //9                     01
0x08,       //8                     02
0x07,       //7                     03
0x00,       //0                     04
0x06,       //6                     05            //key vaule table
0x05,       //5                     06
0x04,       //4                     07
0x0a,       //#                     08
0x03,       //3                     09
0x02,       //2                     0a
0x01,       //1                     0b
};
void scan_key_deal(void)
{
unsigned char counter;
unsigned char buffer;
unsigned char com_byte;
unsigned char key_num;
P1DIR=0x0f;
com_byte=0xff;
P1OUT&=~0x08;
P1OUT&=~0x04;
P1OUT&=~0x02;
buffer=P1IN;
if(0xf0!=(buffer&0xf0))                    //judge if the key was press
    {
    P1OUT|=0x08;
    P1OUT|=0x04;
    P1OUT|=0x02;
    com_byte=0xff;
    key_num=0x00;
    com_byte=0x02;
    for(counter=0x03;counter>0;counter--)  //get the key num
        {
        P1OUT&=~com_byte;                  //scan the row
        if(!(P1IN&BIT4))
        break;
        key_num++;
        if(!(P1IN&BIT5))
        break;
        key_num++;
        if(!(P1IN&BIT6))
        break;
        key_num++;
        if(!(P1IN&BIT7))
        break;
        key_num++;
        com_byte=com_byte<<1;
        }
     flag|=key_press;
     buffer=P1IN;
     buffer=P1IN;
     key_buff=key_table[key_num];         //get the key value
     return;
     }
//     flag&=~key_press;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?