📄 button.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 + -