#define KEY_DEBOUNCE_TIME 30
void Key_Control(void) // 1ms
{
unsigned char Key_Input;
static unsigned char Key_Input_Old;
static unsigned int Key_Count, Key_Count_2;
static unsigned char Key_Flag;
Key_Input = PINC & 0x03;
// if(Key_Input == 0x03) return;
if(Key_Input == Key_Input_Old && Key_Input != 0x03)
{
Key_Count_2 = 0;
if(++Key_Count >= KEY_DEBOUNCE_TIME && Key_Flag == 0)
{
Key_Flag = 1;
Key_Count = KEY_DEBOUNCE_TIME + 1;
switch(Key_Input)
{
case 0x01 :
if(++Disp_Mode >= MODE_MAX)
{
Disp_Mode = 0;
}
break;
case 0x02 :
if(On_Off) // ON -> OFF
{
}
else // OFF -> ON
{
}
break;
}
}
}
else
{
if(Key_Count)
{
if(Key_Flag)
{
if(++Key_Count_2 >= 5)
{
Key_Flag = 0;
Key_Count_2 = 5 + 1;
Key_Count = 0;
}
}
}
Key_Input_Old = Key_Input;
}
}
'개발모듈 > 펌웨어 모듈' 카테고리의 다른 글
- [IAR] ATmega8 - 타이머카운터 (CTC모드) (0) | 2017.02.20 |
---|---|
- Key Control 2 (0) | 2016.12.01 |
- 타이머 딜레이 (0) | 2016.06.03 |
- WS2812B(RGB-LED) PIC (0) | 2016.05.24 |
- printf 함수 (0) | 2016.05.19 |