Создание программ для микроконтроллеров PIC. Шаг 2.

Рассказать в:

Установите программу mplab 5.70.40 и сам пакет proteus vsm. Материал к статье тут. Желательно начать везжать
в программирование с книги “Самоучитель”, что находится в архиве.
Теперь мы можем приступить к написанию простейшей программы для pic. Выберем к примеру микроконтроллер pic16f84a, он лучше всех подходит для экспериментов начинающим программистам. Еще нам нужен светодиод и кнопка.
Задача: передать сигнал из кнопки на светодиод (на первый взгляд дурацкая, но для примера то, что нужно). И так запустим проект «less_2» в isis, перед вами должна появится картинка как на рис.1, правда с небольшим дополнением (добавлен элемент «НЕ» и резистор подтяжки).
Создание программ для микроконтроллеров pic. Шаг 2.
Жмем на кнопку плей внизу и смотрим что происходит. Если нажать кнопку в схеме, то сигнал логической 1 падает в логический 0 (потенциал с резистора закорачивается на корпус), дальше этот ноль поступает на вход логического элемента «НЕ» который на выходе дает противоположное значение — логическую 1 и поступает на вход микроконтроллера А0. Так как программа все время работает, она просто перебрасывает значение порта А на порт В. (см. рис.2).
Создание программ для микроконтроллеров pic. Шаг 2.
Теперь попробуем разобраться как все таки работает сама программа, чтобы было более понятно и наглядно. Для этого остановим проект и нажмем на кнопку «пауза», после этого должно появится окно исходника программы как показано на рис.3.
Создание программ для микроконтроллеров pic. Шаг 2.
Симулятор перешел в пошаговый режим исполнения команд программы. Зайдите теперь в вкладку isis «Отладка» и выберите 4-ый пункт «pic cpu registers», должно появится еще одно окно как показано на рис.4.
Создание программ для микроконтроллеров pic. Шаг 2.
Теперь мы готовы к пошаговому исполнению кода. Посмотрите на состояние битов регистра portb в окне «pic cpu registers», оно может иметь случайное значение, в моем случае portb=00000111. Нажмите один раз f11 (только сделайте активным окно исходника) и вы выполните первую команду «clrf portb». Посмотрите как изменится состояние portb после выполнения этой команды (он будет равен 00000000). Для удобства наблюдения за схемой сделайте расстановку окон например как на рис.5.
Создание программ для микроконтроллеров pic. Шаг 2.
Теперь посмотрите на значения 5-го бита (считать нужно справа налево начиная с нулевого бита) регистра status, он сейчас равен нулю. А следующая команда как раз заставит этот бит стать в единицу. Жмем f11 и убеждаемся в этом, теперь мы в первом банке, а были в нулевом. Теперь можно менять содержимое всех нужных нам регистров в этом банке. А нам нужны только два — trisb и trisa, чтобы настроить их согласно нашей задаче. Мы видим следующую команду clrf trisb, это настраивает portb на выход, нужно запомнить простую вещь — ноль это вывод на выход, единица — на вход. И так смотрим в окошко «pic cpu registers» жмем один раз f11 и смотрим как регистр trisb стал равным 00000000. Есть! portb настроен на выход! Далее мы видим команду movlw b00000001. Эта команда заносит так сказать константу определенную программистом. Снова смотрите в окошко «pic cpu registers» какое содержимое аккумулятора w? И каким оно станет после нажатия f11? Все верно, там стало нужное нам число 00000001. Теперь мы перенесем его в регистр trisa, жмем f11 и вывод porta,0 настроен на вход, куда мы и поцепили нашу кнопку через логический элемент «НЕ». Дальше следует команда bcf status,5, что переведет нас в нулевой банк. Все, настройки мы сделали, и теперь можем спокойно изучить самый интересный кусочек нашей программы. Он начинается с метки start, название этой метки может быть любым, каким вы пожелаете. Мы подобрались к команде movf porta,w, она считывает состояние входов porta, в нашем случае нам интересен только вывод А0. Давайте нажмем на красненький кружочек возле самой кнопки, это зафиксирует ее в нажатом положении, и даст возможность
удобно следить за работой программы. Жмем еще раз f11, мы выполнили команду movf porta,w но из-за инерционности срабатывания кнопки микроконтроллер не воспринял нажатие и передал в аккумулятор значение 00000000. Это нормально. Жмем f11 дальше, и выполняем команду movwf portb. Все верно — светодиод не горит, жмем и возвращаемся на первую команду после метки start, на этот момент логическая единица на выводе А0 уже успела сформироваться и программа с легкостью переносит ее на светодиод :). Чтобы запустить в реальном времени программу нажмите f12. Наслаждайтесь работой программы и хорошо изучите ее.

