Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

При описании первого блока переменных в Программе 8.1 явно указывается, что он начинается с регистра h’26’. Во всех последующих директивах cblock указание адреса можно опустить, если новые переменные должны располагаться сразу же после уже описанных. Таким образом, переменная I:2 размещается в регистрах h’27’:h’28’, a COUNT:1 — в регистре h’29’. Такой подход обеспечивает гораздо большую гибкость по сравнению с ручным распределением регистров самим программистом, так как при изменении какого-либо модуля или добавлении новых элементов распределение памяти изменится автоматически. Кроме того, изменение начального адреса какого-либо блока, скажем с регистра h’26’ на регистр h’20’, автоматически размещает все переменные программы по новым адресам.

Также для именования (присваивания имен) различных объектов программы можно использовать директиву #define. Например, строка вида

#define 6,7 BUZZER

позволяет нам писать bsf BUZZER вместо bsf 6,7, например для включения звукового излучателя, подключенного к выводу 7 порта В (регистр h’06’).

Чтобы проиллюстрировать еще одну возможность ассемблера, подпрограмма из Программы 8.1 размещается, начиная с адреса h’200’ памяти программ. Это осуществляется использованием директивы org (см. также Программу 7.1 на стр. 215). В результате данной операции метке программы SQR_ROOT было присвоено значение h’200’.

В последней строке Программы 8.1 размещается директива end. Эта директива указывает ассемблеру игнорировать весь текст, располагающийся ниже ее, т. е. прекратить трансляцию.

Разумеется, для работы символьного транслятора требуется больше вычислительных ресурсов, нежели для простого шестнадцатеричного загрузчика, особенно это касается памяти и устройств резервного хранения. До появления в конце 1970-х персональных компьютеров для выполнения ассемблирования требовались мэйнфреймы, мини-компьютеры или же специальные системы разработки микропроцессоров/микроконтроллеров. Естественно, эти решения были весьма дорогостоящими, и по причине невозможности использования указанных вычислительных средств повсеместно использовалось ручное кодирование.

Программы-трансляторы, вообще говоря, выполняют две задачи:

1. Преобразование различных мнемоник команд и меток в их эквивалентные значения в машинном коде.

2. Размещение команд и данных по заданным адресам.

Для большинства программ, выполняющихся на микроконтроллерах PIC младшего и среднего уровней, более чем достаточно возможностей абсолютного ассемблера. Чтобы облегчить понимание процесса трансляции, изображенного на Рис. 8.2, мы рассмотрим все этапы преобразования нашей программы, начиная с создания файла с исходным кодом и заканчивая итоговым файлом с абсолютным машинным кодом. Перемещаемый ассемблер мы затронем чуть позже.

Рис. 8.2.Абсолютная трансляция с языка ассемблера

Редактирование

Прежде всего исходный файл необходимо создать. Для этого используется текстовый редактор. Текстовый редактор отличается от текстового процессора тем, что он не вставляет в свой текст никаких управляющих символов, разметки и другой подобной информации. Например, в нем отсутствует перенос строк, поэтому если вы хотите перейти на новую строку, вы должны сами нажать клавишу ввода. В составе большинства операционных систем поставляется простой текстовый редактор, в частности в Microsoft Windows это программа notepad. Также имеется множество программ сторонних разработчиков, кроме того, большинство текстовых процессоров имеют текстовый режим, в котором их можно использовать как обычный текстовый редактор. Файлы с исходным кодом на языке ассемблера имеют расширение. asm.

Типичная строка файла с исходным кодом имеет следующий формат:

За исключением строк, в которых содержится только комментарий, все строки должны содержать инструкцию (либо исполняемую микроконтроллером команду, либо директиву) и соответствующий операнд или операнды. Все метки должны начинаться с 1-й позиции строки; если метка отсутствует, то первым символом строки должен быть пробел или символ табуляции, индицирующие этот факт. Метка может состоять из 32 алфавитно-цифровых символов, символов подчеркивания или символов вопроса. При этом первым символом метки обязательно должна быть буква или символ подчеркивания. Обычно метки нечувствительны к регистру символов. Метка строки соответствует адресу памяти программ первой следующей за ней исполняемой команды. Метка должна отделяться от последующей команды или директивы пробелом, двоеточием или даже символом новой строки.

Необязательный комментарий обозначается символом точки с запятой, при этом допускается вводить строки, состоящие только из комментария (см. строки 9…16 Программы 8.1). Ассемблер игнорирует комментарии, т. е. они служат исключительно для документирования текста программы. Комментариев должно быть много, и они должны объяснять, что программа делает, а не просто дублировать команду. Например, строка:

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки