button.c

来自「AVR DRAGON的仿真版配套源程序,包括定时器,LCD驱动,按键处理,AD转」· C语言 代码 · 共 81 行

C
81
字号
//***************************************************************************
//  File........: button.c
//  Author(s)...: ATMEL Norway
//  Target(s)...: ATmega169
//  Compiler....: AVR GCC 20060421
//  Description.: AVR Butterfly button handling routines - Stripdown Version
//  Revisions...: 1.1
//  YYYYMMDD - VER. - COMMENT                                       - SIGN.
//  20030401 - 1.0  - Created                                       - AR
//	20060829 - 1.1  - Ported to AVR GCC                             - TMF, OL
//***************************************************************************

#include <avr/io.h>
#include "main.h"
#include "button.h"

/*****************************************************************************
*   Function name : Button_Init
*   Returns :       None
*   Parameters :    None
*   Purpose :       Initializes the five button pin
*****************************************************************************/
void Button_Init(void)
{
    // Init port pins
    cbi(DDRB,7);
    cbi(DDRB,6);
    cbi(DDRB,4);
    PORTB |= PINB_MASK;
    DDRE = 0x00;
    PORTE |= PINE_MASK;
}



/*****************************************************************************
*   Function name : getkey
*   Returns :       char indicating which button is pressed
*   Parameters :    None
*   Purpose :       Check status on the joystick
*****************************************************************************/
char getkey(void)
{
    char buttons;
    char key;

/*
    Read the buttons:

    Bit             7   6   5   4   3   2   1   0
    ---------------------------------------------
    PORTB           B   A       O
    PORTE                           D   C
    ---------------------------------------------
    PORTB | PORTE   B   A       O   D   C
    =============================================
*/


    buttons = (~PINB) & PINB_MASK;
    buttons |= (~PINE) & PINE_MASK;

    // Ouput virtual keys
    if (buttons & (1<<BUTTON_A))
        key = BUTTON_A;
    else if (buttons & (1<<BUTTON_B))
        key = BUTTON_B;
    else if (buttons & (1<<BUTTON_C))
        key = BUTTON_C;
    else if (buttons & (1<<BUTTON_D))
        key = BUTTON_D;
    else if (buttons & (1<<BUTTON_O))
        key = BUTTON_O;
    else
        key = FALSE;

    return key;


}

⌨️ 快捷键说明

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