Арифметические операторы MPASM.
Оператор | Описание | Пример |
$ | Текущий счетчик программы | goto $ + 3 |
( | левая скобка | 1 + ( d * 4 ) |
) | правая скобка | ( leght + 1 ) * 255 |
! | операция "НЕ" (логическая инверсия) | if ! ( a - b ) |
~ | инверсия | flags = ~ flags |
- | отрицательное число (вторая инверсия) | - 1 * lenght |
high | выделить старший байт слова | movlw high llasid |
low | выделить младший байт слова | movlw low ( llasid + .2551 ) |
* | умножение | 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 ^ err_bit |
| | поразрядное "ВКЛЮЧАЮЩЕЕ ИЛИ" | flags = flags | err_bit |
&& | логическое "И" | if ( len == 512) && ( b == c ) |
|| | логическое "ИЛИ" | if ( len == 512 ) || ( b == c ) |
= | установить равному... | entry_index = 0 |
+= | сложить и установить равному... | entry_index += 1 |
-= | вычесть и установить равному... | entry_index -= 1 |
*= | умножить и установить равному... | entry_index *= lenght |
/= | делить и установить равному... | entry_index /= lenght |
%= | модуль и установить равному... | entry_index %= 8 |
<<= | сдвиг влево и установить равному... | entry_index << 3 |
>>= | сдвиг вправо и установить равному... | entry_index >> 4 |
&= | "И" и установить равному... | entry_index %= err_flags |
|= | "ВКЛЮЧАЮЩЕЕ ИЛИ" и установить равному... | entry_index |= err_flags |
^= | "ИСКЛЮЧАЮЩЕЕ ИЛИ" и установить равному... | entry_index ^= err_flags |
++ | увеличить на 1 (инкремент) | i ++ |
-- | уменьшить на 1 (декремент) | i -- |
Что такое MPLAB?
Инструментальные средства MPLAB, организованные как ниспадающие меню и определяемые быстрые клавиши, позволяют:
- ассемблировать, компилировать исходный текст;
- отлаживать логику работы, наблюдая с помощью симулятора или, в реальном времени, с эмулятором MPLAB-ICE
;
- просматривать переменные в окнах просмотра;
- программировать кристаллы с помощью программаторов PICSTART Plus
или PRO MATE II
- и многое другое.
MPLAB работает под Microsoft Windows 3.1x, Windows 95, 98, NT, 2000 (начиная с версии 5.00.00). Правда не все дополнительное оборудование, такое как внутрисхемные эмуляторы и программаторы будет функционировать под всеми операционными системами. Для более подробного описания обращайтесь к специализированной литературе и техническим описаниям фирмы Microchip.
Директивы языка MPASM
ДИРЕКТИВА | ОПИСАНИЕ | ПРИМЕР |
Директивы управления | ||
CONSTANT | Определение символьной константы | constant cnt=255 |
#DEFINE | Определение текстовой последовательности для замены | #define snd portsnd, 1 |
END | Конец блока программы | end |
EQU | Определение константы | temp equ 0xF0 |
ERROR | Сообщение о ошибке | error "error line" |
ERROR LEVEL | Установка типа сообщений об ошибках в файле листинга и файле ошибок | errorlevel 1, -202 |
INCLUDE | Вставить другой файл источника | include <addmain.asm> |
LIST | Определение формата (тип микроконтроллера, количество символов в строке, табуляция и многое другое см. MPASM Help) или разрешает вывод, если было предварительно запрещено | list p=17c42, f=INHX32, r=DEC |
MESSG | Создать пользовательское сообщение | messg "see here!" |
NOLIST | Запретить вывод | nolist |
ORG | Установить начальный адрес программы | org 0x100 |
PAGE | Вставить страницу в файл листинга | page |
PROCESSOR | Установить тип микроконтроллера | processor 16F84 |
RADIX | Установить систему счисления по умолчанию для выражения данных | radix dec |
SET | Определение константы. Аналогична EQU, но в последствии можно переопределить | temp set b'00110011' |
SPACE | Вставить пустые строки в файл листинга | space 3 |
SUBTITLE | Вставить второй заголовок в файл листинга | subtitle "Main Project" |
TITLE | Вставить заголовок в файл листинга | title "Project Of PIC" |
#UNDEFINE | Удаление определенной текстовой последовательности | #undefine snd |
VARIABLE | Определение символьной переменной | variable temp=0xF0 |
Условия | ||
ELSE | Начало блока альтернативного условия (IF) | else |
ENDIF | Завершение блока условия | endif |
ENDW | Завершение цикла ПОКА | endw |
IF | Начало блока условия | if version == 100 |
IFDEF | Выполнить, если определено | ifdef testing |
IFNDEF | Выполнить, если не определено | ifndef testing |
WHILE | Цикл ПОКА | while i < count |
Данные | ||
CBLOCK | Определение блока констант | cblock 0x20 |
__CONFIG | Описание бит конфигурации микроконтроллера | __config H'FFFF' |
DATA | Создание числовых и текстовых данных | txt data "please", 0x30 |
DB | Определение байта данных | temp db 0xFF |
DE | Определение данных в EEPROM | temp de 0xF0, 0xF1 |
DT | Определение таблицы | temp dt "text", 0, 0x30 |
DW | Определение слова (2 байта) данных | temp dw 39, "text" |
ENDC | Окончание блока констант | endc |
FILL | Заполнение области константой | fill 0x1009, 5 |
__IDLOCS | Определение ID | __idlocs H'FFEE' |
RES | Резервирование памяти | buffer res 64 |
Макросы | ||
ENDM | Окончание макроса | endm |
EXITM | Выход из макроса | exitm |
EXPAND | Полный текст макроса в файле листинга | expand |
LOCAL | Определение локальной переменной в макросе | local leng, tmp |
MACRO | Определение макроса | out_sym macro temp |
NOEXPAND | Не разворачивать макрос | noexpand |
В начало
Формат представления чисел |
|||||||||||||||||||
В исходном тексте представлять числа можно по-разному и в разных системах счисления:
В начало
|
|||||||||||||||||||
Как создать новый проект. |
|||||||||||||||||||
Рассмотрим создание простого проекта, исходными файлами которого будут файл или файлы на ассемблере. При кажущийся сложности, все необходимые действия не отнимают и минуты. Для создания проекта выполните следующие шаги:
Выбор папки проекта.
Создайте на диске папку для своего проекта. Важное примечание! MPLAB
не поддерживает корректно длинные и русские имена папок, то есть имя должно состоять из латинских букв и не более 8. Тоже самое относится и к названию проекта и к именам исходных файлов. В противном случае MPLAB
откажется файлы редактировать и будет жаловаться, что не может их открыть при ассемблировании.
Создание исходного файла для проекта. В папке \template\code
где установлен MPLAB
находятся файлы-заготовки для проектов на ассемблере. Можно, конечно, создать пустой файл с расширением .asm для проекта, но проще взять готовый. Если Вы уже выбрали тип микроконтроллера для своего проекта, то скопируйте соответствующий файл в папку своего проекта и переименуйте во что-то типа: prog.asm (<my project>.asm).
Выбор языка инструментальной среды. Выберите Project>Install Language Tool из меню. Выберите Language Suite: Microchip и Tool Name: MPASM. Если не указан путь к файлу ассемблера mpasmwin.exe, укажите. Затем установите опцию Windowed
и нажмите OK.
Создание файла проекта. В MPLAB выберите Project>New Project, укажите путь к Вашей папке и введите имя файла проекта, желательно такое же, как и имя основного исходного файла файла. Возможно указание нескольких папок через точку с запятой, для примера, таким образом: c:\mplab\projects\mpproj\include;c:\include\h;..\sys.
Нажмите OK.
Установка конфигурации.
После перечисленных действий откроется окно редактирования проекта. Для простоты не будем добавлять дополнительные файлы, файлы библиотек и компоновки. Нажмите кнопку Change.. в пункте Development Mode. Откроется окно с вкладками для установки. В дальнейшем это окно можно будет вызвать, выбрав Options>Development Mode.
Остановимся подробнее: - Tools. Выберите инструментальную среду. Скорее всего у Вас нет дополнительного оборудования, поэтому придется довольствоваться симулятором MPLAB-SIM (установите признак) и выберите тип микроконтроллера. - Clock. Выберите тип генератора тактовых импульсов (кварцевый резонатор, внутренний или внешний RC-генератор, внешняя частота и т. д.) и его частоту. - Configuration. Конфигурация сторожевого таймера и памяти программ. Если Вы разрешаете использование сторожевого таймера, то задайте и коэффициент деления предделителя. А для микроконтроллеров 17-й серии необходимо указать какая память программ будет использоваться: внутренняя (microcontroller), внешняя (microprocessor) или обе (extended microcontroller). - Pins. Разрешите или запретите использование вывода внешнего сброса (MCLR). - Break option. Конфигурация прерываний и стека при отладке (лучше пока оставить по умолчанию). Нажимаете OK. Конфигурация выходного файла. Щелкните, чтобы подсветить на файле <my project>[.hex]. При этом станет доступно меню Node Properties. В ранних версиях MPLAB без вызова окна конфигурации выходного файла нельзя было добавить в проект свой исходный файл. Можно попробовать изменить конфигурацию, а можно оставить по умолчанию. Добавление исходного файла. Чтобы добавить свой исходный файл на ассемблере, который Вы скопировали и переименовали в папке своего проекта нажмите на кнопке Add Node. В открывшемся окне выберите свой файл и нажмите OK. После этого нажмите OK в окне редактирования проекта. Если нажмете Cancel, то проект записан не будет! В дальнейшем это окно всегда можно будет вызвать через Project>Edit Project.. Открытие исходного файла. Теперь можете открыть свой исходный файл для редактирования: File>Open.. В проекте может быть несколько исходных файлов на ассемблере, но указывать необходимо при редактировании проекта один. Остальные включаются в основной исходный файл директивой ассемблера include. В начало |
|||||||||||||||||||
Компилирование |
|||||||||||||||||||
Чтобы перекомпилировать только те файлы, в которые были внесены изменения, нажмите Project>Make Project. Чтобы перекомпилировать все файлы проекта выберите Project>Build.
После завершения процесса будет вызвано окно с генерированной коммандной строкой, перечнем предупреждений или ошибок (если есть) и результатом компиляции: были ли ошибки (build failed) или нет (build successful ). Помощь при исправлении ошибок может оказать файл-листинг, вызвать который можно из меню таким образом: Window>Absolute Listing. В начало
|
Логические функции |
||||||||||||||||||||||||||
Таблица истинности для основных логических функций:
В начало
|
||||||||||||||||||||||||||
Меню Debug |
||||||||||||||||||||||||||
После компилирования проекта Вы, наверняка, захотите видеть как Ваш код выполняется. Обычно, разрабатываемое устройство не будет работать правильно, как Вы хотите. Поэтому придется код отлаживать. Вы можете использовать MPLAB-SIM
для симулирования работы микроконтроллера или внутрисхемный эмулятор (что вряд ли в наших условиях, например PICMASTER стоит порядка $4000), такой, как MPLAB-ICE. PICMASTER и др. В любом случае придется останавливать работу и наблюдать состояние регистров микроконтроллера и выполнять в пошаговом режиме.
Меню Debug содержит все опции, которые Вы будете использовать при отладке Вашего кода с симулятором или эмулятором: Меню Run.
Опции этого меню позволяют управлять выполнением Вашей программы. Меню Execute. Меню Simulator Stimuls. Позволяет имитировать внешние сигналы на входных выводах (портах) микроконтроллера. Подробнее можно прочитать в моем разделе "ЧАВО по ПИКам".
|
||||||||||||||||||||||||||
Меню Edit |
||||||||||||||||||||||||||
Тоже стандартное меню для управления буфером обмена, а также для поиска, замены текста и другого.
В начало | ||||||||||||||||||||||||||
Меню File |
||||||||||||||||||||||||||
Это стандартное меню со стандартными пунктами для управления файлами проекта. Пункты Export и Import
предназначены для обмена данными между компьютером и внешними устройствами (симулятор, эмулятор).
В начало
|
||||||||||||||||||||||||||
Меню Help |
||||||||||||||||||||||||||
Вызов помощи и справок. Полная оригинальная фирменная информация на английском языке. Если что-то не понятно, то всегда можно там найти.
В начало
|
||||||||||||||||||||||||||
Меню Option |
||||||||||||||||||||||||||
Меню для конфигурирования самого MPLABа. Включает в себя следующие опции:
Меню Development mode. Открывается окно для конфигурирования микроконтроллера в проекте. Информация из этого окна используется симулятором или эмулятором при отладке. Устанавливается тип отладчика, тип тактового генератора (осциллятора), частота, конфигурация внешнего сброса (MCLR), точек останова, сторожевого таймера и др. Меню Window setup. Запись (save) и считывание (load) конфигурации MPLAB, а также установка по умолчанию (default). Меню Current editor settings. Конфигурация встроенного редактора, вида вывода файла на принтер, типа файла. Меню Reset editor modes. Сбросить установленную конфигурацию редактора и установить конфигурацию по умолчанию. Меню Environment setup (Ctrl+F7).
Открывается окно с несколькими вкладками для конфигурирования самого MPLABа. Краткое описание вкладок: Меню Programmer options. Выбор программатора, его конфигурация и выбор порта для подключения.
В начало
|
||||||||||||||||||||||||||
Меню PICSTART Plus |
||||||||||||||||||||||||||
Меню конфигурации и управления фирменным программатором PICSTART Plus. При его отсутствии также не доступно.
В начало | ||||||||||||||||||||||||||
Меню Project |
||||||||||||||||||||||||||
Пункты для управления проектом и конфигурацией. Изменение установок созданного проекта Edit Project. Make Project - компилировать все исходные файлы для создания одного hex файла, Build All - компилировать все файлы, Build Node - компилировать один выборочный файл. Меню Install Language Tool предназначено для выбора языка программирования и конфигурации.
В начало
|
||||||||||||||||||||||||||
Меню Tools |
||||||||||||||||||||||||||
Опции меню позволяют запустить файлы в ДОС строке и проверять возможность обмена информацией с внешними устройствами (программаторами и эмуляторами).
В начало | ||||||||||||||||||||||||||
Меню Window |
||||||||||||||||||||||||||
MPLAB обеспечивает окна для обзора программной памяти, содержимого стека и содержимого регистров. Внимание: чтобы открыть системное меню для изменения отображаемых данных в открытом окне щелкните левой кнопки мыши в верхнем левом углу этого окна. Все опции меню Window
доступны в режиме симулятора (виртуального отладчика) или внутрисхемного эмулятора. В режиме Editor Only доступны только: окно Абсолютного Листинга и окно списка символов (simbol list). Подробнее об возможных опциях:
Program Memory - окно памяти программы EEPROM Memory - окно просмотра содержимого EEPROM (Электрически программируемая область памяти, сохраняется при отключении питания. Присутствует в кристаллах, содержащих в обозначении букву F, например 16F84). Calibration Data - окно просмотра калибровочных данных Calibration Memory - окно просмотра калибровочной памяти для кристаллов, содержащих таковую (PIC14400, например) Absolute Listing - окно просмотра абсолютного листинга - полного отчета о компилировании. Полезно просматривать при поиске ошибок. Map File - окно просмотра схемы памяти. По умолчанию этот файл при компилировании не генерируется. Чтобы он был доступен при вызове, надо вызвать окно редактирования проекта Project>Edit Project, подсветите выходной HEX-файл и выберите его свойства Node Properties. В открывшемся окне поставьте галочку в графе ON для Cross Reference File и в графе DATA введите имя файла с именем Вашего проекта и расширением MAP, например myprog.map. После изменений перекомпилируйте проект. Stack - просмотр стека, то есть точек входа в подпрограммы. Не стоит забывать, что у некоторых микроконтроллеров глубина стека всего 2 (например, PIC16C505). Это значит, что можно вызывать только одну подпрограмму из подпрограммы. При третьем вызове информация о возврате теряется и программа будет работать самым неожиданным образом!
File Registers - окно просмотра содержимого регистров общего назначения (RAM).
|
||||||||||||||||||||||||||
MPLAB для начинающих |
||||||||||||||||||||||||||
Описание приведено для MPLAB версии 5.00.00 и выше, который Вы можете скачать с сервера Microchip по адресу www.microchip.com Прошу учесть, что приведенное описание основано на моем личном опыте и поэтому может вызвать разногласия у других разработчиков. В защиту можно сказать то, что начав работу, можно добиться положительных результатов и приобрести собственный опыт. Технически полное описание содержит MPLAB Help. При переводе на русский язык многие термины теряют смысл, поэтому я буду стараться приводить англоязычный вариант при описании. И еще, в качестве примера будет рассмотрено создание проекта с использованием ассемблера. Для тех, кто программирует на С для PICmicro, я думаю, не составит труда разобраться в оригинальной англоязычной документации. | ||||||||||||||||||||||||||
Общая информация | ||||||||||||||||||||||||||
Создание проекта и работа с ним | ||||||||||||||||||||||||||
Меню MPLAB и описание функций | ||||||||||||||||||||||||||
Справочная информация и словарь | ||||||||||||||||||||||||||
Для удобного просмотра Вы можете скачать это описание в виде архива book.zip. Загрузите его себе, затем распакуйте в отдельной папке и откройте файл titul.htm. Еще можете скачать полное описание MPLAB на английском языке в формате PDF (Acrobat Reader), нажав на эту ссылку: mlpabhlp.zip (1,94 Mb) Если есть потребность описать какие либо пункты подробнее, то, пожалуйста, напишите мне и я обязательно это сделаю.... Заранее благодарю. | ||||||||||||||||||||||||||
All right reserved by Dmitry Salikov | ||||||||||||||||||||||||||
По возникшим вопросам и замечаниям прошу обращаться ко мне на e-mail: disall@mail.ru |
MPLAB - интегрированная среда разработки (IDE)
Общая информация
Обзор проекта
В начало
Панель инструментов (Toolbar) |
|
Панель инструментов представляет собой ряд кнопок для быстрого вызова тех или иных функций или выполнения каких-либо действий. Существует 4 набора кнопок для разных действий: для редактирования, отладки, управления проектом и для определения пользователем. Для конфигурирования панели инструментов выберите Option>Environment Setup и вкладку General. На ней можно выбрать месторасположение панели (вверху, слева, справа) или, нажав кнопку Layout, добавить или убрать кнопки.
Если навести указатель мыши на какую-либо кнопку, то внизу окна MPLAB в строке состояния появится ее описание. Вот назначение кнопок панели инструментов:
В начало
|
кнопка панели Edit | действие | кнопка панели Debug | действие | |
создать новый файл | запустить программу в непрерывном режиме | |||
открыть файл | остановить выполнение программы | |||
сохранить файл | выполнить очередную команду | |||
вырезать выделение в буфер | выполнить команду, не опускаясь в подпрограммы | |||
копировать выделение в буфер | сброс микроконтроллера | |||
вставить из буфера | модифицировать счетчик программы (PC) | |||
печать | выполнить введенную команду | |||
поиск текстовой последовательности | создать новое окно просмотра | |||
повторить последний поиск | модифицировать регистр, переменную | |||
поиск и замена текстовой последовательности | установить точку останова | |||
повторить поиск и замену текстовой последовательности | установить точки трассировки | |||
вернуться на одно действие назад | установить защелки | |||
сдвинуть строку вправо на расстояние табуляции | очистить все точки останова, трассировки, защелки | |||
сдвинуть строку влево не расстояние табуляции | условная точка останова | |||
переместиться на строку с номером... | остановить трассировку | |||
включить нумерацию строк в файлах | системный сброс | |||
вызвать справку MPLAB | вызвать описание версии MPLAB | |||
кнопка панели Project | действие | кнопка панели User | действие | |
создать проект | открыть проект | |||
открыть проект | сохранить проект | |||
закрыть проект | поиск текстовой последовательности | |||
сохранить проект | вырезать выделение в буфер | |||
редактировать проект | копировать выделение в буфер | |||
компилировать проект | вставить из буфера | |||
компилировать все исходные файлы | сохранить файл | |||
компилировать один исходный файл | запустить программу в непрерывном режиме | |||
установить язык проекта | остановить выполнение программы | |||
вызвать помощь по ассемблеру MPASM | выполнить очередную команду | |||
выполнить команду, не опускаясь в подпрограммы | ||||
сброс микроконтроллера | ||||
окно просмотра регистров общего назначения | ||||
окно просмотра памяти программы | ||||
окно просмотра регистров специального назначения | ||||
создать новое окно просмотра | ||||
компилировать проект | ||||
В начало |
Словарь
Создание проекта и работа с ним
Стандартные расширения для файлов MPLAB
РАСШИРЕНИЕ | НАЗНАЧЕНИЕ ФАЙЛА |
*.ASM | исходный файл на ассемблере |
*.C | исходный файл на С |
*.CFG | файл конфигурации |
*.COD | содержит символьную информацию и объектный код |
*.CSV | файл с записью трассировки (только для MPLAB-ICE 2000) |
*.DAT | файл данных симулятора |
*.ERR | файл обнаруженных ошибок, генерируется ассемблером или С при компиляции |
*.H | добавленный файл на С |
*.HEX | файл с машинными кодами в HEX формате для PIC микроконтроллеров |
*.HLP | файл помощи |
*.INC | добавленный файл на ассемблере |
*.INI | конфигурация MPLAB и установленного языка программирования |
*.KEY | файл схемы кнопок MPLAB |
*.LKR | файл сценария компоновки MPLINK |
*.LST | абсолютный листинг, генерируется ассемблером или С при компиляции |
*.MTC | файл конфигурации языка программирования |
*.PJT | файл содержит главную информацию о проекте |
*.REG | файл, описывающий модификацию регистров при отладке |
*.STI | файл, описывающий входные сигналы на входах микроконтроллера |
*.TB | файл трассировки точек останова |
*.TBR | файл панели инструментов |
*.TPL | временный файл |
*.TRC | файл записи трассировки |
*.TXT | файл записи трассировки (только MPLAB-ICE 2000) |
*.WAT | файл окна просмотра |
В начало
Запуск и отладка проекта
MPLAB-SIM можно использовать для отладки программы при отсутствии внутрисхемного эмулятора. Это накладывает некоторые ограничения:
- невозможность отладки программы с реальными входными сигналами на выводах микроконтроллера.
- невозможность запускать выполнение программы в реальном времени. Скорость выполнения зависит от многих факторов: количества открытых окон и запущенных приложений, скорости самого компьютера и других. Замечу, что для ускорения прохода при отладке подпрограмм различных задержек, можно воспользоваться директивой IFDEF.
Зато к положительным сторонам можно отнести практически никакую стоимость данного инструмента в отличии от нескольких тысяч долларов за эмулятор.
Чтобы запустить отлаживаемую программу в пошаговом режиме (одна команда за одно нажатие) можете выбрать в меню Debug>Run>Step или нажать <F7> или кнопку
на панели инструментов. При этом текущая команда будет выполнена, программный счетчик увеличится и указатель установится на следующую инструкцию (если, конечно, не было команд ветвления, перехода или модификации PC). Кнопка тоже выполняет программу в пошаговом режиме, только подпрограммы будут выполняться за одно нажатие (в непрерывном режиме).Для запуска программы в непрерывном режиме выберите Debug>Run>Run или нажмите <F9> или кнопку
на панели инструментов. Программа будет выполняться до тех пор, пока Вы не прервете работу, выбрав в меню Debug>Run>Halt или нажав <F5> или кнопку или произойдет останов в заранее установленной точке прерывания (breakpoint).В начало