⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 button.c

📁 AVR DRAGON的仿真版配套源程序,包括定时器,LCD驱动,按键处理,AD转换等等.对AVR初学者甚为有用
💻 C
字号:
//***************************************************************************
//  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -