Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Ваш курс у меня скачанный - прочитал страницы 5.htm и 5a.htm - нашёл про violitale но про указатели там ничего нет...а так всё понял...
Хотя неважно - работает - и хорошо(щас в дебри лесть тоже не охота) я наверно просто названия битов забью в библиотеку КодВижна и на этом мои проблемы, надеюсь , закончатся
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
И снова здравствуйте, возвращаемся к нашим баранам...
Просили же уже 1024 раза: есть что рассказать - расскажи на Форуме или напиши статью. Хочешь послать в свой курс - пиши в личку.
_________________ Оптимизм х (Опыт + Знания) = const
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Слушай, ну хватит меня мучить.... открой секрет - чего нехватает? Я глазами проел 3-ю страницу курса, но кроме того что надо установить 7 бит статус регистра ничего не увидел...
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Ур-р-р-р-аа - зработало!!!
Для новичков сообщаю - не наступайте на грабли - читайте даташит(не знаю почему, но с даташитом мне веселее чем с Визардом)
Есть регистр в кот-ом разрешаются прерывания для таймера!!! Будте внимательны
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Итак: требуется критика(код глаза намозолил, скорее всего чегото очевидного не вижу, но в симуляторе вроде работает). Цели:
-антидребезг;
-реакция на нажатие один раз с момента нажатия до момента отпускания;
-должно быть реализованно в виде отдельной функции, кот-ая фозвращает состояние порта.
Собственно код
FrstState=PIND; //Запоминаем состояние кнопок delay_ms(10); //Задержка на антидребезг ScndState=FrstState & PIND; //Контрольная проверка на нажатие RealState=(ScndState) & ~(Flag); //Состояние изменилось? Flag=ScndState; //Флаг для контроля состояния при след проверке return RealState; }
есть ещё один вариант. проверяем состояние кнопок по переполнению таймера (например 100 раз в секунду)
если в предыдущий раз и в текущий раз состояние кнопки не изменилось, значит пишем это состояние в какую-либо глобальную переменную.
в основном цикле программы (да и вообще из любого места) для того чтобы узнать нажата ли кнопка или нет - достаточно заглянуть в эту переменную.
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Кашпо писал(а):
Negor писал(а):
Итак: требуется критика...
есть ещё один вариант. проверяем состояние кнопок по переполнению таймера (например 100 раз в секунду) если в предыдущий раз и в текущий раз состояние кнопки не изменилось, значит пишем это состояние в какую-либо глобальную переменную.
в основном цикле программы (да и вообще из любого места) для того чтобы узнать нажата ли кнопка или нет - достаточно заглянуть в эту переменную.
дело в том что главное во всей этой функции(по крайней мере я ставил приоритет именно на это) - что бы если кнопка нажата длительное время - реакции на нажатие не поступало. т.е. допустим кнопка нажата в течении десяти циклов, но реакция на нажатие была только в первом и больше не произойдёт, пока кнопку не отпустят... примерно так... а вот делать это всё по переполнению таймера - мысль хорошая...
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
если кнопка нажата длительное время - реакции на нажатие не поступало. т.е. допустим кнопка нажата в течении десяти циклов, но реакция на нажатие была только в первом и больше не произойдёт, пока кнопку не отпустят...
т.е. типа буфера клавиатуры? я нечто подобное недавно делал. в каждом переполнении таймера, если кнопка нажата то наращивается некая глобальная переменная "счётчик". если кнопка отпущена переменная сбрасывается в ноль. При достижении счётчиком определённого значения (например 10) будет означать, что в течении последних 10 срабатываний таймера кнопка была нажата. В этом случае номер нажатой кнопки заносится в другую переменную.
Состояние этой переменной читается какой-либо функцией и после прочтения - обнуляется. таким образом одно нажатие кнопки попадёт в переменную лищь единожды и прочитается лишь единожды.
Правда оно может прочитаться даже тогда, когда кнопка уже будет отпущена. Но по крайней мере факт нажатия не прозевается процом
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Имхо уж очень легко ты разкидываешся таймерами... я понимаю, если бы их было штук восемь... а так два таймера(я изучаю тини2313) и, как правильно заметил ARV один просто будет молотить и энергия расходуется в никуда...
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения