Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ассемблере для PIC2.doc
Скачиваний:
26
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Задержки в программе и их расчёт

Задержка – это сегмент программы, который ничего не делает, но обеспечивающий временной простой в ходе выполнения программы на определенное время. Разберем классический пример, обеспечивающий задержку на 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-совместимого программатора;

- инструкция по прошивке микроконтроллера.

(Отступление. Глядя с высоты полученного опыта, у меня смешанное чувство. С одной стороны я вам завидую, столько нового и интересного вы узнаете. А с другой стороны, мне вас жалко - не каждому дано освоить железо и его работу. Многие с самого начала подсаживаются на синтетику типа Протеуса. Но это не правильно - нужно хорошо знать работу реального железа).