» Главная
eXcode.ru » Статьи » Архитектура ЭВМ » Основы микропроцессорной техники
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 16





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




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    ;Выполнение программы 
                    ;PIC МК
      MOVLW 0x0B    ;Выполнять всегда
      GOTO START
      END 
Метки

В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченный операнд. Все метки должны начинаться в колонке 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
16-ричная 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 ^ err_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 используются для получения одного байта из многобайтного значения, соответствующего метке. Применяются для управления расчетом точек динамического перехода при чтении таблиц и записи программ.

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

Комментарии

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

Расширения файлов, используемые 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:syssysdefs.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
width set 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"

6.2.2. Компоновщик MPLINK

Абсолютный (неперемещаемый) код программы генерируется непосредственно при ассемблировании и располагается в программной памяти в порядке следования операторов программы. Операторы перехода на метку сразу же заменяются соответствующим кодом перехода на адрес метки.

При генерации перемещаемого кода каждая секция программного кода должна предваряться директивой CODE. Окончательное размещение программных кодов, расстановку физических адресов переходов выполняет компоновщик MPLINK.

Компоновщик MPLINK выполняет следующие задачи:

  • распределяет коды и данные, т.е. определяет, в какой части программной памяти будут размещены коды и в какую область ОЗУ будут помещены переменные;
  • распределяет адреса, т.е. присваивает ссылкам на внешние объекты в объектном файле конкретные физические адреса;
  • генерирует исполняемый код, т.е. выдает файл в формате .hex, который может быть записан в память МК;
  • отслеживает конфликты адресов, т.е. гарантирует, что программа или данные не будут размещаться в пространстве адресов, которое уже занято;
  • предоставляет символьную информацию для отладки.

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

6.2.3. Менеджер библиотек MPLIB

Менеджер библиотек позволяет создавать и модифицировать файлы библиотек. Библиотечный файл является коллекцией объектных модулей, которые размещены в одном файле. MPLIB использует объектные модули с именем типа «filename.o» формата COFF (Common Object File Format).

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

6.2.4. Симулятор MPSIM

Симулятор MPSIM представляет собой симулятор событий, предназначенный для отладки программного обеспечения PIC-контроллеров. MPSIM моделирует все функции контроллера, включая все режимы сброса, функции таймера/счетчика, работу сторожевого таймера, режимы SLEEP и Power-down, работу портов ввода/вывода.

MPSIM запускается из командной строки DOS, конфигурируется пользователем и непосредственно применяет выходные данные ассемблера MPASM.

Перед использованием симулятора необходимо отассемблировать исходный файл <file_name>.asm и получить файл объектного кода в формате INHX8M, создаваемый MPASM по умолчанию:

      
MPASM <file_name>.asm <RETURN> 

Чтобы запустить симулятор, необходимо набрать в командной строке

MPSIM<RETURN>.

Вид экрана, получаемого при запуске MPSIM, показан на рис. 6.2. Экран разделен на три части, или окна. В верхнем окне показано текущее состояние моделирования, включая моделируемую программу, тип МК, число выполненных командных циклов и затраченное на них время. Среднее окно используется для вывода содержимого регистров пользователя. Набор регистров и формат выводимых на экран данных определяются файлом MPSIM.INI, который далее будет описан подробнее. Нижнее окно содержит приглашение на ввод команд, а также текущие операции и результат их выполнения.

При запуске симулятор MPSIM начинает искать командный файл MPSIM.INI. Этот текстовой файл создается пользователем и используется для задания всех задействованных в программе параметров.

Вид рабочего окна симулятора MPSIM.
Рис. 6.2. Вид рабочего окна симулятора MPSIM.

Один из примеров файла MPSIM.INI приведен ниже.

           ; MPSIM file for user4 
P84        ;использование МК семейства PIC16C84 
SR X       ;представление данных в 16-ричном формате 
ZR         ;сброс регистров МК в нуль 
ZT         ;сброс таймера в нуль 
RE         ;сброс времени выполнения команды и счетчика циклов 
V W,X,2    ;вывод регистра W в hex формате на два знакоместа 
AD F1,X,2  ;вывод на экран регистра TMR0 в hex формате на два знакоместа 
AD F2,X,3  ;вывод на экран регистра PCL в hex формате на три знакоместа 
AD F3,B,8  ;вывод на экран регистра STATUS в bin формате на восемь знакомест 
AD IOA,X,2 ;вывод на экран регистра TRISA в hex формате на два знакоместа 
AD F5,X,2  ;вывод на экран регистра порта A в hex формате на два знакоместа 
SC 1       ;установка тактовой частоты 1 МГц 
RS         ;сброс МК 
LO user4 
Пример 12.1. Пример файла MPSIM.INI

