Основы микропроцессорной техники

Глава 6. Проектирование устройств на микроконтроллерах


«Структура курса | Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Раздел 7 | Глава 8 | Дополнения

Раздел 6 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »

6.2. Разработка программного обеспечения для PIC-микроконтроллеров

Разработка программного обеспечения является центральным моментом общего процесса проектирования. Центр тяжести функциональных свойств современных цифровых систем находится именно в программных средствах.

Основным инструментом для профессиональной разработки программ является ассемблер, предполагающий детализацию на уровне команд МК. Только ассемблер позволяет максимально использовать ресурсы кристалла.

Для микроконтроллеров PIC выпущена большое количество различных средств разработки. В данном разделе речь пойдет о средствах, предоставленных фирмой Microchip, которые очень эффективны и широко используются на практике.

6.2.1. Ассемблер MPASM

Ассемблер MPASM представляет собой интегрированную программную среду для разработки программных кодов PIC микроконтроллеров всех семейств. Выпускается фирмой Microchip в двух вариантах: для работы под DOS и для работы под Windows 95/98/NT. Ассемблер MPASM может использоваться как самостоятельно, так и в составе интегрированной среды разработки MPLAB. Он включает несколько программ: собственно MPASM, MPLINK и MPLIB, причем каждая из них имеет собственный интерфейс.

Программа MPASM может использоваться для двух целей:

  • генерации исполняемого (абсолютного) кода, предназначенного для записи в МК с помощью программатора;
  • генерации перемещаемого объектного кода, который затем будет связан с другими асембльованимы или компилируемый модулями.

Код, который выполняется, является для MPASM исходным кодом по умолчанию. При этом все переменные источники должны быть явно описаны в тексте программы или в файле, который подключается с помощью директивы INCLUDE <filename>. Если при асемблюванни не проявляется ошибок, то генерируется выходной. Hex-файл, который может быть загружен в МК с помощью программатора.

При использовании ассемблера MPASM в режиме генерации перемещаемого объектного кода формируются объектные модули, которые могут быть впоследствии объединены с другими модулями с помощью компоновщика MPLINK. Программа-компоновщик MPLINK превратит перемещаемых объектные коды в бинарный исполняемый код, привязанный к абсолютным адресов МК. Библиотечная утилита MPLIB позволяет для удобства работы сгруппировать перемещаемых объекты в один файл или библиотеку. Эти библиотеки могут быть связаны Компоновщик MPLINK в файл выходного объектного кода ассемблера MPASM.

Программы MPASM и MPLINK доступны через оболочку MPASM, тогда как MPLIB доступна только из своего командной строки.

Исходным файлом для ассемблера MPASM по умолчанию является файл. ASM. Текст исходного файла должен соответствовать требованиям синтаксиса, который приведен далее.

Ассемблер MPASM может быть вызван командной строкой:

MPASM [/ <Option> [/ <Option> ...]] <file_name>

где / <Option> означает выбор режима работы ассемблера в командной строке; <file_name> - имя файла для асемблювання.

Режимы работы ассемблера, которые избраны по умолчанию, приведены в табл. 6.1.

Табл. 6.1. Режимы работы ассемблера по умолчанию.
Выбор Значение по умолчанию Описание
? N / A Вызывать помощь
a INHX8M Генерировать абсолютный. COD и hex выход непосредственно из ассемблера:
c On Выберите / запретить случай чувствительности
e On Выберите / запретить файл ошибок
h N / A Отобразить панель помощи MPASM
l On Выберите / запретить файл листинга, который генерируется из макроасемблера.
m On Вызвать / запретить макророзширення
o N / A Установить путь для объектных файлов / o <path> \ object.file
p None Установить тип процессора: / p <processor_type>
q Off Разрешить / Запретить скрытый режим (запретить вывод на экран)
r Hex Определяет тип числа по умолчанию: / r <radix>
w 0 Определяет уровень диагностических сообщений в файле листинга / w <level>,
где <level> может быть:
0 - сообщать все,
1 - сообщать о предупреждении и ошибки,
2 - сообщать только об ошибках.
x Off Разрешить / запретить перекрестные ссылки в файле листинга.

Здесь и далее используются следующие соглашения по использованию символов:

[] - Для аргументов на выбор;
<> - Для выделения специальных ключей <TAB>, <ESC> или дополнительного выбора;
| - Для взаимоисключающих аргументов (выбор ИЛИ);
строчные символы для обозначения типа данных.

Выбор по умолчанию, приведен в табл. 6.1, может быть изменен командной строкой:

/ <option> Позволяет выбор;
/ <option> + Позволяет выбор;
/ <option> - Запрещает выбор.

Выходной асемблерний файл создается с использованием любого ASCII текстового редактора. Каждая линия выходного файла может содержать до четырех типов информации:

  • метки (labels)
  • Мнемоника (mnemonics)
  • операнды (operands)
  • комментарий (comments)

Порядок и положение каждого типа имеет значения. Метка должна начинаться в колонке номер один. Мнемоника может начинаться в колонку два или дальше. Операнды идут за мнемоники. Комментарий может следовать за операндом, мнемоники или меткой может начинаться в любом столбце, если в качестве первого не пустого символа используется * или;.

Максимальная длина строки 255 символов.

Один или несколько пробелов должны отделять метку и мнемоники или мнемоники и операнд (ы). Операнды могут отделяться запятыми. Например:

List p = 16C54, r = HEX
ORG 0x1FF
GOTO START
ORG 0x000

; Вектор сброса
; Возврат к началу
; Адрес начала выполнения программы
START
MOVLW 0x0A
MOVLW 0x0B
GOTO START
END

; Выполнение программы PIC МК
; Выполнять всегда

Метки

В поле метки размещается символическое имя ячейки памяти, в которой хранится отмечен операнд. Все ярлыки должны начинаться в колонке 1. За ними может следовать двоеточие (:), пробел, табуляция или конец строки. Комментарий может также начинаться в колонке 1, если используется одно из обозначений комментария.

Метка может начинаться с символа или нижнего тире (_) и содержать буквенные символы, числа, нижние тире и знак вопроса. Длина метки может быть до 32 символов.

Мнемоники

Мнемоники это мнемонические обозначения команды, непосредственно транслируются в машинный код. Мнемоники асемблерних инструкций, директивы ассемблера и макровикликы должны начинаться, по крайней мере, в колонке 2. Если есть метка на той же линии, она должна быть отделена от этой метки двоеточием или одним или более пробелами или табуляцией.

Операнды

В этом поле определяются операнды (или операнд), участвующие в операции. Операнды должны быть отделены от мнемоники одним или более пробелами или табуляцией. Операнды отделяются друг от друга запятыми. Если сделка требует фиксированного номера (числа) или операндов, то все на линии после операндов игнорируется. Комментарии разрешаются конце линии. Если мнемоники позволяют использовать разное количество операндов, конец списка операндов определяется концом строки или комментарием.

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

В ассемблере MPASM используются следующие форматы выражений:

  • текстовая строка;
  • числовые константы и Radix;
  • арифметические операторы и приоритеты;
  • High / Low операторы.

Текстовая строка - это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), помещена в двойные кавычки. Строка может иметь любую длину в пределах 132 столбцов. При отсутствии ограничения строки он считается до конца линии. Если строка используется как буквенный операнд, он должен иметь длину в один символ, иначе будет ошибка.

Числовая константа это число, выраженное в некоторой системе счисления. Перед константой может стоять + и -. Промежуточные значения в константах рассматриваются как 32-разрядные целые без знака.

MPASM поддерживает следующие системы счисления (представление значений или Radix): шиснадцядкову, десятичной, восьмеричной, двоичную и символьную. По умолчанию принимается шиснадяткова система. В Табл. 6.2 приведены различные системы счисления.

Операторы - это арифметические символы, подобные + и -, которые используются при формировании выражений. Каждый оператор имеет свой приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках оцениваются первыми. В табл. 6.3 приведены обозначения, описания и примеры применения основных операторов MPASM.

Табл. 6.2. Системы счисления (Radix).
Тип Синтаксис Пример
Десятичная D '<цифры>' или <цифры> D'100 'или .100
Шиснадцяткова H '<цифры>' или 0x <цифры> H'9f 'или 0x9f
Восьмеричная O '<цифры>' O'777 '
Двоичная B '<цифры>' B'00111001 '
Символьная '<Символ>' или A '<символ>' "C" или A'C '

Табл. 6.3. Основные арифметические операторы MPASM
Оператор Описание Пример
$ текущий счетчик команд goto $ + 3
( левая скобка 1 + (d * 4)
) права скобка (Lenght + 1) * 255
! операция "НЕ" (логическая инверсия) if! (A - b)
~ дополнение flags = ~ flags
- инверсия (двоичное дополнение) - 1 * lenght
High выделить старший байт слова movlw high llasid
Low выделить младший байт слова movlw low (llasid + .251)
upper выделить самый байт слова movlw upper (llasid + .251)
* умножения a = c * b
/ деления a = b / c
% модуль lenght = totall% 16
+ добавление Tot_len = lenght * 8 + 1
- вычитание Entry_Son = (Tot - 1) / 8
<< сдвиг влево Val = flags <<1
>> сдвиг вправо Val = flags>> 1
> = больше или равно if ent> = num
> больше if ent> num
< меньше if ent <num
<= меньше или равно if ent <= num
== равна if ent == num
! = не равно if ent! = num
& поразрядной "И" flags = flags & err_bit
^ поразрядной "Исключая ИЛИ" flags = flags ^ er r_bit
| поразрядной "ИЛИ" flags = flags | err_bit
& & логическое "И" if (len == 512) & & (b == c)
| | логическое "ИЛИ" if (len == 512) | | (b == c)
= установить равным ... entry_index = 0
+ + увеличить на 1 (инкремент) i + +
- уменьшить на 1 (декремент) i -

Операторы high, low и upper используются для получения одного байта с багатобайтного значения, соответствующего метке. Применяются для управления расчетом точек динамического перехода при чтении таблиц и записи программ.

Операторы инкремента и декремента могут применяться к переменной только как единого оператора в строке. Они не могут быть встроенным фрагментом более сложного выражения.


«Структура курса Раздел 6 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »