Проблема заключается в том, что вы не предоставляете никакой дебат для вашего коммутатора. Кроме того, где count
инициализируется? Я не вижу этого.
Вам нужно иметь задержку, когда вы обнаружите, что переключатель замкнут, потому что он будет «подпрыгивать» разомкнутым и замкнутым много раз за первые несколько миллисекунд. Я бы задержал минимум на 10 мс, прежде чем проверять, был ли выключатель открыт, а затем вы можете изменить count
.
ОБНОВЛЕНИЕ НА ОСНОВАНИИ OP-КОММЕНТАРИЙ:
Ну, опять же, это будет только работать в симуляции. Переключатели не так хороши. Но я вижу вашу проблему: вы не сбрасываете count
в вашем main()
. Попробуйте:
main()
{
while(1)
{
count = 0;
if(sw==0)
{
delay_ms(10000);
}
}
}