key_input(void)함수 관련 내용 문의 드립니다..
갅지돋는슬아
key_input(void)함수 관련 내용 문의 드립니다..
질문은 4가지인데요, 질문1: 아래의 key_input(void)함수에서 key~key4중 하나를 계속 누르고있으면 스위치가 한번만 눌려진다고 볼수있는거죠?
즉, 예를들어 key2 스위치를 10초간 계속 누르고있으면 key2 스위치가 10번 눌려진게아닌 1번만 눌려진것이지요?
unsigned char key_flag = 0; 질문2: key_flag라는 변수를 왜 생성시킨건지요? 또 어떤 역할을 하는지요?
unsigned char Key_input(void)/* input key KEY1 - KEY4 */
{ unsigned char key;
key = PINF & 0xF0;// any key pressed ?
if(key == 0xF0)// if no key, check key off
{ if(key_flag == 0)
return key;
else
{ Delay_ms(20);
key_flag = 0;
return key;
}
}
else// if key input, check continuous key
{ if(key_flag != 0)// if continuous key, treat as no key input
return 0xF0; 질문3: 0xF0를 어디로 리턴하라는 말인지요?
else// if new key, beep and delay for debounce
{ Beep();
key_flag = 1;
return key; 질문4:key를 어디로 리턴하라는 말인가요?
}
}
}