- •Установка и подготовка к работе mplab
- •Создание проекта и подключение файла с программой
- •Структура текста программы
- •Правила оформления программы
- •Особенности сопоставления имен и чисел. Прямая и косвенная адресация
- •Циклическая концепция программы
- •Модульная структура программы
- •Понятие о времени исполнения программы
- •Компиляция и устранение ошибок
- •Глава 4. Макетная плата. Программатор
- •Задержки в программе и их расчёт
- •Обозначение ножек микроконтроллера
- •Функциональное назначение ножек
- •Назначение ножек
- •Макетная плата и её назначение
- •Инструкция по прошивке микроконтроллера
- •Глава 5. Элементарные базовые проекты
- •Теория и практика работы портов мк
- •1 (Input) – работа на вход
- •0 (Output) – работа на выход
- •Пример 1. Мигающие светодиоды
- •Пример 2. "Бегущий огонь" и "бегущая тень"
- •Пример 3. Включение символов на индикаторе
- •Пример 4. Отслеживание нажатия кнопки
- •Пример 5. Кнопка в режиме переключателя. Антидребезг
Задержки в программе и их расчёт
Задержка – это сегмент программы, который ничего не делает, но обеспечивающий временной простой в ходе выполнения программы на определенное время. Разберем классический пример, обеспечивающий задержку на 10 машинных циклов (10 мкс):
Reg_1 equ H0010
;...
movlw .3
movwf Reg_1
wr decfsz Reg_1, 1
goto wr
1я строчка – определяем в "шапке" адрес регистра под число.
2я – записываем число 3 в аккумулятор W.
3я – копируем из аккумулятора в Reg_1.
Это были подготовительные моменты. Далее собственно сама задержка.
4я строчка – уменьшить Reg_1 на единицу и результат сохранить Reg_1.
5я строчка – переход по метке wr на четвертую строчку.
Очевидно, что 4я и 5я строчка в цикле выполнятся 2 раза. Тогда где обещанные 10 машинных циклов? Дело в том, что команды, связанные с переходами на другие команды, выполняются за 2 машинных цикла. Теперь всё сходится.
А если нам надо обеспечить задержку не в 10 мкс, а 11 мкс? Тогда достаточно в самом конце кода дописать строчку с командой NOP (пустышка), которая как и большинство команд выполняется за 1 мкс.
А как быть если нам нужна задержка для мигалки на 0,5 сек или на 1 сек? Тогда нам надо написать код, который будет занимать 500000 и, соответственно, 1000000 машинных циклов. И это очень просто. Скачиваем программу Pause_2, которая выдаёт код по заданному количеству машинных циклов.
Компиляция и устранение ошибок
После того, как исходный текст программы написан, его необходимо скомпилировать. В процессе компиляции текст программы переводится в машинные коды.
Для компиляции в MPLAB нажимаем Project –> Make (или с клавиатуры кнопку F10). После нажатия должно появиться окно следующего вида:
В течении 1-2 секунд происходит компиляция исходного текста. Если ошибок в тексте программы нет – то прогресс-полоса с процентами в этом окне зелёного цвета. Если ошибки есть – то прогресс-полоса красного цвета.
В любом случае, по завершении компиляции появляется окно следующего вида:
Мы видим, что в одной из строчек есть запись Error[108]. Это значит, что в 108й строке текста программы ошибка. А если дальше прочитать строчку, то можно узнать характер ошибки. Для быстрого поиска указанной строчки с ошибкой достаточно дважды щелкнуть по строке с сообщением об ошибке; будет сделан автоматический переход к ошибочной строчке в тексте программы для МК.
Исправляем и нажимаем F10. Если компиляция проходит без ошибок, то в папке с проектом должен появиться файл с расширением *.hex который мы будем прошивать в МК.
Глава 4. Макетная плата. Программатор
В данной галве будут рассмотрены следующие вопросы:
- обозначение ножек микроконтроллера;
- функциональное назначение ножек;
- документация на микроконтроллер PIC16F84A;
- назначение макетной платы;
- схема макетной платы;
- питание макетной платы;
- схема JDM-совместимого программатора;
- инструкция по прошивке микроконтроллера.
(Отступление. Глядя с высоты полученного опыта, у меня смешанное чувство. С одной стороны я вам завидую, столько нового и интересного вы узнаете. А с другой стороны, мне вас жалко - не каждому дано освоить железо и его работу. Многие с самого начала подсаживаются на синтетику типа Протеуса. Но это не правильно - нужно хорошо знать работу реального железа).
