осторожно! леоныч!!! писал(а):Debounce Button , 0 , 3leds , Sub Вместо 0 была 1. Иначе светодиод горит постоянно.
Вы издеваетесь? Где Вы там увидели 1? Вот код из моего примера:
Код: Выделить всё
Do
Debounce Button , 0 , 3leds , Sub ' обработка нажатия кнопки
Led = Not Button ' при нажатой кнопке зажигаем светодиод
Loop
осторожно! леоныч!!! писал(а):И еще. Все светодиоды у меня подключены на минус (-) питания.
Вам скриншот из протеуса скинуть, где все светодиоды сидят на минусе? Я вообще не понимаю, в чем Вы нашли проблему?
В основном цикле команда Debounce считывает состояние пина порта, к которому подключена кнопка. Так как кнопка подтянута к питанию (программно), то считается 1 (при ненажатой, естественно). Далее на пин порта дополнительного светодиода будет выдан уровень, инверсный по отношению к кнопке. Там 1 - на светодиоде 0. Светодиод
погашен.
Как только кнопка будет нажата, с пина кнопки считается 0. Программа уйдет по метке 3leds, где будет включен светодиод. Произойдет это очень быстро, мы снова вернемся в основной цикл где и будет записан в пин порта светодиода уровень, обратный кнопочному. Мы кнопку нажали? Нажали. Уровень на пине 0? Ноль. Значит инверсный (NOT) равен 1. Светодиод
светится. И светиться он будет до тех пор, пока нажата кнопка. Мы никуда из основного цикла не уйдем, потому что та же Debounce ждет отпускания кнопки. А вот таймер включеные основные светодиоды сбросит запросто. Что требовалось - то и получили.
А вот если Вы не включили подтяжку кнопки, замыкаете ее на плюс, или дополнительный светодиод у Вас подключен иначе, или еще что-то подобное, то я здесь совершенно не при чем. Приведите
свой полный код, и я скажу Вам в чем дело.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон