Лекции
Основы микропроцессорной техники
Глава 1.
Философия микропроцессорной техники
Глава 2.
Организация обмена информацией
Глава 3.
Функционирование процессора
Глава 4.
Организация микроконтроллеров
Глава 5.
Однокристальные микроконтроллеры серии PIC
Глава 6.
Проектирование устройств на микроконтроллерах
  11.   Особенности разработки цифровых ...
  12.   Разработка программного обеспечения для PIC-микроконтроллеров
Глава 7.
Организация персонального компьютера
Глава 8.
Интерфейсы персонального компьютера
      Экзамен

 
 
Основы микропроцессорной техники
Глава 6. Проектирование устройств на микроконтроллерах
Лекция #12: Разработка программного обеспечения для PIC-микроконтроллеров Страницы: « 1 2 3 4 5 вопросы »

Комментарии

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

Расширения файлов, используемые MPASM и утилитами

Существует ряд расширений файлов, применяемых по умолчанию MPASM и связанными утилитами. Назначения таких расширений приведены в табл. 6.4.

Табл. 6.4. Используемые по умолчанию назначения расширений файлов.
Расширение Назначение
.ASM Входной файл ассемблера для MPASM <source_name>.ASM
.OBJ Выходной файл перемещаемого объектного кода из MPASM <source_name>.OBJ
.LST Выходной файл листинга, генерируемый ассемблером MPASM или MPLINK: <source_name>.LST
.ERR Выходной файл ошибок из MPASM: <source_name>.ERR
.MAP Выходной файл распределения памяти из MPASM: <source_name>.MAP
.HEX Выходной файл объектного кода в шестнадцатиричном представлении из MPASM: <source_name).HEX
.HXL/.HXH Выходной файл объектного кода в шестнадцатиричном представлении c раздельным представлением младших и старших байт:<source_name>.HXL, <source_name>.HXH
.LIB Библиотечный файл, созданный MPLIB и привязанный компоновщиком MPLINK:<source_name>.LIB
.LNK Выходной файл компоновщика:
<source_name>.LNK
.COD Выходной символьный файл или файл отладчика. Формируются MPASM или MPLINK:
<source_name>.COD

Листинг представляет собой текстовый файл в формате ASCII, который содержит машинные коды, сгенерированные в соответствии с каждой ассемблерной командой, директивой ассемблера или макрокомандой исходного файла. Файл листинга содержит: имя продукта и версии, дату и время, номер страницы вверху каждой страницы.

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

Директивы языка

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

Существует четыре основных типа директив в MPASM:

  • директивы данных;
  • директивы листинга;
  • управляющие директивы;
  • макро-директивы.

Директивы данных управляют распределением памяти и обеспечивают доступ к символическим обозначениям данных.

Директивы листинга управляют листингом файла MPASM и форматом. Они определяют спецификацию заголовков, генерацию страниц и другие функции управления листингом.

Директивы управления позволяют произвести секционирование обычного ассемблерного кода.

Макро-директивы управляют исполнением и распределением данных в пределах определений макротела.

Ниже приводится описание некоторых директив ассемблера MPASM, используемых в данном учебном пособии.

CODE – начало секции объектного кода

Синтаксис:

[<label>] code [ROM address>]

Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа .code Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан.

Пример:

RESET code H'01FF'
     goto START

#DEFINE – определить метку замены текста

Синтаксис:

#define <name> [<string>]

Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте.

Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQU.

Пример:

#define length 20
#define control 0x19,7
#define position (X,Y,Z) (y-(2 * Z +X)).
test_label dw position(1, length, 512)
bsf control     ; установить в 1 бит 7 в f19

END – конец программного блока

Синтаксис:

end

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

Пример:

start
;исполняемый код
;
end     ; конец программы

EQU – определить ассемблерную константу

Синтаксис:

<label> equ <expr>

Здесь <expr> – это правильное MPASM выражение. Значение выражения присваивается метке <label>.

Пример:

four equ 4 ; присваивает численное значение метке four

INCLUDE – включить дополнительный файл источника

Синтаксис:

include <<include_file>>
include "<include_file>"

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

Пример:

include "c:\sys\sysdefs.inc" ; system defs
include <addmain.asm> ; register defs

LIST – установить параметры листинга

Синтаксис:

list [<list_option>, , <list_option>]

Директива <list> разрешает вывод листинга, если он до этого был запрещен. Кроме того, один из параметров листинга может быть изменен для управления процессом ассемблирования в соответствии с табл. 6.5.

Табл. 6.5. Параметры, используемые директивой list.
Параметр Значение по умолчанию Описание
C=nnn 80 Количество символов в строке
n=nnn 59 Количество строк на странице
t=ON|OFF OFF Укорачивать строки листинга
p=<type> None Установить тип процессора:
PIC16C54, PIC16C84, PIC16F84, PIC17C42 и др.
r=<radix> HEX Установить систему счисления по умолчанию: hex, dec, oct.
w=<level> 0 Установить уровень сообщений диагностики в файле листинга:
0 – выводить все сообщения;
1 – выводить предупреждения и ошибки;
2 – выводить только ошибки.
x=ON|OFF OFF Включить или выключить макрорасширения.

NOLIST – выключить выход листинга

Синтаксис:

NOLIST

ORG – установить начальный адрес программы

Синтаксис:

<label> org <expr>

Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <expr>. MPASM выводит перемещаемый объектный код, а MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <expr>. По умолчанию начальный адрес имеет нулевое значение. Директива может не использоваться, если создается объектный модуль.

Пример:

int_1 org 0x20; Переход по вектору 20
int_2 org int_1+0x10; Переход по вектору 30

PROCESSOR – установить тип процессора

Синтаксис:

processor <processor_type>

Устанавливает тип используемого процессора <processor_type>:
[16C54 | 16C55 | 16C56 | 16C57 | 16C71 | 16C84 | 16F84 | 17C42]. Общие процессорные семейства могут быть выбраны как:[16C5X | 16CXX | 17CXX]

Для поддержания совместимости с новыми изделиями выбирается максимум доступной памяти.

SET – определить ассемблерную переменную

Синтаксис:

<label> set <expr>

Директива SET функционально эквивалентна директиве EQU, за исключением того, что величина, определяемая SET, может быть изменена директивой SET.

Пример:

area set 0
widthset 0x12
length set 0x14
area set length * width
length set length + 1

TITLE – Определить программный заголовок

Синтаксис:

title "<title_text>"

Эта директива устанавливает текст, который используется в верхней линии страницы листинга.<title_text> - это печатная ASCII последовательность, заключенная в двойные скобки. Она может быть до 60 символов длиной.

Пример

title "operational code, rev 5.0"
Страницы: « 1 2 3 4 5 вопросы »