Eagle 은 고맙게도 Key Metrix 를 처리하는 부분을 가지고 있어서 따로 Key Metrix 를 처리하는 로직을 작성할 필요가 없다. (물론 이 부분을 사용할 경우이며, GPIO 를 사용할 경우 직접 만들어줘야 한다.)
KSD 라는 레지스터를 사용하게 되는데, 이 처리부분을 잘못 작성하면, 두개의 키를 인식하거나 한번 눌렀는데 두번 인식하는 문제가 생긴다.
이 로직은 Eagle 뿐만 아니라 다른 펌웨어 개발 때에도 변경하여 사용 가능하다.
if (!(KeyTemp & *R_KSD1))
{
KeyTemp = *R_KSD1;
if (KeyTemp != 0)
{
// 키 입력 처리.
}
}
먼저 이 로직은 두개 이상의 키가 눌렸을 경우 키 입력을 처리하지 않고, 키가 눌린 상태일 경우에도 입력처리를 한번만 하게 된다.
만약 롱 키(길게 오랫동안 누르는 처리)의 경우 처리 방법이 약간 변경되지만 이 기본 로직에서 크게 바뀌는것은 없을 것이다.