Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: brown, ivan_fd  
Опрос клавиатуры
homer111 Дата: Вс, 10.02.2008, 18:31  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Подскажите как можно реализовать опрос клавиатуры. Можно готовый пример желательно с комментариями.

ЗЫ Не пинайте я только учусь smile

ЯНДЕКС Дата: 10.02.2008
ADMIN Дата: Вс, 10.02.2008, 18:39  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Сколько клавиш? Какой проц в наличии?
homer111 Дата: Вс, 10.02.2008, 19:00  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Для начала пойдет 3 клавиши можно на 84 камне smile Как разберусь, будет камень посерьезнее и клавиш поболее biggrin
ADMIN Дата: Вс, 10.02.2008, 19:06  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

тогда проще всего использовать прерывания по порту Б процессора. За установку этого прерывания отвечают:
1 - бит глобального разрешения прерывания GIE(INTCON.7)
2 - бит разрешения прерывания по порту Б RBIE(INTCON.3)
3 - флаг прерывания по порту Б RBIF(INTCON.0)
Пока все...
homer111 Дата: Вс, 10.02.2008, 19:09  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Ок! Спсибо. Будем пробовать и учться.
ADMIN Дата: Вс, 10.02.2008, 19:11  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Пишите чаще..
homer111 Дата: Вс, 10.02.2008, 20:23  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

В общем задача такая допустим имеем 18f452 пик и три кнопки также ЛСД двустрочную матрицу Задача такая одна кнопка будет старт, другие две будут выбирать режим работы вперед назад. После выбора режима работы будут появляться на 4портах импульсы разной длительности либо лог0 либо лог1 (зависеть будет от режима). С лсд разобрался, подпрограммы с длительностью импульсов напишу без проблем, вопрос тока с кнопками, как сделать чтобы с помощью кнопок был возможен переход на конкретную подпрограмму? После выбора программы нужно будет нажать старт, она же должна будет остановить запущенную программу. Готового решения ВСЕЙ программы не надо, а вот в кусочке с кнопками от помощи бы не отказался smile
ADMIN Дата: Пн, 11.02.2008, 03:21  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

После прерывания вычисляете, какая кнопка была нажата путем опроса. То есть, установив факт прерывания по порту Б, покидаете прерывание и идете на ПП опроса кнопок, какая была нажата, и, в зависимости от результата, переходите на нужную ПП. А в 18Ф452, по-моему, есть три независимых прерывания INT0-INT2, или я ошибаюсь?
homer111 Дата: Чт, 27.03.2008, 14:27  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Скачал мануал на РВР прочитав стало боле менее понятко как писать прогу. basicpic, ОГРОМНОЕ СПАСИБО ЗА ПОМОЩ и за этот форум smile smile smile

Добавлено (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
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Есть такая программа, зовется PROTEUS. На сайте есть. В ней можно посмотреть, как будет вести себя программа. Это раз. Что же по поводу прерываний: а посмотреть код можно? С глюками компиляторов, выложенных на сайте, не сталкивался ни разу.
a_sergeevich Дата: Чт, 27.03.2008, 21:12  |                                                                                                                Сообщение # 11
Группа: Заблокированные
Ранг:  Начал соображать
Сообщений: 24
Репутация: 0   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Если чесно я ,что-то не совсем понял,если нужны прерывания сконфигурируй INTCON, если нужно , что-бы прерывания запрещались тогда используй команду disable interrupt перед кодом , выполнение которого не должно прерываться, и команду enable interrupt для разрешения прерываний. Если тебе совсем не нужны прерывания тогда и строку on interrupt не нужно в код записывать, а если у тебя прога сразу после запуска переходит в обработчик прерывания то либо оно у тебя сразу же возникает либо , что-то в коде намудрил, лучше если-бы привёл тут свой проблемный код,что бы понятней было.
ЯНДЕКС Дата: 27.03.2008
homer111 Дата: Пн, 31.03.2008, 15:39  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Всем спасибки разобрался, работает как часы :). Про dable enable вкурсе, использовал их. Просто пользовался microcode studio, д о этого юзал компилятор pic simulator ide, в нем все получилось smile А протеус конечно использую, в нем и отлаживаю прогу, а уж потом на железе буду пробовать.

Добавлено (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
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

To homer111 Уточните плжалуйста. Либо - "Всем спасибки разобрался, работает как часы :)", либо - "Чета немного не правильно работает прерываниею ...".
Во-первых хотел бы высказаться по поводу решения вопроса поставленного в названии темы. Обрабатывать какие либо события с помощью т.н. прерываний имеет смысл только в тех случаях, когда требуется моментальная реакция на какое либо событие. Понятие моментальная в нашем физическом мире это значит как можно быстрее с теми средствами, которыми мы распологаем в настоящий момент. Но время реакции на такие события, как нажатие кнопки вполне допускает такие значения как сотни миллисекунд. Поэтому в данном конкретном случае обработку нажатия кнопки с помощью подпрограмм обработки прерываний не целесообразно. Для этого в компиляторе имеются команда BUTTON. В книге, которая представлена на этом сайте: "Программирование PIC-контроллеров" имеется "Пример № 10. Работа с 12-кнопочной клавиатурой". На котором я надеюсь вы сможете освоить работу с клавиатурами.
Когда Вы не можете решить некоторую проблему:
Quote
"Вот это resume похоже и парит мозг. Тоесть получаеться при прерываниее должно выполниться какое то действие и программа должна стартануть с того места, где была прервана (resume для этого и стоит). Но в моем случае получаеться бред полный. Без resume компилятор материться.
то выставляйте ваш пример для анализа. Иначе нам остается только вместе с Вами сочувственно повздыхать, либо поматериться.
homer111 Дата: Пн, 31.03.2008, 21:55  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Новенький
Сообщений: 18
Репутация: 0   ±
Замечания:   ±
На сайте с 10.02.2008

Статус: Offline

Да. согласен. Название темы ушло в сторону..
Мне именно и нужно моментально сраегировать, а именно перейти на начало основной программы. Первоначально прерывание вообще не работало, вот и обратился и пока ждал ответа параллельно бился с этой проблемой. Сделал, при прерывании происходит то что нужно мне, но вот одно но...
После срабатывания этого прерывания основная программа начинает сыпать ошибками (это протеус говорит) на железе не пробовал. Притом ошибки сыпяться а прога работает как надо. Конечно кнопки опрашиваю не используя прерывания, лиш одна кнопка "STOP" в нужное время работает по прерыванию.
Текст проги прилагаю, прога написана в PIC simulator IDE. Это тестовый вариант, сильно не пинайте smile
Прикрепления: 4276636.rar (14.9 Kb)

Сообщение отредактировал homer111 - Пн, 31.03.2008, 21:58
ADMIN Дата: Вт, 01.04.2008, 05:01  |                                                                                                                Сообщение # 15
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Так все-таки какой компилер? Если pic simulаtor, тогда, думаю нужно переместить тему и решать вопрос по-другому.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: