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

📄 buttons.c

📁 里面给出了ATmega103单片机编程的C语言实例程序
💻 C
字号:
/* ATmega103 buttons.c file 

   Author : Robert Stuart 
   Company : PDL Industries Ltd 
   Date of Creation : 22 July 1999
   Tested : 12 August 1999
 
   Function : 
*/

/* include */
#include "button.h"

/* function is called from "runtime.c" every interrupt */
void ReadButtons( void )
{
  BufferButton();

  DetermineButtonState();
}

void BufferButton( void )
{
  switch ( BUTTON ) 		/* determine which button has been hit */
  {
    case SET_BUTTON : PushedButton = SET_MAP; break;
    case UP_BUTTON : PushedButton = UP_MAP; break;
    case DOWN_BUTTON : PushedButton = DOWN_MAP; break;
    default : PushedButton = NONE_MAP;
  }

  if ( PushedButton == NONE_MAP )
  {
    Buffer = 0; 			/* resets the delay counter and button in reset mode */
    Button = BUTTON_NONE;
    ButtonStatus = 0;
    SETBIT( ButtonStatus, BUTTON_RESET );
  }
  else
    DebounceButton(); 		/* check which button was hit */
}

void DebounceButton( void )
{
  if ( LastButton == PushedButton )	/* same button hit as last interrupt */
    Buffer++; 			/* increment delay counter */
  else
    Buffer = 0; 			/* different button has been hit */
  	
  LastButton = PushedButton; 		/* set "last_button" for next interrupt */
}

void DetermineButtonState( void )
{
  if ( Buffer > _50MS ) 		/* button debouce timeout */
  {
    Button = LastButton; 		/* set button state to which button has been hit */
    
    Buffer = MINIMUM( Buffer, UNSIGNED_INT_LIMIT ); 
    				/* prevent "button_buffer" from overflowing */
	  
    if ( CHECKBIT( ButtonStatus, BUTTON_RESET ) ) 
    {				/* button has just been hit */
      SETBIT( ButtonStatus, BUTTON_SINGLE );
      CLEARBIT( ButtonStatus, BUTTON_RESET );
    }
    else
    {
      CLEARBIT( ButtonStatus, BUTTON_SINGLE );
	  
      if ( Buffer > _1SEC ) 		/* delay for 1s before hold is true */
        SETBIT( ButtonStatus, BUTTON_HOLD ); 
    }
  }
  else 				/* button is in debouce mode */
    CLEARBIT( ButtonStatus, BUTTON_HOLD | BUTTON_SINGLE );
}



⌨️ 快捷键说明

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