반응형

#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
Posted by 메가아재
,