Стандартная клавиатура
|
|
mikhail09p |
Дата: Вт, 27.07.2010, 20:16 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Стандартный оператор INKEY не работает на этом ПИКе, да и одну линию некуда подключить... Может, кто знает, как сделать врукопашную опрос кнопок? А то я ещё только учусь и не очень понимаю...
|
|
|
|
vladh5916 |
Дата: Вт, 27.07.2010, 20:48 | Сообщение # 2 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
А у меня работает. И в живую, и в Протеусе. Уважаемый mikhail09p, выложите свой пример на обозрение и надеюсь мы Вам поможем.
Сообщение отредактировал
vladh5916 - Вт, 27.07.2010, 20:57
|
|
|
|
mikhail09p |
Дата: Вт, 27.07.2010, 21:32 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Я имею ввиду, что в ПИК676 мало портов. Какой выход? Или я чего-то не допонимаю? Пример у меня - кодовый замок, где нужно опрашивать клаву.
|
|
|
|
vladh5916 |
Дата: Ср, 28.07.2010, 09:13 | Сообщение # 4 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Quote (mikhail09p) Я имею ввиду, что в ПИК676 мало портов. Какой выход? 1. Портов хватает, а вот разрядов в имеющихся портах маловато. Поэтому возьмите контроллер с большим числом ножек. 2. Когда Вы отправляете кому- то код программы или схему для консультации, делайте хотя бы краткое описание того, что Вы хотели бы получить. Тем более в Вашем случае Вы высылаете код - очень черновой вариант, в котором например присутствует оператор Print ну и некоторое другое. Разбираться в этом коде все равно что подбирать код в Вашем замке 3. И тем не менее оператор Inkey у Вас работает. Когда Вы симулируете некоторую программу в Протеусе, то в свойствах контроллера загружайте не hex файл, а bas. И тогда Вы сможете включать в программе точки останова, с помощью которых контролировать ход выполнения программы. Я Вам отсылаю назад Вашу схему с программой несколько подправленных мной. Если нажать на кнопку "2", то выполнение программы остановится на точке выбранной мной и можно увидеть в списке переменных измененную переменную Key.
|
|
|
|
ivan_fd |
Дата: Ср, 28.07.2010, 15:37 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Посмотрите в примерах Протона, пример Keypad.bas. Это как раз врукопашную!
|
|
|
|
mikhail09p |
Дата: Ср, 28.07.2010, 20:15 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Quote (vladh5916) Поэтому возьмите контроллер с большим числом ножек. Спасибо за дельный совет, но я ж написал: надо под 676! ivan_fd, Зачем загадки, я ж прошу помощи...
|
|
|
|
vladh |
Дата: Ср, 28.07.2010, 23:21 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Quote (mikhail09p) Спасибо за дельный совет, но я ж написал: надо под 676! ivan_fd, Зачем загадки, я ж прошу помощи... А какой помощи Вы хотите. Может быть денег на которые этот замок можно было бы приобрести? Люди Вам дают действительные советы, причем исходя из Вашего скудного описания, а Вы при этом высказываете обиду. Я подозреваю, что в таком "разрезе", Вам советы давать неприятно.
|
|
|
|
brown |
Дата: Ср, 28.07.2010, 23:28 | Сообщение # 8 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
ivan_fd, Вам правильно подсказывает где нужно искать примеры нужного вам кода. Правда в протоне не нашел, а вот в РВР есть пример 16 кнопок (4*4 матрица). У вас телефонная клава 4*3, с возможной оговоркой. Попробуйте адаптировать подпрограму для ваших нужд. Code ' PicBasic Pro program to display key number on LCD
' Define LOADER_USED to allow use of the boot loader. ' This will not affect normal program operation. Define LOADER_USED 1
' Define LCD connections Define LCD_DREG PORTD Define LCD_DBIT 4 Define LCD_RSREG PORTE Define LCD_RSBIT 0 Define LCD_EREG PORTE Define LCD_EBIT 1
' Define program variables col var byte ' Keypad column row var byte ' Keypad row key var byte ' Key value
OPTION_REG.7 = 0 ' Enable PORTB pullups
ADCON1 = 7 ' Make PORTA and PORTE digital Low PORTE.2 ' LCD R/W low (write)
Pause 100 ' Wait for LCD to start
Lcdout $fe, 1, "Press any key" ' Display sign on message
loop: Gosub getkey ' Get a key from the keypad Lcdout $fe, 1, #key ' Display ASCII key number Goto loop ' Do it forever
' Subroutine to get a key from keypad getkey: Pause 50 ' Debounce
getkeyu: ' Wait for all keys up PORTB = 0 ' All output pins low TRISB = $f0 ' Bottom 4 pins out, top 4 pins in If ((PORTB >> 4) != $f) Then getkeyu ' If any keys down, loop
Pause 50 ' Debounce
getkeyp: ' Wait for keypress For col = 0 to 3 ' 4 columns in keypad PORTB = 0 ' All output pins low TRISB = (dcd col) ^ $ff ' Set one column pin to output row = PORTB >> 4 ' Read row If row != $f Then gotkey ' If any keydown, exit Next col
Goto getkeyp ' No keys down, go look again
gotkey: ' Change row and column to key number 1 - 16 key = (col * 4) + (ncd (row ^ $f)) Return ' Subroutine over
End
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
terrarus |
Дата: Чт, 29.07.2010, 08:45 | Сообщение # 9 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Quote (mikhail09p) Поэтому возьмите контроллер с большим числом ножек. Спасибо за дельный совет, но я ж написал: надо под 676! ivan_fd, Зачем загадки, я ж прошу помощи... Ну Вот, умный человек дает дельный совет, а вы как младенец: ''ХОЧУ...'' (а может быть лучше на транзисторе П4Б и диодах Д7Ж ?) В PIC 16f676 порт С имеет всего 6 выводов RC0...RC5, а для InKey нужно в сокращенном варианте 7, а в полном 8. Этот оператор предназначен для работы с матричными клавиатурами размерами 4 х 4 или 3 х 4 клавиши. И переопределить порт можно только целиком, а не кусочками взять из любого порта столкь выводов сколько хочется. Если все же "ХОЧУ 676", тогда откажитесь от оператора InKey и пишите тогда на ассемблере.... Или другой вариант - тоже откажитесь от InKey и используйте структуру. типа ... If PORTC.0 = 0 THEN knopka0 = 1: ..... If PORTC.1 = 0 THEN knopka1 = 1: ..... If PORTC.2 = 0 THEN knopka2 = 1: ..... If PORTC.3 = 0 THEN knopka3 = 1: ..... If PORTC.4 = 0 THEN knopka4 = 1: ..... If PORTC.5 = 0 THEN knopka5 = 1: ..... If PORTA.0 = 0 THEN knopka6 = 1: ..... If PORTA.1 = 0 THEN knopka7 = 1: ..... If PORTA.2 = 0 THEN knopka8 = 1: ..... If PORTA.3 = 0 THEN knopka9 = 1: ..... А InKey описана на http://www.terrarus.ucoz.ru/proton_....ey.html
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Чт, 29.07.2010, 09:08
|
|
|
|
mikhail09p |
Дата: Чт, 29.07.2010, 12:12 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Ребята, не надо обижатся, я, наверное, не так понял! Просто взять другой контроллер не так легко, как вы понимаете. Большое спасибо за помощь, попробую написать опрос кнопок так, как вы посоветовали.
|
|
|
|
ivan_fd |
Дата: Чт, 29.07.2010, 14:29 | Сообщение # 11 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (brown) Правда в протоне не нашел, а вот в РВР есть пример 16 кнопок (4*4 матрица). Этот пример у меня как раз в папке Samples Протона. Quote (mikhail09p) ivan_fd, Зачем загадки, я ж прошу помощи... Какие загадки, я вам дал рабочий пример. Удачи!
|
|
|
|
mikhail09p |
Дата: Вс, 01.08.2010, 21:24 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Подскажите, пожалуйста, как заставить работать ПИК676 от внутреннего генератора.
|
|
|
|
brown |
Дата: Вс, 01.08.2010, 22:15 | Сообщение # 13 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Такой режим включается битами конфигурации, что вы и делали. Попробуйте вот такую строку: CONFIG CPD_OFF, CP_OFF, BODEN, MCLRE_OFF, PWRTE_OFF, WDT_OFF, INTRC_OSC_NOCLKOUT
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
mikhail09p |
Дата: Вс, 01.08.2010, 22:45 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
brown, прокоментируйте CPD_OFF и INTRC_OSC_NOCLKOUT, пожалуйста. И надо ли устанавливать биты FOSC0-FOSC2 ? А Ваша строка работает, спосибо, буду дальше писать.
Сообщение отредактировал
mikhail09p - Вс, 01.08.2010, 22:52
|
|
|
|
brown |
Дата: Пн, 02.08.2010, 00:18 | Сообщение # 15 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Эту строку выдал мне плагин для протона, который генерит CONFIG. CPD_OFF - защита от считывания памяти данных выкл. INTRC_OSC_NOCLKOUT - устанавливает биты FOSC0-FOSC2 .
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|