스위치 상태를 읽는 코드를 작성하고 #를 3 번 누르면 종료됩니다.do while loop while pre- maturely
void allkeypadTest(void)
{
static uint8_t modeKeyCount=0;
do
{
uint8_t key=getKeyStatus();
if(key)
{
if(key=='#')
{
modeKeyCount++;
//pulseIODevice(LED1,1,500,200);
}
else
{
pulseIODevice(LED1,key-0x30,500,200);
}
}
}while(modeKeyCount<3);
}
# 한 번 키를 입력하면 루프가 종료됩니다. 다른 키를 누르면 동작이 정상입니다. 그러나 의 섹션에서 if(key=='#')
섹션의 주석을 제거하면 정상적인 동작입니다. pulseIODevice
은 특정 시간에 특정 시간 동안 LED를 토글하고 PWM을 통과시킵니다. 내 코드에서 무엇이 잘못되었는지 당황 스럽다. getKeyStatus
은 키가 검색되지 않으면 '\0'
(null)을 반환하고 1x4 키패드의 키 (ASCII 값 3, 6, 9 및 #에만 해당)의 ASCII 값을 반환합니다.
'getKeyStatus()'는 아마도 호출간에 재설정되지 않을 것입니까? 그래서 한번 누르면 다시''# ''을 반복해서 할 것입니다. –
'getKeyStatus()'의 코드를 아는 것은 최소한 야생적인 추측없이이 질문에 답하는 것이 중요해 보입니다. – alk
루프가 손가락 끝보다 빠릅니다. :-) – alk