В представленном файле указаны: тип микроконтроллера, система счисления данных по умолчанию, регистры, содержимое которых выводится на экран, способ представления данных, рабочие параметры. Любая команда, которая исполняется MPSIM, может быть задана в файле MPSIM.INI, который определяет начальное состояние программы. При работе MPSIM создает файл MPSIM.JRN, в котором сохраняются все сведения о нажатии клавиш в процессе работы.

В файле MPSIM.INI допускается вводить комментарии, которые даются после знака «;», но не допускается использование пустых строк.

Основные команды, применяемые в симуляторе MPSIM, приведены в табл. 6.6. Когда эти команды вводятся в сеансе работы с MPSIM, они заносятся в файл MPSIM.JRN, который используется при создании расширенного файла MPSIM.INI. Данный файл можно задействовать для выявления ошибок и обеспечения нормального выполнения программы после исправления кода.

Таблица 6.6. Основные команды симулятора MPSIM.
КомандаПараметрКомментарии
AB -Прерывание текущей сессии
AD Reg[, Radix[, Digits]] Вывод содержимого регистра на экран в указанном формате и заданной системе счисления X, B или D
B [addr] Установка точки останова по текущему или указанному адресу
C [#break] Продолжение выполнения программы с пропуском указанного количества следующих точек останова
DB -Вывод на экран всех активных точек останова
DI [addr1[,addr2]] Вывод на экран фрагмента памяти программ
DR -Вывод содержимого всех регистров
DW [E|D] Разрешение/запрещение функционирования сторожевого таймера
E [addr] Выполнение программы с текущего или указанного адреса
F Reg Вывод на экран содержимого регистра и возможность его редактирования пользователем
GE filename Получение и выполнение командного файла. Это способ загрузки командного файла .INI
GO -Запуск МК и начало выполнения программы
IP [time|step] Ввод входных воздействий в соответствии со значением параметра step в файле Stimulus
LO filename Загрузка в MPSIM файлов .HEX и .COD
M addr Вывод на экран содержимого памяти программ, начиная с адреса «addr» и возможность его редактирования. Ввод «Q» завершает команду.
P device Выбор типа моделируемого МК
Q -Выход из MPSIM и запись команд в файл .JRN
RE -Сброс времени выполнения и счетчика циклов
RS -Сброс моделируемого МК
SE pin|port Вывод на экран состояния указанного вывода или порта и возможность его изменения
SR O|X|D Установка системы счисления по умолчанию
SS [addr] Пошаговое исполнение, начиная с указанного адреса. При отсутствии адреса – исполнение идет с текущего места
ST filename Загрузка файла стимуляции
W Отображение состояния регистра W с возможностью его модификации
ZM addr1,addr2 Очистка памяти программ с адреса addr1 по addr2
ZR -Сброс всех регистров МК
ZT -Сброс таймера/счетчика МК

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

В качестве примера ниже приведен файл для тестирования программы, выполняющей опрос состояния линии 1 порта A.

! test1.STI
STEP  RA1 
   1   1 !Установка на входе RA1 состояния "1"
 200   0 !Поступление на вход RA1 сигнала "0"
1000   1 !Переход сигнала на входе RA1 в "1"
1200   0 !Повторная подача нулевого сигнала

Файл воздействия состоит из множества состояний, для которых задается параметр STEP, определяющий число циклов, в течение которых поддерживается указанное состояние. Он позволяет одновременно подавать сигналы на различные выводы МК. В файле воздействия можно указать любой вывод МК, в том числе и вывод сброса (_MCLR). Для обозначения комментариев используется знак !.

6.3. Практика программирования PIC-микроконтроллеров

6.3.1. Описание лабораторного макета

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

Макет питается от источника стабилизированного напряжения +5В. Тактовая частота МК задается RC-цепью и составляет около 2 МГц. К линии RA0 порта А подключен биполярный транзистор в ключевом режиме, нагруженный на динамик ВА1. Звучание динамика обеспечивается подачей на выход RA0 изменяющегося сигнала в звуковом диапазоне. К линии RA1 порта А подключен светодиод VD2, светящийся при высоком напряжении на выходе. Тумблеры SA1 и SA2, а также кнопки SB1 и SB2 подключены, соответственно, к линиям RA2 и RA3 порта А, а также к линии RA4 порта А и линии RB0 порта В. Исходное состояние кнопок – разомкнутое, что обеспечивает подачу на соответствующие входы МК высокого уровня сигнала.

Линии RB1 – RB7 порта B обслуживают семисегментный индикатор HL1 с общим анодом. Поэтому свечение сегмента индикатора обеспечивается при низком уровне сигнала на соответствующем выходе порта B. Макет также содержит средства программирования и связи с компьютером, которые на схеме не показаны.

Схема лабораторного макета.
Рис. 6.3. Схема лабораторного макета.

6.3.2. Инициализация микроконтроллера макета

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

;******************************************************
;*листинг исходной программы
;******************************************************  
LIST P=16C84, R=HEX    ;директива, определяющая тип
                       ;процессора и систему счисления
                       ;по умолчанию  
;******************************************************
;*описание используемых переменных и назначения адресов 
;*ячеек для хранения переменных пользователя
;******************************************************  
;  INTCON    EQU         0x0B
;  OPTION    EQU         0x81
;  TMR0      EQU         0x01
;  INTF      EQU         1
;  T0IF      EQU         5
   PCL       EQU         0x02
   STATUS    EQU         0x03
   RP0       EQU         5
   PORTA     EQU         0x05
   PORTB     EQU         0x06
   TRISA     EQU         0x05
   TRISB     EQU         0x06
   W         EQU         0
   F         EQU         1
   TEMPA     EQU         0x0C
   TEMPB     EQU         0x0D
   COUNT1    EQU         0x0E
   COUNT2    EQU         0x0F
   COUNT3    EQU         0x10
;******************************************************
;*определение меток замены текста
;******************************************************
   #DEFINE   Z           STATUS,2  ;бит нулевого результата
   #DEFINE   BA1         PORTA,0   ;динамик BA1
   #DEFINE   VD2         PORTA,1   ;светодиод VD2
   #DEFINE   SA1         PORTA,2   ;тумблер SA1
   #DEFINE   SA2         PORTA,3   ;тумблер SA2
   #DEFINE   SB1         PORTA,4   ;кнопка SB1
   #DEFINE   SB2         PORTB,0   ;кнопка SB2
   #DEFINE   HL1_A       PORTB,1   ;индикатор-сегмент A
   #DEFINE   HL1_B       PORTB,2   ;индикатор-сегмент B
   #DEFINE   HL1_C       PORTB,3   ;индикатор-сегмент C
   #DEFINE   HL1_D       PORTB,4   ;индикатор-сегмент D
   #DEFINE   HL1_E       PORTB,5   ;индикатор-сегмент D
   #DEFINE   HL1_F       PORTB,6   ;индикатор-сегмент E
   #DEFINE   HL1_G       PORTB,7   ;индикатор-сегмент F
;******************************************************
;*исполняемая программа
;******************************************************
   ORG    0x000       ;установка начального адреса по
                      ;сбросу
   GOTO   BEGIN       ;переход на начало программы
   ORG    0x005       ;установка начального адреса
                      ;размещения программы
BEGIN 
   CALL   INIT_PORTS  ;вызов подпрограммы
                      ;инициализации портов МК
;*****************************************************
;*программа пользователя
;
;*****************************************************
;
INIT_PORTS                ;подпрограмма инициализации
                          ;портов
   MOVLW    0xFF    
К началу статьи




Добавил: MadvEXДата публикации: 2006-02-18 23:32:30
Рейтинг статьи:3.57 [Голосов 7]Кол-во просмотров: 23680

Комментарии читателей

Всего комментариев: 25

2017-08-03 05:08:48
EugeneGef
wh0cd586095 <a href=http://fluticasone.us.com/>Рђluticasone without prescription</a> <a href=http://medrol247.us.org/>Medrol Pak 4mg</a> <a href=http://zofran.us.com/>zofran</a> <a href=http://zithromaxzpack.us.com/>zithromax 500 mg</a>

2017-08-01 01:23:50
CharlesToups
wh0cd507905 <a href=http://revianorx.us.com/>revia drug</a> <a href=http://clomipramine.us.com/>purchase РЎlomipramine</a> <a href=http://seroquelnorx.us.com/>seroquel 150 xr</a> <a href=http://onlinelipitor.us.com/>lipitor atorvastatin</a> <a href=http://buyviagraonline24.us.org/>viagra for sale canada</a>

2017-07-29 07:48:16
Alfredpaway
wh0cd593785 <a href=http://motilium.us.org/>Generic Motilium</a> <a href=http://clindamycinhcl.us.com/>helpful resources</a> <a href=http://clindamycin.us.org/>Clindamycin OnРґine</a>

2017-07-23 18:44:32
Alfredpaway
wh0cd838982 <a href=http://clomipramine.us.com/>РЎlomipramine</a> <a href=http://buyventolin.us.com/>Buy Ventolin</a> <a href=http://buydiflucanonline.us.com/>diflucan</a>

2017-06-23 12:03:43
GeorgeFub
<a href=http://bentley.chasy-replica.ru>Часы Bentley Mulliner</a>
ЧАСЫ BENTLEY MULLINER «МИЛЛИОНЕР»
http://bentley.chasy-replica.ru
Это нечто большее, чем просто часы, это шедевры высокого часового искусства, которое зародилось в прекрасной Бельгии. Возьмите с собой Часы Bentley Mulliner на деловую встречу, занятия спортом, на отдых или просто носите их в повседневной жизни, и они будут дарить Вам только приятные эмоции, восхищения со стороны женщин и уважение со стороны мужчин! Часы Bentley Mulliner — часы с Мужским характером! Красивые и качественные часы bentley mulliner позволят Вам в считанные секунды располагать собеседника к себе на встречах и важных переговорах.
Купить Часы<a href="http://bentley.chasy-replica.ru">Bentley Mulliner</a> со скидкой 50%
Купить Часы<a href=http://bentley.chasy-replica.ru>Bentley Mulliner</a> со скидкой 50%

2017-06-19 02:15:24
BennyRex
wh0cd326983 <a href=http://sexkuren.com/>potensmedel på nätet</a> <a href=http://amoxicillin2017.us.com/>amoxicillin</a>

2017-06-17 14:54:57
Alfredpaway
wh0cd86891 <a href=http://lasix.biz/>lasix</a> <a href=http://benicar.us/>Benicar</a> <a href=http://viagraonlinewithoutprescription.us.com/>viagra online without prescription</a> <a href=http://fluticasone.us.com/>Рђluticasone</a> <a href=http://motilium.us.com/>cheap motilium</a>

2017-06-13 16:30:48
CharlesToups
wh0cd858152 <a href=http://tamoxifen365.us.com/>tamoxifen citrate</a> <a href=http://prednisolonenorx.us.com/>prednisolone no rx</a> <a href=http://vantin.us.com/>vantin no prescription</a> <a href=http://stromectol365.us.com/>stromectol</a> <a href=http://clomipramine.us.com/>РЎlomipramine NO RX</a>

2017-06-11 18:44:31
BennyRex
wh0cd520660 <a href=http://fluticasone.us.com/>Рђluticasone</a>

2017-06-10 17:51:05
Alfredpaway
wh0cd305465 <a href=http://viagra2016.us.com/>viagra prescription</a> <a href=http://erektionen.se/>billig viagra på nätet</a>
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Что вы думаете о девушках -программистах?
Ни разу таких не встречал
24% (89)
Очень любопытное зрелище
10% (36)
Мне все равно
3% (12)
Это очень сексуально!
6% (21)
Я и есть девушка -программист
11% (40)
Уважаю таких
9% (33)
Считаю это бесмысленным
6% (22)
Где бы мне найти такую?
13% (46)
Я их боюсь :)
6% (22)
Считаю, что это нормально
12% (45)

Проголосовало: 366
- А что это y тебя все вpемя ScanDisk запyскается? Сломалось что-нибyдь?
- Да нет, это обычная pеакция Windows на выключение компьютеpа кнопкой питания.
- Разве ты не знаешь, как пpавильно выключать компьютеp?
- Я-то как pаз знаю, а вот Windows - нет!
Рейтинг: 8/10 (6)
Посмотреть все анекдоты