роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Собираю пульт для выполнение команд с выводом на LCD.В чем собственно вопрос,или как бы сказать просьба о помощи.Значит к выводам порта ATMEGA8 подключены 6 кнопок,тоесть 3 пары пуск и стоп.Пишу на си CVAVR,кнопки программно подключены без всяких прерываний,нажал на первую кнопку старт,выполнил команду,нажал на второю стоп,остановил команду.Как мне программно написать условие последовательности выполнение команд,ну как бы сказать,нужно сделать запрет на нажатие других кнопок,чтоб ничего не выполнялось,пока не выполнится к примеру первая команда пуск-стоп
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



дать каждой кнопке две переменных (вижу скорость и размер кода пока не важны)
Вру!
не так: если нажата кнопка - переменная "вход запрещен" скидывется. Пока не будет разрешен- никто больше кнопки обрабатывать не будет.

(а еще можно зациклить их внутри функции обработки каждой кнопки, пока второй раз не нажмется- из функции не выйдет)
Только лучьше на прерывания, на порт В, стобы с дребезгом не парится.
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



согласен с cjA. на прерываниях лучше. хотя и в циклах тоже можно. дребезг не страшен, в цикл вошел, и все, до лампочки дребезг. вышел из цикла, можно жать следующую кнопку.
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



у меня условия примерно такие
CODE:

if(PINC.0==0)
{
PORTD.1=1;
//ПОТОМ ЗДЕСЬ ИНФА ВЫВОДА НА LCD
}
if(PINC.1==0)
{
PORTD.1=0;
//так же инфа на LCD
}


примерно вот так я разложил это все.тоесть первая команда пуск-стоп,пока мы не выполним стоп одной команды,другие команды выполнятся не должны,вот только туплю. значит по вашим словам надо условие сделать бесконечным типа while() ?
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



я знаю Си только по тому как читаю чужие программы, вот Вашу например
Тут нет цикла, может вместо второго Иф
while (PINC.1 <> 0)
{}
PORTD.1=0; return 0; //или какой там в Си оператор выводит из цикла?
(Добавление)
( к тому же Вы и не на Си пишете, не может идентификатор в Си начинаться с цифры...)
 
 Top
microsmaster Post Id


Капитан


Сообщений всего: 46
Дата рег-ции: Сент. 2009  



Если прерывания не используете, то как код не напиши - пока выполнятся обработка одного нажатия, на остальные программа реагировать не будет.

CODE:
//в функции main
....
while(1){
if (PINC & PC0){
func1();
}

if (PINC & PC1){
func2();
}
}

(Отредактировано автором: 24 Января, 2013 - 23:46:31)

 
 Top
juliarobert Post Id


Рядовой


Сообщений всего: 1
Дата рег-ции: Февр. 2013  



Занимљив податак. Свиђа ми се ваше теме. Хвала за то дељење ................. смех Подшучивать, дразнить Помираю со смеху Тащусь не в себе не в себе
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru