Сразу скажу, первый раз занимаюсь контроллерами. Так что не взыщите. Необходимо изготовить пульт для медиапроигрывателя. Контроллер не выбирал, взял что было PIC16F676. Выбор у нас не богатый. Функции для работы с NEC кодировкой и воспроизведения команд, написал. Теперь борюсь с клавиатурой. Использую матрицу 4х5. PORTA.0 - PORTA.3 входа PORTB.0 - PORTB.4 выходы. Правда протеус, как то неадекватно моделирует эту функцию. Может я что-то не вижу. Подскажите.
Code
sub function KEY_SCAN() as byte dim a as byte result = 0 PORTC = 1 Delay_ms(10) a = PORTA Delay_ms(10) PORTC = 0 select case a case 1 result = 1 return case 2 result = 2 return case 4 result = 3 return case 8 result = 4 return end select PORTC = 2 Delay_ms(10) a = PORTA Delay_ms(10) PORTC = 0 select case a case 1 result = 5 return case 2 result = 6 return case 4 result = 7 return case 8 result = 8 return end select PORTC = 4 Delay_ms(10) a = PORTA Delay_ms(10) PORTC = 0 select case a case 1 result = 9 return case 2 result = 10 return case 4 result = 11 return case 8 result = 12 return end select PORTC = 8 Delay_ms(10) a = PORTA Delay_ms(10) PORTC = 0 select case a case 1 result = 13 return case 2 result = 14 return case 4 result = 15 return case 8 result = 16 return end select PORTC = 16 Delay_ms(10) a = PORTA Delay_ms(10) PORTC = 0 select case a case 1 result = 17 return case 2 result = 18 return case 4 result = 19 return case 8 result = 20 return end select end sub
Функция возвращает номер нажатой клавиши.
Сообщение отредактировал
Kir7 - Пт, 10.12.2010, 17:19
Что бы заработало достаточно поменять в тексте PORTC на PORTB везде где встречается. И не забыть сделать правильную конфигурацию портов(вход/выход) Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Input PORTA.0: Input PORTA.1: Input PORTA.2: Input PORTA.3 ' Данные порты входа Output PORTA.4: Output PORTA.5: Output PORTA.6: Output PORTC ' Данные порты выхода Input PORTC.1 Symbol raw1 = PORTA.0 Symbol raw2 = PORTA.1 Symbol raw3 = PORTA.2 Symbol raw4 = PORTA.3 Dim col1 As PORTA.4: Dim col2 As PORTA.5: Dim col3 As PORTC.0
Прошу прощения, вызвали на работу. Схемку поглядел. После того как удалил все кнопки, увидел забавную картину. Порт Порт А Это на делитель чем то смахивает. В принципе схемка работоспособна если указать протеусу что резисторы цифровые. Приклеил видоизмененную схему. Там немного по другому. Порт А выход, порт С вход. работает без глюков. С резисторами у меня колбасило то же. еще раз повторюсь
Quote (DAlexV)
И не забыть сделать правильную конфигурацию портов(вход/выход)
Мдааа... Интересный протеус.. вернее даже тупой... :\
У меня в своё время не хотел правильно эмулироваться драйвер двигателя управляемый с МК, тупо не в те стороны вал впращался и не в той последовательности.... Потом убрал драйвер и поставил светодиоды, и управление логикой шло без глюков.... Тоже много жизненных багов заметил... Например ради интереса делал КЗ через кнопку Закарачивал через кнопку +1000V постоянного тока и GND.... Протеус даже не предположил что при таком раскладе из кнопки тупо останется только дырка в плате.... Так же светодиоды от 220V запитывал... им тоже хоть бы что.... Короче его ещё пилить и пилить....
Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Мдааа... Интересный протеус.. вернее даже тупой...
Да нет. Там просто есть куча настроек, которых мы обыватели не всегда знаем. Каждый раз заходя в тупик приходиться перечитывать FAQ на Kazusе. Испытывал глюк с ULN2803, не работали ключи. Оказалось что если не выставить нормальное состояние(1 или 0) на неиспользованные входа, симуляция не работает. А для ускорения работы схемы(если только цифра, без аналога) в свойствах резисторов тип указывать цифровой. Так что как говориться, век живи, век учись, и все равно дураком помрешь. Это я про себя Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Доброго времени суток уважаемые! https://r-notebook.ru/ Сервисный центр «Р-Ноутбук» в Москве специализируется на ремонте ноутбуков и ультрабуков разных брендов и моделей. Также мы выполняем апгрейд, обслуживание и настройку техники. Наши мастера посоветуют варианты комплектующих, которые сделают девайс еще более производительным и мощным. Цены на услуги сервиса варьируются в разумных пределах. Мы не завышаем расценки и стремимся сделать ремонт доступным для всех пользователей.Для замены мастера компании используют оригинальные комплектующие – они всегда в наличии на складе сервисного центра. 80% работ специалисты производят в день обращения на дому клиентов. Только в самых сложных случаях ремонт может занять 1-3 дня – тогда девайс бесплатно будет доставлен в сервис. Полный перечень наших услуг можно увидеть на сайте https://r-notebook.ru/. Наша цель – комфорт клиентов. Мы экономим время пользователей и устраняем даже сложные поломки в сжатые сроки! Увидимся! воду в дом из скважины цена