Раздел: [Изучаем микроконтроллеры]

Сохрани статью в:

Оставь свой комментарий или вопрос:


Тясячи схем в категориях:
-> Прочее
-> Измерительная техника
-> Приборы
-> Схемыэлектрооборудования
-> Источники питания (прочие полезные конструкции)
-> Теоретические материалы
-> Справочные материалы
-> Устройства на микроконтроллерах
-> Зарядные устройства (для батареек)
-> Зарядные устройства (для авто)
-> Преобразователи напряжения (инверторы)
-> Все для кулера (Вентилятора)
-> Радиомикрофоны, жучки
-> Металоискатели
-> Регуляторы мощности
-> Охрана (Сигнализация)
-> Управление освещением
-> Таймеры (влажность, давление)
-> Трансиверы и радиостанции
-> Конструкции для дома
-> Конструкции простой сложности
-> Конкурс на лучшую конструкцию на микроконтроллерах
-> Конструкции средней сложности
-> Стабилизаторы
-> Усилители мощности низкой частоты (на транзисторах)
-> Блоки питания (импульсные)
-> Усилители мощности высокой частоты
-> Приспособления для пайки и конструирования плат
-> Термометры
-> Борт. сеть
-> Измерительные приборы (тахометр, вольтметр итд)
-> Железо
-> Паяльники ипаяльные станции
-> Радиопередатчики
-> Вспомогательные устройства
-> Телевизионная техника
-> Регуляторы тембра, громкости
-> Блоки питания (лабораторные)
-> Усилители мощности низкой частоты (на микросхемах)
-> Другие устройства для усилителей
-> Cветовое оформление новогодней ёлки или праздничного зала
-> Глушилки
-> Телефонные жуки
-> Инфракрасная техника
-> Медицинская техника
-> Телефония
-> Для животного мира
-> Конструируем усилители
-> Антенны и усилители к ним
-> Звонки
-> Электронные игрушки
-> Усилители мощности низкой частоты (ламповые)
-> Управление двигателями (питание от однофазной сети)
-> Программаторы микроконтроллеров
-> Сверлилки
-> Изучаем микроконтроллеры
-> Радиоприемники
-> Сигнализации
-> Сотовая связь
-> USB-устройства
-> Блоки питания (трансформаторные)
-> Радиостанции простые в изготовлении
-> Источники питания (для усилителей)
-> Прочеее
-> защита от короткого замыкания (электронные предохранители)
-> Зарядные устройства (для радиостанций)
-> Мигалки
-> Cварочное оборудование
-> Кодовые электронные замки
-> Блоки питания (бестрансформаторные)
-> Часы
-> Управление поворотниками
-> Зажигание
-> Управление водой (насосы для скважин или колодцев, полив растений)
-> Моделирование
-> Блоки управления стеклоочистителями
-> Предварительные усилители
-> Защита от перегрузки и перегрева
-> Динамики
-> Ремонт бытовой техники
-> Дистанционное управление компьютером
-> Акустические микрофоны и преобразователи
-> Спутниковое ТВ
-> Gsm антенны, примочки, усилители, ретрансляторы.
-> Пищалки
-> Роботы
-> Ретрансляторы
-> Паяльники и паяльные станции
-> Звуковые сигнализаторы
-> Рули и джойстики
-> Схемы электрооборудования
-> Все для "кулера" (Вентилятора)
-> Работа с BGA микросхемами
-> Фильтры
-> Сабвуферы
Рейтинг@Mail.ru