Опрос клавиатуры
|
|
homer111 |
Дата: Вс, 10.02.2008, 18:31 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Подскажите как можно реализовать опрос клавиатуры. Можно готовый пример желательно с комментариями. ЗЫ Не пинайте я только учусь
|
|
|
|
ADMIN |
Дата: Вс, 10.02.2008, 18:39 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Сколько клавиш? Какой проц в наличии?
|
|
|
|
homer111 |
Дата: Вс, 10.02.2008, 19:00 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Для начала пойдет 3 клавиши можно на 84 камне Как разберусь, будет камень посерьезнее и клавиш поболее
|
|
|
|
ADMIN |
Дата: Вс, 10.02.2008, 19:06 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
тогда проще всего использовать прерывания по порту Б процессора. За установку этого прерывания отвечают: 1 - бит глобального разрешения прерывания GIE(INTCON.7) 2 - бит разрешения прерывания по порту Б RBIE(INTCON.3) 3 - флаг прерывания по порту Б RBIF(INTCON.0) Пока все...
|
|
|
|
homer111 |
Дата: Вс, 10.02.2008, 19:09 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Ок! Спсибо. Будем пробовать и учться.
|
|
|
|
ADMIN |
Дата: Вс, 10.02.2008, 19:11 | Сообщение # 6 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Пишите чаще..
|
|
|
|
homer111 |
Дата: Вс, 10.02.2008, 20:23 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
В общем задача такая допустим имеем 18f452 пик и три кнопки также ЛСД двустрочную матрицу Задача такая одна кнопка будет старт, другие две будут выбирать режим работы вперед назад. После выбора режима работы будут появляться на 4портах импульсы разной длительности либо лог0 либо лог1 (зависеть будет от режима). С лсд разобрался, подпрограммы с длительностью импульсов напишу без проблем, вопрос тока с кнопками, как сделать чтобы с помощью кнопок был возможен переход на конкретную подпрограмму? После выбора программы нужно будет нажать старт, она же должна будет остановить запущенную программу. Готового решения ВСЕЙ программы не надо, а вот в кусочке с кнопками от помощи бы не отказался
|
|
|
|
ADMIN |
Дата: Пн, 11.02.2008, 03:21 | Сообщение # 8 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
После прерывания вычисляете, какая кнопка была нажата путем опроса. То есть, установив факт прерывания по порту Б, покидаете прерывание и идете на ПП опроса кнопок, какая была нажата, и, в зависимости от результата, переходите на нужную ПП. А в 18Ф452, по-моему, есть три независимых прерывания INT0-INT2, или я ошибаюсь?
|
|
|
|
homer111 |
Дата: Чт, 27.03.2008, 14:27 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Скачал мануал на РВР прочитав стало боле менее понятко как писать прогу. basicpic, ОГРОМНОЕ СПАСИБО ЗА ПОМОЩ и за этот форум Добавлено (27.03.2008, 8:27:08) --------------------------------------------- Вот пишу прогу и возникла трудность, заветься она прерывания. Пишу на pic basic pro вот такая проблема, имееться строча on interrupt goto label - при возникновении прерывания перейти на label. Вот тока почему то при запуске проги она всегда переходит на label специально устанавливаю intcon = %00000000 такое ощущение, либо компилятор просто не понимает intcon, либо он автоматически устанавливает intcon = %10000000 если имееться on interrupt??? Кто работал с прерываниями, отзовитесь. Смена уровней на RB0 ничего не меняет. Пишу под PIC16F873
|
|
|
|
ADMIN |
Дата: Чт, 27.03.2008, 17:00 | Сообщение # 10 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Есть такая программа, зовется PROTEUS. На сайте есть. В ней можно посмотреть, как будет вести себя программа. Это раз. Что же по поводу прерываний: а посмотреть код можно? С глюками компиляторов, выложенных на сайте, не сталкивался ни разу.
|
|
|
|
a_sergeevich |
Дата: Чт, 27.03.2008, 21:12 | Сообщение # 11 |
Группа:
Заблокированные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Если чесно я ,что-то не совсем понял,если нужны прерывания сконфигурируй INTCON, если нужно , что-бы прерывания запрещались тогда используй команду disable interrupt перед кодом , выполнение которого не должно прерываться, и команду enable interrupt для разрешения прерываний. Если тебе совсем не нужны прерывания тогда и строку on interrupt не нужно в код записывать, а если у тебя прога сразу после запуска переходит в обработчик прерывания то либо оно у тебя сразу же возникает либо , что-то в коде намудрил, лучше если-бы привёл тут свой проблемный код,что бы понятней было.
|
|
|
|
homer111 |
Дата: Пн, 31.03.2008, 15:39 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Всем спасибки разобрался, работает как часы :). Про dable enable вкурсе, использовал их. Просто пользовался microcode studio, д о этого юзал компилятор pic simulator ide, в нем все получилось А протеус конечно использую, в нем и отлаживаю прогу, а уж потом на железе буду пробовать. Добавлено (31.03.2008, 9:39:22) --------------------------------------------- Чета немного не правильно работает прерываниею Выставил прерывание по RB0, все как положено прога тормозиться, но вот одно но.. Мне нужно чтобы прога при прерывании перешла на начало основной программы. она переходит нормально, но вот только после этого перехода в протеусе начинают сыпаться ошибки по программе пика. вот текст обработки прерываний on interrupt goto main resume Вот это resume похоже и парит мозг. Тоесть получаеться при прерываниее должно выполниться какое то действие и программа должна стартануть с того места, где была прервана (resume для этого и стоит). Но в моем случае получаеться бред полный. Без resume компилятор материться.
Сообщение отредактировал
homer111 - Чт, 27.03.2008, 22:06
|
|
|
|
vladh |
Дата: Пн, 31.03.2008, 21:04 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
To homer111 Уточните плжалуйста. Либо - "Всем спасибки разобрался, работает как часы :)", либо - "Чета немного не правильно работает прерываниею ...". Во-первых хотел бы высказаться по поводу решения вопроса поставленного в названии темы. Обрабатывать какие либо события с помощью т.н. прерываний имеет смысл только в тех случаях, когда требуется моментальная реакция на какое либо событие. Понятие моментальная в нашем физическом мире это значит как можно быстрее с теми средствами, которыми мы распологаем в настоящий момент. Но время реакции на такие события, как нажатие кнопки вполне допускает такие значения как сотни миллисекунд. Поэтому в данном конкретном случае обработку нажатия кнопки с помощью подпрограмм обработки прерываний не целесообразно. Для этого в компиляторе имеются команда BUTTON. В книге, которая представлена на этом сайте: "Программирование PIC-контроллеров" имеется "Пример № 10. Работа с 12-кнопочной клавиатурой". На котором я надеюсь вы сможете освоить работу с клавиатурами. Когда Вы не можете решить некоторую проблему: Quote "Вот это resume похоже и парит мозг. Тоесть получаеться при прерываниее должно выполниться какое то действие и программа должна стартануть с того места, где была прервана (resume для этого и стоит). Но в моем случае получаеться бред полный. Без resume компилятор материться. то выставляйте ваш пример для анализа. Иначе нам остается только вместе с Вами сочувственно повздыхать, либо поматериться.
|
|
|
|
homer111 |
Дата: Пн, 31.03.2008, 21:55 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
18
Замечания:
±
На сайте с 10.02.2008
Статус:
Offline
|
Да. согласен. Название темы ушло в сторону.. Мне именно и нужно моментально сраегировать, а именно перейти на начало основной программы. Первоначально прерывание вообще не работало, вот и обратился и пока ждал ответа параллельно бился с этой проблемой. Сделал, при прерывании происходит то что нужно мне, но вот одно но... После срабатывания этого прерывания основная программа начинает сыпать ошибками (это протеус говорит) на железе не пробовал. Притом ошибки сыпяться а прога работает как надо. Конечно кнопки опрашиваю не используя прерывания, лиш одна кнопка "STOP" в нужное время работает по прерыванию. Текст проги прилагаю, прога написана в PIC simulator IDE. Это тестовый вариант, сильно не пинайте
Сообщение отредактировал
homer111 - Пн, 31.03.2008, 21:58
|
|
|
|
ADMIN |
Дата: Вт, 01.04.2008, 05:01 | Сообщение # 15 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Так все-таки какой компилер? Если pic simulаtor, тогда, думаю нужно переместить тему и решать вопрос по-другому.
|
|
|
|