Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC

1 3 99

вот блин............. за день напостили-то........

 

А уж за последние 25 минут!!!

 

Splav56: Если все что написано выше устраивает уважаемое собрание, то можем продолжить и даже попросить Andy закрепить тему, как важную, чтобы не искать ее по всей конфе.

Я придумал лучше.

 

прошу прощения за три поста. с радиодоступом прблемы были.

 

Andy, здОрово получилось, это именно то, чего не хватало!

Теперь по теме, если это так нужно, то хорошо, буду обобщать.

1. Итак ТЗ утвердили это: Техзадание (учебное):
Разработать устройство управления четырьмя светодиодами с управлением от четырех кнопок. В устройстве применить микроконтроллер PIC16F628(A). Обеспечить: при нажатии на кнопку 1 зажигание светодиода №1, при нажатии на кнопку 2 зажигание светодиодов №1 и №2 одновременно, на кнопку 3 - №1, №2 и № 3, на кнопку 4 - всех четырех. Кнопки однополюсные без фиксации. При всех отпущенных кнопках светодиоды гореть не должны. При двух (и более) одновременно нажатых кнопках также не должны. Тактовый генератор внутренний. Кнопки подключить к "общему" проводу, светодиоды к шине питания.

2. По принципиальной схеме. Есть множество вариантов подключения задающих элементов - датчиков (кнопок) и исполнительных (индикаторных) элементов, в нашем случае светодиодов. В принципе для этого может быть использован любой вывод порта А или порта В. Прочитать об их использовании и особенностях можно в рускоязычном руководстве по PIC16F62Х раздел 5, стр.27(ссылку давал semm на первой странице этого топика). Сами кнопки можно подключить двумя способами:
1) Каждую кнопку посадить на отдельный вывод порта. Используются 4 линии порта и 4 подтягивающих резистора (внешних, если это порт А, или внутренних, если это порт В).
2) Кнопки можно объединить в матрицу 2х2. Потребуется 4 развязывающих диода.
Какие предложения на этот счет?

3. Перед тем как рисовать принципиальную схему надо бы алгоритм работы устройства нарисовать. Кто возьмется?

 

Andy:
Я придумал лучше.
Наконец-то сбылась мечта идиота! Улыбайтесь чаще! Это всех раздражает.

 

Алгоритм я набросал. Он в прикрепленном файле.

35004.xls

 

А зачем так сложно? У нас есть четко определенное соответствие между входом и выходом. Проще сразу на основании значения полубайта (четыре бита, по одному на кнопку) выдать еще четыре бита — по одному на светодиод.

 

Splav56, схему ПНЧ я получил, благодарю.
Алгоритм хороший. Только зачем проверка "нажата одна кнопка"? Или хотите использовать прерывание по изменению уровня? Если нет - сразу проверяем №1...№4 по очереди, затем возвращаемся на "ожидание ввода".
И зачем многократно давать команду на включение светодиодов при нажатой кнопке? Один раз записали в защелку порта требуемую комбинацию, и просто ждем отпускания кнопки. А после отпускания кнопки светодиоды ведь гасить надо Причем погасить лучше заранее, перед проверкой кнопок.
А еще есть один маленький поганец по имени "дребезг контактов"...
Вначале можно сделать по предложенному алгоритму, "в лоб". Затем сделать второй вариант, в виде таблицы, как предложил Andy. Заодно разберемся с программированием таблиц при помощи retlw.
Схему я нарисовал, только вот куда светодиоды подключим всё-же? Пока к PORTB нарисовал. Для простоты предлагаю выделить по одному выводу на каждый светодиод и на каждую кнопку.
http://www.pic16.nm.ru/schema01.gif

 

Левон: при выходе из жилища человек набирает опредёленный код
Эх! поздно присоединился Совершенно недопустимо при выходе нажимать какой-либо код - требования пожарной безопасности. Я понимаю, что это учебное задание, но Вам, Левон, внимают и начинающие. Как бы не отложился у них такой "пустячок" в памяти
Только что случилась трагедия в Владивостоке.