Страница 1 из 1

Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 15:15:20
pitato
Здравствуйте. Как сделать так, что бы при нажатии кнопки, запускалась основная программа, а другой кнопкой останавливалась?

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 16:05:42
pyzhman
В теле программы опрашивать их и по состоянию принимать решение. Или я чего-то недопонимаю?

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 16:12:41
pitato
При включении, программа должна стоять, а после нажатия кнопки, запуск программы.

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 16:15:01
pyzhman

Код: Выделить всё

while(!PINX.Y); // на случай, если при включении кнопка нажата
whike(PINX.Y); // ждем нажатия кнопки
// пооййехали
...
...
...

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 18:35:35
nirq
Для понимания: программа не может "стоять".
Следующий клок тикнул - следующая инструкция выполняется.

Остановить тактовый генератор теоретически можно, но практически вместо "стоять" сделали "зациклиться".


В отрыве от контекста получился конь в вакууме - формальный вопрос, формальный ответ. "Лаба".
Рисуй весь алгоритм, пляши от конечной задачи (с точки зрения пользователя)... и руками на бумажке это полезнее, чем запостить в интернет.

---

Не тупи.

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 20:52:00
pyzhman
pitato писал(а):при нажатии кнопки, запускалась ...программа
При чём здесь "не может стоять"?

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Сб окт 26, 2013 23:10:33
АлександрЛ
:))) Правильно поставленный вопрос стоять будет долго.... :)))
Вот так программа не может стоять- если сделать условием начала выполнения программы какое- то событие (нажатие кнопки), то пока это событие не произойдёт программа всё равно будет с каждым тактом опрашивать состояние кнопки.... пока кнопку не нажмут...

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 06:28:23
pyzhman
Для зануд:
запускалась основная программа
Будем считать, что опрос кнопки осуществляет не_основная программа. :)) А что там внутри этой черной штучки с железными какими-то торчащими проволоками делается - вообще по барабану.

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 08:09:30
Bear2011
При включении, программа должна стоять
Всегно одна команда

HALT :)))

Все остальное в обработке прерываний

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 08:15:14
pyzhman
халт равнозначно исполнению нопов. Опять тема для зануд. :))

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 08:43:03
pitato
Вот эта программа. Надо, чтобы при нажатии кнопки ПУСК (без фиксации) запускался цикл программы.


$regfile = "m32def.dat" ' используемый микроконтроллер ATmega32
$crystal = 16000000 ' частота установленного кварца 16 mHz

Config Portb.3 = Input ' конфигурируем вывод 3 порта B на вход - подключаем к нему кнопку ПУСК
Config Portb.2 = Output ' конфигурируем вывод 2 порта B на выход - подключаем к нему светодиод
Portb.2 = 0 'устанавливаем по умолчанию на ножке порта лог 0
Do ' начало цикла программы
Portb.2 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 500 ' задержка в милисекундах 500мс = 0,5 секунды
Portb.2 = 0 'устанавливаем на ножке порта лог 0 - светодиод гаснет
Waitms 500 ' задержка в милисекундах 500мс = 0,5 секунды
Loop
End

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 08:56:11
pyzhman
Мы уже тут разодрались вхлам. Не до вас. :)) Погодите со своим бэйсиком - может кто еще подтянется. :))

Re: Как сделать кнопку ПУСК и СТОП?

Добавлено: Вс окт 27, 2013 09:24:54
pavel1979
pitato писал(а):Вот эта программа. Надо, чтобы при нажатии кнопки ПУСК (без фиксации) запускался цикл программы.
если баском то проще,значит так,2 кнопки-старт и стоп
в основной программе постоянно опрашиваем не нажато ли стоп,если не нажато-выполняем основную программу,если нажато-уходим на зацикленную подпрограмму в которой постоянно опрашивается кнопка стоп,например
DO
IF _STOP=0 THEN GOTO PR__START-здесь опрашиваем,если нажато-уходим---
...........
LOOP
..........
PR__START:
DO
IF _START=0 THEN GOTO LABEL
LOOP
LABEL:
return
примерно так,надо видеть всю программу