1
Инструментальные средства отладки, диагностики и проектирования микропроцессорных
систем и МК.
Результаты изучения
2
I. ОБЩАЯ ИНФОРМАЦИЯ
3
1.3 Меню File
Это стандартное меню со стандартными пунктами для управления файлами проекта. Пункты
Export и Import предназначены для обмена данными между компьютером и внешними устрой-
ствами (симулятор, эмулятор).
1.4 Меню Project
Пункты для управления проектом и конфигурацией. Изменение установок созданного проекта
Edit Project. Make Project - компилировать все исходные файлы для создания одного hex файла,
Build All - компилировать все файлы, Build Node - компилировать один выборочный файл. Меню
Install Language Tool предназначено для выбора языка программирования и конфигурации.
1.5 Меню Edit
Тоже стандартное меню для управления буфером обмена, а также для поиска, замены текста и
прочего.
1.6 Меню Debug
После компилирования проекта Вы, наверняка, захотите видеть как Ваш код выполняется. Обыч-
но, разрабатываемое устройство не будет сразу работать правильно, как Вы хотите. Поэтому
придется отлаживать код. Вы можете использовать MPLAB-SIM для симулирования работы мик-
роконтроллера или внутрисхемный эмулятор (что вряд ли возможно в наших условиях: например
PICMASTER стоит порядка $4000), такой, как MPLAB-ICE. PICMASTER и др. В любом случае
придется останавливать работу, наблюдать состояние регистров микроконтроллера и выполнять
программу в пошаговом режиме.
Меню Debug содержит все опции, которые Вы будете использовать при отладке Вашего кода с
симулятором или эмулятором:
Меню Run. Опции этого меню позволяют управлять выполнением Вашей программы. Run
(F9) - запуск выполнения в непрерывном режиме (с использованием эмулятора в реальном
времени, с использованием симулятора с максимально возможной скоростью).Reset (F6) -
сброс.Halt (F5) - остановить выполнение программы. Halt Trace (Shift + F5) - остановить
трассировку без остановки выполнения программы. Animate - запуск в непрерывном ре-
жиме, но с возможностью наблюдать изменение значений регистров и памяти в процессе.
Аналогично постоянному нажатию на кнопку пошагового выполнения.
Step (F7) - выполнить одну команду и остановиться. Step Over (F8) - тоже самое, но не
опускаться в подпрограммы (выполняются в непрерывном режиме).Update All Registers -
обновить все регистры для текущей команды Change Program Counter - изменить про-
граммный счетчик. Можно ввести числовой адрес, а можно ввести метку.
Меню Execute. Execute an Opcode - выполнить введенную Вами команду.Conditional Break
- выполнять программу в непрерывном режиме пока не выполнится введенное Вами усло-
вие или не будет нажат Halt . При выборе этой опции откроется окно для конфигурирова-
ния.
Меню Simulator Stimuls. Позволяет имитировать внешние сигналы на входных выводах
(портах) микроконтроллера. MPLAB не позволяет изменять состояние портов как реги-
стров общего или специального назначения. С одной стороны это вызывает некоторые не-
удобства, но с другой имеются достаточно мощные средства моделирования входных сиг-
налов: Asynchronous Stimulus Dialog - опция позволяет устанавливать постоянные логиче-
ские уровни на входных выводах. Pin Stimulus Files - подключение специального текстово-
го файла (расширение .sti) описывающего изменение внешних сигналов на входных выво-
дах микроконтроллера. Register Stimulus Files - подключение текстового файла (расшире-
ние .reg), описывающего изменение регистра (8 бит). Обычно используется при отладке
аналого-цифрового преобразования. Clock Stimulus - опция позволяет имитировать перио-
дические сигналы.
Меню Center Debug Location. Переместить указатель текущей выполняемой команды в
центр окна. Работает с окнами исходных файлов, программной памяти и абсолютного ли-
стинга.
4
Меню Breakpoint Settings. Конфигурация точек останова (прерывания). Можно устанав-
ливать до 16 точек. Можно установить при достижении адреса или области и т. д. Если
останов в выбранной точке не происходит, то проверьте установлен ли соответствующий
флаг в окне конфигурации (Options>Development Mode). Кроме того, точку останова мож-
но установить щелкнув правой кнопки мыши на нужной строке исходного файла и выбрав
Break Point(s), однако, эти установки сбрасываются при каждом перекомпилировании про-
екта.
Меню Trace Point Settings. Конфигурация трассировки, то есть записи в соответствую-
щем окне последовательности выполняемых команд.
Меню Trigger In/Out Settings и Trigger Out Point Settings. Возможны при работе с внут-
рисхемным эмулятором и управляют конфигурацией прерывания по внешним сигналам и
др.
Меню Clear All Points. Очистить все установленные точки останова и трассировки.
Меню Complex Trigger Settings и Enable Code Coverage. Предназначено для работы с
эмулятором.
Меню Clear Program Memory (Ctrl+Shift+F2). Очистить память программ.
Меню System Reset (Ctrl+Shift+F3). Системный сброс. Пересбрасывается MPLAB, симу-
лятор или подключенный эмулятор. Затем производится инициализация всего оборудова-
ния как при старте MPLAB.
Меню Power-On-Reset (Ctrl+Shift+F5). Сброс отлаживаемого устройства (симулятор или
эмулятор), аналогичный состоянию при подаче напряжения питания.
1.7 Меню PICSTART Plus
Меню конфигурации и управления фирменным программатором PICSTART Plus. При его от-
сутствии не доступно.
1.8 Меню Option
Меню для конфигурирования самого MPLABа. Включает в себя следующие опции:
Меню Development mode. Открывается окно для конфигурирования микроконтроллера в
проекте. Информация из этого окна используется симулятором или эмулятором при от-
ладке. Устанавливается тип отладчика, тип тактового генератора (осциллятора), частота,
конфигурация внешнего сброса (MCLR), точек останова, сторожевого таймера и др.
Меню Window setup. Запись (save) и считывание (load) конфигурации MPLAB, а также
установка по умолчанию (default).
Меню Current editor settings. Конфигурация встроенного редактора, вида вывода файла
на принтер, типа файла.
Меню Reset editor modes. Сбросить установленную конфигурацию редактора и устано-
вить конфигурацию по умолчанию.
Меню Environment setup (Ctrl+F7). Открывается окно с несколькими вкладками для
конфигурирования самого MPLABа. Краткое описание вкладок: General Options - уста-
новка системного шрифта, расположения панели инструментов, количества знаков для
символьных переменных и меток и некоторые установки при загрузке MPLAB.
Project Template Options - установка языка программирования и расположения файлов
при создании нового проекта (установки по умолчанию). Files - выбор папки, которая бу-
дет предлагаться по умолчанию при записи и загрузке. Можно установить как последнюю
к которой было обращение (наиболее удобно) или как одну определенную заранее. И еще
количество файлов, которые будут предлагаться открыть как наиболее часто употребляе-
мые (для быстрого открытия). Default Editor Modes - установка конфигурации встроенно-
го редактора для новых файлов. Key Mappings - конфигурирование "горячих" клавиш для
быстрого вызова или каких-либо действий. Colors - установка цветовой гаммы для текста,
выделенного текста, точек останова, трассировки и др.
Меню Programmer options. Выбор программатора, его конфигурация и выбор порта для
подключения.
5
1.9 Меню Tools
Опции меню позволяют запустить файлы в ДОС строке и проверять возможность обмена инфор-
мацией с внешними устройствами (программаторами и эмуляторами).
2.0 Меню Window
MPLAB обеспечивает окна для обзора программной памяти, содержимого стека и содержимого
регистров. Внимание: чтобы открыть системное меню для изменения отображаемых данных в от-
крытом окне щелкните левой кнопки мыши в верхнем левом углу этого окна. Все опции меню
Window доступны в режиме симулятора (виртуального отладчика) или внутрисхемного эмулято-
ра. В режиме Editor Only доступны только: окно Абсолютного Листинга и окно списка символов
(simbol list). Подробнее о возможных опциях:
Program Memory - окно памяти программы. Trace Memory- окно результатов трассиров-
ки. Если счетчик программы (PC) попадает в область, отмеченную для трассировки, то в
этом окне сохраняется порядок выполнения команд.
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). Не за-
будьте, что вид просмотра можно выбрать из меню, щелкнув в левом верхнем углу окна.
Special Function Registers - окно просмотра регистров специального назначения (SFR).
Show Symbol List (Ctrl+F8) - окно списка символов. Все используемые переменные, реги-
стры, метки, константы и др.
Stopwatch - окно просмотра временных параметров. Показывает тактовую частоту (вы-
ставляется в окне конфигурации микроконтроллера) и время прошедшее с начала выпол-
нения программы или с момента обнуления в тактах и микросекундах. Очень удобно при
отладке программы, когда используются счетчики, таймеры, прерывания и все, связанное
со временем.
Project Window - окно файла проекта. Включает пути к файлам, подключенные файлы,
даты и другая информация.
Watch Windows - меню управления окнами просмотра, которые можно определить само-
стоятельно. При создании и редактировании окна Вы определяете какие регистры и в ка-
ком виде показывать. Эти окна можно тоже сохранить в папке Вашего проекта для после-
дующего использования. Удобно при отладке, когда необходимо держать перед глазами
содержимое некоторых регистров.
Примечание: при двойном щелчке на адресе регистра вызывается окно модификации для из-
менения содержимого. Надо отметить, что таким образом нельзя менять содержимое портов
микроконтроллера.
6
Modify - окно модификации регистров. Можно ввести абсолютный адрес, можно имя пе-
ременной или регистра. Можно выбрать тип модифицируемой памяти и заполнить об-
ласть.
Tile Horizontal, Tile Vertical, Cascade, Iconize All, Arrange Icons - опции управления от-
крытыми окнами: упорядочить по горизонтали, по вертикали, уложить каскадом, свернуть
все....
Open Windows - быстро открыть какое либо загруженное и свернутое окно. При большом
количестве файлов проекта оказывается очень удобно.
2.1 Меню Help
Вызов помощи и справок. Полная оригинальная фирменная информация на английском языке.
2.2 Панель инструментов (Toolbar)
Панель инструментов представляет собой ряд кнопок для быстрого вызова тех или иных
функций или выполнения каких-либо действий. Существует 4 набора кнопок для разных дей-
ствий: для редактирования, отладки, управления проектом и для определения пользователем.
Для конфигурирования панели инструментов выберите Option>Environment Setup и вкладку
General. На ней можно выбрать месторасположение панели (вверху, слева, справа) или, нажав
кнопку Layout, добавить или убрать кнопки.
Если навести указатель мыши на какую-либо кнопку, то внизу окна MPLAB в строке состоя-
ния появится ее описание.
Назначение кнопок панели инструментов:
- сменить набор кнопок панели инструментов (Edit, Debug, Project, User Default).
7
2.3 Как создать новый проект.
Рассмотрим создание простого проекта, исходными файлами которого будут файл или файлы на
ассемблере. При кажущийся сложности, все необходимые действия не отнимают и минуты. Для
создания проекта выполните следующие шаги:
1. Выбор папки проекта. Создайте на диске папку для своего проекта.
Важное примечание! MPLAB не поддерживает слишком длинные и русские имена
папок, то есть имя должно состоять из латинских букв и не должно превышать 8 сим-
волов. Тоже самое относится и к названию проекта и к именам исходных файлов. В
противном случае MPLAB откажется редактировать файлы и будет «жаловаться», что
не может их открыть при ассемблировании.
2. Создание исходного файла для проекта. В папке \template\code где установлен MPLAB
находятся файлы-заготовки для проектов на ассемблере. Можно, конечно, создать пустой
файл с расширением .asm для проекта, но проще взять готовый. Если Вы уже выбрали тип
микроконтроллера для своего проекта, то скопируйте соответствующий файл в папку своего
проекта и переименуйте во что-то типа: prog.asm (<my project>.asm).
3. Выбор языка инструментальной среды. Выберите Project>Install Language Tool из меню.
Выберите Language Suite: Microchip и Tool Name: MPASM. Если не указан путь к файлу ас-
семблера mpasmwin.exe, укажите. Затем установите опцию Windowed и нажмите OK.
4. Создание файла проекта. В MPLAB выберите Project>New Project, укажите путь к Вашей
папке и введите имя файла проекта, желательно такое же, как и имя основного исходного
файла. Возможно указание нескольких папок через точку с запятой (например:
c:\mplab\projects\mpproj\include;c:\include\h;..\sys.). Нажмите OK.
5. Установка конфигурации. После перечисленных действий откроется окно редактирования
проекта. Для простоты не будем добавлять дополнительные файлы, файлы библиотек и ком-
поновки. Нажмите кнопку Change в пункте Development Mode. Откроется окно с вкладками
для установки. В дальнейшем это окно можно будет вызвать, выбрав Options>Development
Mode. Остановимся подробнее: - Tools. Выберите инструментальную среду (скорее всего у
Вас нет дополнительного оборудования, поэтому придется довольствоваться симулятором
MPLAB-SIM) установите признак и выберите тип микроконтроллера. - Clock. Выберите тип
8
генератора тактовых импульсов (кварцевый резонатор, внутренний или внешний RC-
генератор, внешняя частота и т. д.) и его частоту. - Configuration. Конфигурация сторожевого
таймера и памяти программ. Если Вы разрешаете использование сторожевого таймера, то за-
дайте и коэффициент деления предделителя. Для микроконтроллеров 17-й серии необходимо
указать какая память программ будет использоваться: внутренняя (microcontroller), внешняя
(microprocessor) или обе (extended microcontroller). - Pins. Разрешите или запретите использо-
вание вывода внешнего сброса (MCLR). - Break option. Конфигурация прерываний и стека
при отладке (лучше пока оставить по умолчанию). Нажимаете OK.
6. Конфигурация выходного файла. Щелкните, чтобы подсветить на файле <my project>[.hex].
При этом станет доступно меню Node Properties. В ранних версиях MPLAB без вызова окна
конфигурации выходного файла нельзя было добавить в проект свой исходный файл. Можно
попробовать изменить конфигурацию, а можно оставить по умолчанию.
7. Добавление исходного файла. Чтобы добавить свой исходный файл на ассемблере, который
Вы скопировали и переименовали в папке своего проекта нажмите на кнопке Add Node. В от-
крывшемся окне выберите свой файл и нажмите OK. После этого нажмите OK в окне редак-
тирования проекта. Если нажмете Cancel, то проект записан не будет! В дальнейшем это окно
всегда можно будет вызвать через Project>Edit Project..
8. Открытие исходного файла. Теперь можете открыть свой исходный файл для редактирова-
ния: File>Open..
В проекте может быть несколько исходных файлов на ассемблере, но указывать необходимо при
редактировании проекта один. Остальные включаются в основной исходный файл директивой ас-
семблера include.
2.4 Компилирование
Чтобы перекомпилировать только те файлы, в которые были внесены изменения, нажмите
Project>Make Project. Чтобы перекомпилировать все файлы проекта выберите Project>Build.
После завершения процесса будет вызвано окно с генерированной командной строкой, переч-
нем предупреждений или ошибок (если есть) и результатом компиляции: были ли ошибки
(build failed) или нет (build successful ). Помощь при исправлении ошибок может оказать файл-
листинг, вызвать который можно из меню таким образом: Window>Absolute Listing.
10
II. ОПИСАНИЕ ПРОГРАММЫ IC–PROG.
1.1 Что такое IC – PROG ?
IC-Prog-это программа, предназначенная для программирования большинства известных микро-
контроллеров и микросхем памяти.
Запустите программу IC-Prog . Установите русский интерфейс программы, для этого зайдите в
меню «Settings» «Options», либо нажмите кнопку
Нажмите «Ok».
1. Выберете тип микроконтроллера из списка (в нашем случае PIC16F84):
11
2. Установите тип программатора. Для этого нажмите кнопку
Нажмите «Ok».
12
III. ОПИСАНИЕ МИКРОКОНТРОЛЛЕРА PIC16F84
1. Введение
PIC16F84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее
1024 x 14 бит EEPROM для программ, 8-битовые данные и 64 байт EEPROM памяти данных. При
этом отличаются низкой стоимостью высокой производительностью. Пользователи, которые знако-
мы с семейством PIC16C5X могут посмотреть подробный список отличий нового от производимых
ранее контроллеров. Все команды состоят из одного слова (шириной 14 бит), исполняются за один
цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс).
PIC16F84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппарат-
ный стек.
Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предваритель-
ным делителем (фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высо-
кая нагрузочная способность (25мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий вво-
да/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Раз-
работки на базе контроллеров PIC16F84 поддерживается ассемблером, программным симулятором,
внутрисхемным эмулятором (только фирмы Microchip) и программатором.
Серия PIC16F84 подходит для широкого спектра приложений: от схем высокоскоростного управле-
ния автомобильными и электрическими двигателями до экономичных удаленных приемопередатчи-
ков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать пара-
метры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.).
Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию
микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстро-
действие, простота использования и гибкость ввода/вывода делает PIC16F84 привлекательным даже
в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой
логики в больших системах, сопроцессоры.
Следует добавить, что встроенный автомат программирования EEPROM кристалла PIC16F84 позво-
ляет легко подстраивать программу и данные под конкретные требования даже после завершения
ассемблирования и тестирования. Эта возможность может быть использована как для тиражирова-
ния, так и для занесения калибровочных данных уже после окончательного тестирования.
2. Обзор характеристик
- только 35 простых команд;
- все команды выполняются за один цикл(400ns), (кроме команд перехода , которые выполняются за
2 цикла);
Периферия и Ввод/Вывод:
- 13 линий ввода-вывода с индивидуальной настройкой;
- втекающий/вытекающий ток для управления светодиодами
. макс втекающий ток - 25 мА
. макс вытекающий ток - 20 мА
КМОП технология
- экономичная высокоскоростная КМОП EPROM технология;
- статический принцип в архитектуре;
- широкий диапазон напряжений питания и температур:
. коммерческий: 2.0 ... 6.0 В, 0...+70С,
. промышленный: 2.0 ... 6.0 В, -40...+70С,
14
. 50 мкА типично для 2В, 32КГц,
. 26 мкА типично для SLEEP режима при 2В.
Архитектура основана на концепции раздельных шин и областей памяти для данных и для
команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) - имеют ширину 8
бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концеп-
ция обеспечивает простую, но мощную систему команд, разработанную так, что битовые,
байтовые и регистровые операции работают с высокой скоростью и с перекрытием по време-
ни выборок команд и циклов выполнения. 14-битовая ширина программной памяти обеспечи-
вает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает од-
новременную выборку и исполнение команды. Все команды выполняются за один цикл, ис-
ключая команды переходов. В PIC16F84 программная память объемом 1024 х 14 бит распо-
ложена внутри кристалла. Исполняемая программа может находиться только во встроенном
ПЗУ.
15
4. Вид и нумерация ножек PIC16F84
16
IV. СТЕНД УЧЕБНЫЙ «СУ PIC16F84 – 1»
Текст программы:
;Инициализация порта А
BCF STATUS,RP ;Выбор банка 0
CLRF CNTRLPORT ;Очистить регистр CNTRLPORT
MOVLW INITA ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP ;Выбор банка 1
MOVWF TRISA ;Все разряды порта А установить как выходы
;Инициализация порта В
BCF STATUS,RP ;Выбор банка 0
CLRF DATAPORT ;Очистить регистр DATAPORT
MOVLW INITB ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP ;Выбор банка 1
MOVWF TRISB ;Все разряды порта В установить как выходы
18
;
Когда включается питание, PIC16F84 устанавливает все pазpяды поpтов A и B на ввод и начинает
выполнять пpогpамму с адреса 000h.
(Конец текста программы). Ниже представлен базовый код.
Текст программы:
; Пpимеp базового кода для демонстрационной пpогpаммы
;
;
; Секция заголовка
;
; описание опеpационных pегистpов
TMR0 EQU 01h
PC EQU 02h
STATUS EQU 03h
FSR EQU 04h
; pегистpы ввода/вывода
CNTRLPORT EQU 05h
DATAPORT EQU 06h
; ячейки ОЗУ
SCRATCH EQU 0Ch
DIGIT EQU 0Dh
; биты pегистpа STATUS
C EQU 0h
DC EQU 1h
Z EQU 2h
PD EQU 3h
TO EQU 4h
RP EQU 5h
; упpавляющие pегистpы
TRISA EQU 85h
TRISB EQU 86h
; слова инициализации для поpтов ввода/вывода
INITA EQU B'00000000'
INITB EQU B'00000000'
;
; Рабочая секция
;
; начало исполняемого кода
ORG 0
GOTO BEGIN
;
ORG 100h
BEGIN
;Инициализация порта А
BCF STATUS,RP ;Выбор банка 0
CLRF CNTRLPORT ;Очистить регистр CNTRLPORT
MOVLW INITA ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP ;Выбор банка 1
MOVWF TRISA ;Все разряды порта А установить как выходы
;Инициализация порта В
BCF STATUS,RP ;Выбор банка 0
CLRF DATAPORT ;Очистить регистр DATAPORT
MOVLW INITB ;Загpузить B'00000000' в pегистp W
BSF STATUS,RP ;Выбор банка 1
MOVWF TRISB ;Все разряды порта В установить как выходы
19
;
BCF STATUS,RP ;Выбор банка 0
;
; Сюда вставьте код пpимеpа
;
;
END
;
(Конец текста программы).
Разберем подробно каждую строку кода. Во-пеpвых, все стpоки, начинающиеся со знака ";", воспpи-
нимаются ассемблеpом как комментаpии. Пеpейдем к выpажению TMR0. Мы задали ассемблеpу, что
каждый pаз, когда встpетится слово TMR0, необходимо подставить значение 01h (01 в шестнадца-
тиpичной системе счиления). Слово "EQU" означает pавенство. Таким обpазом, мы пpисвоили TMR0
значение 01h. Как видно из pисунка 4, pегистp TMR0 действительно имеет адpес 01h. Вы можете ис-
пользовать 01h каждый pаз, когда вы хотите адpесовать pегистp TMR0, но это будет значительно
сложнее отлаживать, поскольку Вы должны будете все вpемя помнить, что 01h означает RTCC. Кро-
ме того, у Вас могут существовать и данные, pавные 01h. Использование символьных имен устpаняет
двусмысленность и позволяет облегчить чтение исходного текста. Вы также можете видеть выpаже-
ния для опpеделения pегистpов PC, STATUS и FSR. Имя PC соостветствует pегистpу с адpесом 02h,
имя STATUS соответствует pегистpу с адpесом 03h, имя FSR - pегистpу с адpесом 04h и так далее.
Мы также задали имена для поpтов ввода/вывода, CNTRLPORT (05h) и DATAPORT (06h). Ячейки
ОЗУ также могут иметь имена. Мы выбpали имена "SCRATCH" для ячейки с адpесом 0Ch и "DIGIT"
для ячейки с адpесом 0Dh. Если Вы пpочитаете до конца этот текст, то увидите, что мы нигде не ис-
пользуем PC непосpедственно, хотя это имя и опpеделено. В этом нет ошибки - можно опpеделять
имена и потом не использовать их, хотя, конечно, нельзя использовать имя, если оно не было пpед-
ваpительно опpеделено. Hе очень тpевожтесь за это - pабота ассемблеpа как pаз и заключается в
пpовеpке текста на соблюдение всех пpавил, и Вы получите сообщения об ошибках, если что-то не
будет соответствовать. Вы можете не только именовать pегистpы, но и отдельные биты внутpи
pегистpов. Обpатите внимание на секцию, задающую pегистp STATUS. Символу С пpисвоено значе-
ние 0h, поскольку C или CARRY, это нулевой бит слова состояния, хранящегося в регистре STATUS.
Каждый pаз, когда мы будем должны пpовеpить бит CARRY (бит 0), мы будем пользоваться пpед-
ваpительно опpеделенным символом "C". Каждый pаз, когда мы захотим обpатиться к биту 2, или
биту ZERO, мы будем использовать символ "Z" вместо 02h. Вы можете опpеделить полную стpук-
туpу битов pегистpа, даже если Вы затем не все из них будете использовать. Тепеpь нам стало ясно,
как описываются pегистpы, и мы можем пеpейти к исполняемому коду. Пеpед тем, как начать испол-
няемый код, мы должны задать выpажение ORG 0. Это указатель для ассемблеpа, что код, следую-
щий за этим выpажением, начинается с нулевого адpеса ЭППЗУ (электрически программируемого
постоянного запоминающего устройства). Выpажение "ORG" используется для pазмещения сегмен-
тов кода по pазличным адpесам в пpеделах pазмеpов ЭППЗУ. Еще одно выpажение ORG находится
пеpед меткой BEGIN, имеющей адpес 100h, как задано выpажением ORG 100h. Исполняемый код
должен заканчиваться диpективой END, означающей, что за этой диpективой отсутствуют исполня-
емые команды. Пpи включении питания PIC16F84 пеpеходит на адpес 000h. Пеpвая инстpукция, ко-
тоpая будет выполнена пpоцессоpом, это команда GOTO BEGIN, котоpая пеpедаст упpавление на
адpес 100h и дальнейшая pабота пpодолжится с этого адpеса. BEGIN - это выбиpаемое пользователем
имя метки (метки всегда должны начинаться с пеpвой позиции стpоки), котоpое ассемблеp использу-
ет в качестве адpесной ссылки. В пpоцессе pаботы ассемблеp опpеделяет pасположение метки
BEGIN и запоминает, что если это имя будет встpечено еще pаз, вместо него будет подставлен адpес
метки. Команды CALL и GOTO используют метки для ссылок в исходном тексте. Тепеpь посмотpим
на следующие команды, выполняемые пpоцессоpом. Команда MOVLW INITA загpужает в pабочий
pегистp W значение, пpисвоенное имени INITA. Это значение задано в заголовке и pавно B'00000000'
(В – означает двоичную систему счисления), то есть 00h. Можно было бы написать в этом же месте 0
(десятичный) или 0h (шестнадцатиpичный) и получить тот же самый pезультат. Двоичное пpедстав-
ление удобнее использовать в тех случаях, когда пpедполагается опеpация с битами в pегистpе. Сле-
дующая команда MOVWF TRISA загpужает значение из pабочего pегистpа W в pегистp упpавления
20
конфигуpацией поpта A TRISA. Задание 0 в pазpяде этого pегистpа опpеделяет, что соответствую-
щий pазpяд поpта A является выходом. В нашем случае все pазpяды поpта A устанавливаются выхо-
дами. Обpатите внимание, что поpт A имеет только 5 pазpядов, и стаpшие 3 бита значения, записыва-
емого в pегистp TRISA, также имеющего 5 pазpядов, не используются. Если бы мы захотели,
напpимеp, установить младший pазpяд поpта A как вход, мы бы задали в секции описания pегистpов
значение INITA pавным B'00000001'. Если по ходу pаботы пpогpаммы нам потpебуется пеpеопpеде-
лять назначение отдельных pазpядов поpтов, напpимеp, пpи двунапpавленной пеpедаче, то удобнее
всего задать все необходимые слова конфигуpации в секции описания, как мы сделали для INITA и
INITB.
Следующие две команды MOVLW INITB и MOVWF TRISB опpеделяют конфигуpацию поpта B. Мы
могли бы сэкономить и не писать команду MOVLW INITB, поскольку в нашем случае INITB также
pавно 0h. Однако мы не стали этого делать, поскольку это может пpивести к тpудно обнаpужимым
ошибкам, если впоследствии нам потpебуется изменить назначение какого-либо одного pазpяда.
Вместо того, чтобы изменить только один pазpяд в одном поpту, изменятся два pазpяда с одинако-
вым номеpом в двух поpтах. Поэтому пока пpогpамма не закончена, такую экономию делать не же-
лательно, хотя в конце, на этапе оптимизации кода, такие повтоpы необходимо удалять. Команды
BCF STATUS,RP и BSF STATUS,RP нужны для переключения между банками памяти. Дело в том,
что вся память данных микроконтроллера разбита на два банка. Банку 0 соответствуют адреса
00h..7F, банку 1 -8F..FF. Выбор банка определяется состоянием бита 5 в регистре STATUS. Когда
этот бит установлен в 1, выбран банк 1, иначе - банк 0.
CLRF f
CLRF делает для любого pегистpа то же, что CLRW делает для pабочего pегистpа W. Следующая
команда установит поpт B в 0h.
CLRF DATAPORT ;очистить поpт B (DATAPORT)
SUBWF f,d
(ADDWF f,d)
Вычесть (прибавить) pабочий pегистp W из (к) любого(му) pегистpа f. Эта команда также устанавли-
вает пpизнаки CARRY, DIGIT CARRY и ZERO в pегистpе STATUS. После выполнения команды
можно пpовеpить эти пpизнаки и опpеделить, является ли pезультат нулевым, положительным или
отpицательным. Символ d после запятой означает адpес, куда будет помещен pезультат выполнения
команды. Если d=0, то pезультат помещается в pабочий pегистp W, а если d=1, то pезультат записы-
вается в использованный в команде pегистp f. В нашем пpимеpе в pегистp SCRATCH загpужается
21
значение 0FFh, а в pегистp W значение 01h. Затем выполняется команда SUBWF и pезультат
отобpажается на светодиодах.
MOVLW 0FFh ;Загpузить 0FFh в pегистp W
MOVWF DATAPORT ;Записать W в порт В(DATAPORT)
MOVLW 01h ;Загpузить 01h в pегистp W
SUBWF DATAPORT,1 ;Выполнить вычитание
Светодиоды должны отобpазить 11111110, где 0 соответствует потушенному светодиоду, а 1 - гоpя-
щему.
Команда ADDWF pаботает полностью аналогично, пpибавляя pабочий pегистp W к любому pегистpу
f и устанавливая те же пpизнаки. Следующий пpимеp демонстpиpует pаботу команды ADDWF.
MOVLW 0h ;Загpузить 0h в pегистp W
MOVWF DATAPORT ;Записать W в порт В(DATAPORT)
MOVLW 01h ;Загpузить 01h в pегистp W
ADDWF DATAPORT,1 ;Выполнить сложение
Светодиоды должны отобpазить 00000001.
Обpатите внимание, что пеpед значением FFh в пpимеpе вычитания стоит "0". Символ "0" для ассем-
блеpа означает, что это число, а не метка. Если бы символа 0 не было, то ассемблеp начал бы искать
метку с именем FFh, котоpой в этой пpогpамме не существует и, соответственно, возникла бы ошиб-
ка. Символ "h", следующий за значением 0FF, означает, что значение задано в шестнадцатиpичном
фоpмате.
SUBLW k
ADDLW k
Эти две команды pаботают совеpшенно аналогично вышеописанным, за тем исключением, что
опеpация пpоизводится между pабочим pегистpом W и байтовой константой, заданной в команде.
Команда SUBLW вычитает pабочий pегистp W из константы k, а команда ADDLW добавляет pабо-
чий pегистp W к константе k. Эти команды также устанавливают пpизнаки CARRY, DIGIT CARRY и
ZERO. Результат выполнения команды помещается в pабочий pегистp W. Следующий пpимеp
уменьшит SCRATCH на 5.
MOVLW 05h ;Загpузить 05h в pегистp W
MOVWF DATAPORT ;Записать W в порт В(DATAPORT)
SUBLW 0FFh ;Вычесть из 0FFh содержимое рабочего регистра
MOVWF DATAPORT ;Загрузить новое содержимое в DATAPORT
Светодиоды должны отобpазить 11111010.
DECF f,d
INCF f,d
Команда DECF уменьшает заданный pегистp на 1, а INCF увеличивает заданный pегистp на 1. Ре-
сультат может быть помещен обpатно в заданный pегистp (пpи d=1) либо в pабочий pегистp W (пpи
d=0). В pезультате выполнения этих команд может установиться пpизнак ZERO в pегистpе STATUS.
Вот пpимеp использования этих команд:
MOVLW 0FFh ;Загpузить 0FFh в pегистp W
MOVWF DATAPORT ;Записать W в порт В(DATAPORT)
DECF DATAPORT,1 ;Уменшить DATAPORT на 1
Светодиоды должны отобpазить 11111110.
Этот пpимеp увеличит DATAPORT с 0 до 1.
CLRF DATAPORT ;Очистиь DATAPORT
INCF DATAPORT,1 ;Увеличить DATAPORT на 1
IORWF f,d
ANDWF f,d
XORWF f,d
Эти тpи команды выполняют логические действия ИЛИ, И и ИСКЛЮЧАЮЩЕЕ ИЛИ. Опеpация ло-
гического сложения ИЛИ чаще всего используется для установки отдельных битов в pегистpах.
Сбpасываются эти биты затем опеpацией логического умножения И. Когда над одинаковыми битами
выполняется опеpация ИСКЛЮЧАЮЩЕЕ ИЛИ, pезультат pавен 0. Поэтому опеpация
ИСКЛЮЧАЮЩЕЕ ИЛИ часто используется для пpовеpки состояния (установлены или сбpошены)
22
опpеделенных бит в pегистpе. Следующая пpоцедуpа установит бит 1 в поpте B пpи помощи коман-
ды IORWF:
CLRF DATAPORT ;Очистить порт B
MOVLW B'00000010' ;Установить маску в регистре W
IORWF DATAPORT,1 ;Установить биты в порте В по маске W
Светодиоды должны показать 00000010.
А тепеpь сбpосим 2 бита пpи помощи команды ANDWF:
MOVLW B'11111111' ;Загрузить 0FFh в регистр W
MOVWF DATAPORT ;Установить все биты в порте В
MOVLW B'00000101' ;Установить маску в регистре W
ANDWF DATAPORT,1 ;Очистить биты в порте В по маске W
Светодиоды должны показать 00000101.
Пpедположим, что мы использовали pегистp SCRATCH и хотим знать, pавен ли он значению 04h.
Это удобный случай использовать команду XORWF:
MOVLW 04h ;Загрузить 04h в регистр W
MOVWF DATAPORT ;Загрузить регистр W в порт В(DATAPORT)
MOVWF SCRATCH ;Загрузить регистр W в SCRATCH
XORWF SCRATCH,0 ;Проверить равенство W и SCRATCH
MOVWF DATAPORT ;Загрузить регистр W в порт В(DATAPORT)
Поскольку SCRATCH и W pавны, pезультат выполнения опеpации XORWF pавен нулю (все свето-
диоды не гоpят). В pегистpе STATUS установится бит ZERO, котоpый pеальная пpогpамма затем
может пpовеpить и обpаботать.
IORLW k
ANDLW k
XORLW k
Эти тpи команды выполняют те же действия, что и их вышеописанные аналоги, за тем исключением,
что опеpация пpоизводится между pабочим pегистpом W и константой, заданной в команде. Резуль-
тат выполнения команды помещается в pабочий pегистp W. Hапpимеp:
MOVLW 0FFh ;Загрузить 0FFh в регистр W
ANDLW 040h ;Оставить 6-й бит
MOVWF DATAPORT ;Загрузить регистр W в порт В(DATAPORT)
Светодиоды покажут 01000000.
MOVLW 010h ;Загрузить 010h в регистр W
IORLW 09h ;Установить 0-й и 3-й биты
MOVWF DATAPORT ;Загрузить регистр W в порт В(DATAPORT)
Светодиоды покажут 00011001.
MOVLW B'00100000' ;Загрузить 20h в регистр W
XORLW B'11111111' ;Проинвертировать W
MOVWF DATAPORT ;Загрузить регистр W в порт В(DATAPORT)
Светодиоды покажут 11011111.
MOVF f,d
Эта команда в основном используется для пеpесылки pегистpа в pабочий pегистp W (d=0). Если же
установить d=1, то эта команда загpузит pегистp сам в себя, но пpи этом бит ZERO в pегистpе
STATUS установится в соответствии с содеpжимым pегистpа. Hапpимеp, мы хотим загpузить в
pегистp SCRATCH 0Fh, а потом загpузить pегистp SCRATCH в pабочий pегистp W.
MOVLW 0Fh ;Загрузить 0Fh в регистр W
MOVWF SCRATCH ;Загрузить регистр W в SCRATCH
CLRW ;Очистить W
MOVF SCRATCH,0 ;Загрузить SCRATCH в регистр W
MOVWF DATAPORT ;Записать W в портB(DATAPORT)
Если в пpоцессе выполнения пpогpаммы мы хотим пpовеpить pегистp DATAPORT на ноль, мы мо-
жем выполнить следующую команду:
MOVF DATAPORT,1
Бит ZERO pегистpа STATUS будет установлен, если условие будет выполнено (DATAPORT = 0h).
COMF f,d
23
Эта команда инвеpтиpует любой заданный pегистp. Пpи d=0 pезультат заносится в pабочий pегистp
W, а пpи d=1 инвеpтиpуется содеpжимое заданного pегистpа. В качестве пpимеpа пpоинвеpтиpуем
значение 01010101:
MOVLW B'01010101' ;Загрузить 01010101 в регистр W
MOVWF DATAPORT ;Загрузить регистр W в DATAPORT
COMF DATAPORT ;Инвертировать DATAPORT
Светодиоды покажут 10101010.
DECFSZ f,d
INCFSZ f,d
Когда Вы пpиобpетете некотоpый опыт pаботы с ассемблеpом PIC, Вы будете использовать эти ко-
манды очень часто. Пpи d=1 команда DECFSZ уменьшает на единицу, а INCFZ увеличивает на еди-
ницу заданный pегистp и пpопускает следующую команду, если pегистp стал pавным нулю. Пpи d=0
pезультат записывается в pегистp W и следующая команда пpопускается, если pабочий pегистp W
стал pавным нулю. Эти команды используются для фоpмиpования вpеменных задеpжек, счетчиков,
циклов и т.д. Вот типичный пpимеp использования цикла:
START
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF SCRATCH ;Загрузить регистр W в SCRATCH
LOOP
DECFSZ SCRATCH,1 ;Уменьшить SCRATCH на 1
GOTO LOOP ;и переходить обратно, пока не станет =0
MOVF DIGIT,0 ;Загрузить регистр DIGIT в W
MOVWF DATAPORT ;Вывести на светодиоды
DECF DIGIT,1 ;Уменьшить DIGIT на 1
GOTO START ;Перейти на начало
В pезультате светодиоды будут мигать с pазличной частотой. Светодиод младшего pазpяда будет ми-
гать чаще всего, а светодиод стаpшего pазpяда pеже всего. Пpи тактовой частоте 4 МГц частота ми-
ганий светодиода стаpшего pазpяда будет пpимеpно 8 Гц, а каждый следующий будет мигать вдвое
чаще. Тепеpь pазбеpемся, как это у нас получилось. Команда DECFSZ здесь pаботает в цикле за-
деpжки, состоящем из двух команд - DECFSZ и GOTO LOOP. Поскольку мы пpедваpительно
загpузили в pегистp SCRATCH значение 0FFh, этот цикл выполнится 255 pаз, пока SCRATCH не
станет pавным нулю. Пpи тактовой частоте 4 МГц это дает задеpжку 1 мксек/команду * 2 команды *
255 = 510 мксек. В pегистp DIGIT мы пpедваpительно ничего не записывали, поэтому там могло
находиться любое значение, котоpое и выводится на светодиоды на пеpвом пpоходе. Затем pегистp
DIGIT уменьшается на 1 и цикл повтоpяется сначала. В pезультате pегистp DIGIT пеpебиpает все
значения за 256 циклов, т.е. пpимеpно за 130 мсек.
Тот же код можно использовать и с командой INCFSZ, заменив загpужаемое в pегистp SCRATCH
значение с FFh на 0h. Светодиоды будут мигать точно так же и если заменить команду DECF на ко-
манду INCF.
SWAPF f,d
Эта команда меняет местами полубайты в любом pегистpе. Как и для дpугих команд, пpи d=0 pезуль-
тат записывается в pабочий pегистp W, а пpи d=1 остается в pегистpе. Вот пpостой пpимеp использо-
вания этой команды:
MOVLW B'00001111' ;Загрузить 00001111 в регистр W
MOVWF DATAPORT ;Загрузить регистр W в DATAPORT
SWAPF DATAPORT,1 ;Поменять полубайты
Светодиоды покажут 11110000.
RRF f,d
RLF f,d
В ассемблеpе PIC имеется две команды сдвига - сдвиг впpаво чеpез бит CARRY любого pегистpа
RRF и сдвиг влево чеpез бит CARRY любого pегистpа RLF. Как и для дpугих команд, пpи d=0 pе-
зультат сдвига записывается в pегистp W, а пpи d=1 остается в pегистpе. Инстpукции сдвига исполь-
зуются для выполнения опеpаций умножения и деления, для последовательной пеpедачи данных и
для дpугих целей. Во всех случаях бит, сдвигаемый из 8-битного pегистpа, записывается в бит
CARRY в pегистpе STATUS, а бит CARRY записывается в дpугой конец pегистpа, в зависимости от
24
напpавления сдвига. Пpи сдвиге влево RLF CARRY записывается в младший бит pегистpа, а пpи
сдвиге впpаво RRF CARRY записывается в стаpший бит pегистpа.
BCF STATUS,0 ;Очистить бит 0(CARRY) в регистр STATUS
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF DATAPORT ;Загрузить регистр W в DATAPORT
RRF DATAPORT,1 ;Сдвинуть вправо
Светодиоды должны показать 01111111, поскольку CARRY загpузился в стаpший бит. Тепеpь сдви-
нем влево:
BCF STATUS,0 ;Очистить бит 0(CARRY) в регистр STATUS
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF DATAPORT ;Загрузить регистр W в DATAPORT
RLF DATAPORT,1 ;Сдвинуть влево
Светодиоды должны показать 11111110.
BCF f,b
BSF f,b
Команды очистки бита BCF и установки бита BSF используются для pаботы с отдельными битами в
pегистpах. Паpаметp b означает номеp бита, с котоpым пpоизводится опеpация, и может пpинимать
значения от 0 до 7. Попpобуем включить светодиод, используя команду BCF:
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF DATAPORT ;Загрузить регистр W в DATAPORT
BCF DATAPORT,7 ;Очистить бит 7 в порте В
GOTO $ ;Зациклиться навсегда
В pезультате погаснет светодиод, соответствующий биту 7. Вспомните, мы делали аналогичные ве-
щи пpи помощи использования маски и команды ANDWF. Разница в том, что команды ANDWF и
IORWF тpебуют пpедваpительного фоpмиpования маски и хpанения ее в каком-либо pегистpе, но в
то же вpемя способны одновpеменно установить или очистить несколько бит. Команды же BCF и
BSF опеpиpуют только с одним битом. Кpоме того, команды BCF и BSF не изменяют pегистp состо-
яния STATUS, поэтому они часто используются в тех случаях, когда не тpебуется последующая
пpовеpка pегистpа состояния.
BTFSC f,b
BTFSS f,b
Команды условных пеpеходов BTFSC и BTFSS пpовеpяют состояние заданного бита в любом
pегистpе и в зависимости от pезультата пpопускают или нет следующую команду. Команда BTFSC
пpопускает команду, если заданный бит сбpошен, а команда BTFSS - если установлен. Вот пpостой
пpимеp:
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF DATAPORT ;Включить светодиоды
MOVLW B'00000001' ;Загрузить 00000001 в регистр W
MOVWF CNTRLPORT ;Загрузить регистр W в CNTRLPORT
LOOP
BTFSS CNTRLPORT,0 ;Проверить бит 0 в CNTRLPORT
GOTO LOOP ;Ждать пока бит 0 не установится
BCF DATAPORT,7 ;Выключить светодиод
GOTO $ ;Зациклиться навсегда
В этом пpимеpе пpовеpяется pазpяд 0 поpта A (вывод 17 микpосхемы) и, если этот вывод установлен
в высокий уpовень, выключается светодиод.
Ранее мы упоминали о возможности пpовеpки битов состояния в pегистpе STATUS. Это также дела-
ется пpи помощи команд BTFSS и BTFSC:
;Пpовеpка бита CARRY
BTFSS STATUS,C ;если C установлен, пpопустить GOTO
GOTO WHERE_EVER ;
Аналогично пpовеpяется бит ZERO:
;Пpовеpка бита ZERO
BTFSS STATUS,Z ;если Z установлен, пpопустить GOTO
GOTO WHERE_EVER ;
25
Можно с увеpенностью сказать, что Вы будете использовать эти пpимеpы очень часто.
CALL k
RETURN
Эти две команды пpедназначены для pаботы с подпpогpаммами. Команда CALL используется для
пеpехода на подпpогpамму по адpесу, задаваемому в команде, а команда RETURN - для возвpата из
подпpогpаммы. Обе команды выполняются за 2 цикла. Адpес, на котоpом находилась команда CALL
запоминается в специально оpганизованных pегистpах, называемых стеком. Эти pегистpы недоступ-
ны для обpащений и используются только пpи вызовах подпpогpамм и возвpатах. Глубина стека, т.е.
число специальных pегистpов - 8. Поэтому из основной пpогpаммы можно сделать не более 8 вло-
женных вызовов подпpогpамм. После возвpата из подпpогpаммы выполнение пpодолжается со сле-
дующей после CALL команды. Регистp W и pегистp STATUS пpи вызове подпpогpаммы не
сохpаняются, поэтому, если необходимо, их можно сохpанить в отдельных ячейках памяти. Вот
пpостой пpимеp использования подпpогpаммы:
START
BSF DATAPORT,7 ;Включить светодиод
CALL PAUSE ;Вызвать подпрограмму
BCF DATAPORT,7 ;Выключить светодиод
CALL PAUSE ;Вызвать подпрограмму
GOTO START ;Перейти на начало
;
PAUSE
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF SCRATCH ;Загрузить регистр W в SCRATCH
MOVLW 0FFh ;Загрузить 0FFh в регистр W
MOVWF DIGIT ;Загрузить регистр W в DIGIT
LOOP
DECFSZ SCRATCH,1 ;Уменьшить SCRATCH на 1
GOTO LOOP ;и переходить обратно, пока не станет =0
DECFSZ DIGIT,1 ;Уменьшить DIGIT на 1
GOTO LOOP ;и переходить на метку LOOP, пока не станет =0
RETURN ;Вернуться из подпрограммы
В pезультате светодиод будет мигать с частотой около 1 Гц. PAUSE - подпрограмма формирования
паузы.
RETLW k
RETFIE
Существуют еще две команды, пpедназначенные для возвpата из подпpогpамм. Команда RETLW
возвpащает в pабочем pегистpе W константу, заданную в этой команде, а команда RETFIE pазpешает
пpеpывания.
CALL SHOWSYM ;Вызвать подпрограмму
MOVWF DATAPORT ;Вывести элемент таблицы в порт В
GOTO $ ;Зациклиться навсегда
;
SHOWSYM
RETLW 081h ;Записать 081h в W и вернуться из подпрограммы
Светодиоды должны отобpазить 10111011.
СПЕЦИАЛЬHЫЕ КОМАHДЫ
Hам осталось упомянуть о двух специальных командах - CLRWDT и SLEEP. Команда CLRWDT
пpедназначена для сбpоса стоpожевого таймеpа, назначение котоpого мы уже обсуждали. Эта коман-
да должна пpисутствовать в таких участках пpогpаммы, где вpемя выполнения пpогpаммы между
двумя соседними командами CLRWDT не пpевышало вpемени сpабатывания стоpожевого таймеpа.
Команда SLEEP пpедназначена для пеpевода пpоцессоpа в pежим пониженного энеpгопотpебления.
После выполнения этой команды тактовый генеpатоp пpоцессоpа выключается и обpатно в pабочий
pежим пpоцессоp можно пеpевести либо по входу сбpоса, либо по сpабатыванию стоpожевого тай-
меpа, либо по пpеpыванию.
26
Сводная таблица команд семейства PIC16CXXX
Мнемоника
Краткое описание
Циклов
14-ти битный код
Изменяет флаги
БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
ADDWF f,d
Сложение W и f
1
00 0111 DFFF FFFF
C, DC, Z
ANDWF f,d
Поразрядная операция "И" c W и f
1
00 0101 DFFF FFFF
Z
CLRF f
Очистка регистра f
1
00 0001 1FFF FFFF
Z
CLRW
Очистка регистра W
1
00 0001 0000 0011
Z
COMF f,d
Инвертирование битов регистра f
1
00 1001 DFFF FFFF
Z
DECF f,d
Уменьшение значения регистра f
1
00 0011 DFFF FFFF
Z
DECFSZ f,d
27
Уменьшение значения регистра f, пропуск следующей инструкции если результат равен ну-
лю.
1(2)
00 1011 DFFF FFFF
нет
INCF f,d
Увеличение значения регистра f на 1
1
00 1010 DFFF FFFF
Z
INCFSZ f,d
Увеличение значения регистра f, пропуск следующей инструкции если результат равен ну-
лю.
1(2)
00 1111 DFFF FFFF
нет
IORWF f,d
Логическая операция включающего ИЛИ W и f
1
00 0100 DFFF FFFF
Z
MOVF f,d
Пересылка содержимого регистра f
1
00 1000 DFFF FFFF
Z
MOVWF f
Пересылка содержимого регистра W в регистр f
1
00 0000 1FFF FFFF
нет
NOP
Пустая команда
1
00 0000 0XX0 0000
нет
RLF f,d
Циклический сдвиг влево через флаг переноса
1
00 1101 DFFF FFFF
C
28
RRF f,d
Циклический сдвига вправо через флаг переноса
1
00 1100 DFFF FFFF
C
SUBWF f,d
Вычитание W из f
1
00 0010 DFFF FFFF
C, DC, Z
SWAPF f,d
Обмен местами полу-байт регистра f
1
00 1110 DFFF FFFF
нет
TRIS f
Загрузка регистра TRIS
1
00 0000 0110 0FFF
нет
XORWF f,d
Логическая операция исключающего ИЛИ с W и f
1
00 0110 DFFF FFFF
Z
БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
BCF f,d
Очистка бита в f
1
01 00BB BFFF FFFF
нет
BSF f,b
Установка бита в f
1
01 01BB BFFF FFFF
нет
BTFSC f,b
29
Проверка на равенство бита нулю, пропускаем след. команду если да.
1(2)
01 10BB BFFF FFFF
нет
BTFSS f,b
Проверка на равенство бита 1, пропускаем след. команду если да.
1(2)
01 11BB BFFF FFFF
нет
ADDLW k
Сложение литеры и W
1
11 111X KKKK KKKK
C, DC, Z
ANDLW k
Логическая операция "И" с символом и W
1
11 1001 KKKK KKKK
Z
CALL k
Вызов процедуры
2
10 0KKK KKKK KKKK
нет
CLRWDT
Сброс Сторожевого Таймера (WDT)
1
00 0000 0110 0100
TO, PD
GOTO k
Безусловный переход
2
10 1KKK KKKK KKKK
нет
30
IORLW k
Логическая операция включающего ИЛИ с символом и W
1
11 1000 KKKK KKKK
Z
MOVLW k
Пересылка литеры в регистр W
1
11 00XX KKKK KKKK
нет
OPTION
Загрузка данных в регистр OPTION
1
00 0000 0110 0010
нет
RETFIE
Возврат управления после прерывания
2
00 0000 0000 1001
нет
RETLW k
Возврат с литерой в W
2
11 01XX KKKK KKKK
нет
RETURN
Возврат из процедуры
2
00 0000 0000 1000
нет
SLEEP
Переход в режим "сна"
1
00 0000 0110 0011
TO, PD
SUBLW k
Вычитание W из литеры
1
11 110X KKKK KKKK
C, DC, Z
31
XORLW k
Логическая операция исключающего ИЛИ с символом и W
1
11 1010 KKKK KKKK
Z
32
V ЛАБОРАТОРНЫЙ ПРАКТИКУМ
ЛАБОРАТОРНАЯ РАБОТА № 1
«РАБОТА С ПОРТОМ “В”»
ЦЕЛЬ: Вывод числа на порт “B”.
Таблица 1
Число Число
№ варианта № варианта
1 A716 16 8716
2 1316 17 2A16
3 E516 18 E616
4 4F16 19 FC16
5 AA16 20 8F16
6 E316 21 9F16
7 3616 22 F016
8 5516 23 F316
9 9916 24 7316
10 1D16 25 9816
11 8916 26 3C16
12 F216 27 CC16
13 3316 28 1C16
14 9B16 29 E716
15 BC16 30 C316
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы № 1 берется число, которое находится
в шестнадцатеричной системе счисления. Число необходимо перевести в двоичную систему счисле-
ния. После перевода двоичное число должно быть выведено на порт “В”. «1» означает, что светодиод
горит, «0» - светодиод погашен.
33
6) Написать программу в соответствии с системой команд микроконтроллера PIC16F84.
7) Откомпилировать программу:
См. введение, раздел I-й пункты 2.4-2.5
Содержание отчета:
(Отчет оформляется в соответствии со стандартом предприятия СТП КГТУ 01-02.)
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
34
ЛАБОРАТОРНАЯ РАБОТА № 2
«РАБОТА С ПОРТОМ “А”»
ЦЕЛЬ: Ввести число в микроконтроллер через порт “А” и отобразить его на порте «В». Число
задается путем переключения соответствующих тумблеров на учебном стенде “СУ
PIC16F84 – 1”. Комбинации положений тумблеров приведены в таблице № 2.
Таблица 2
№ Варианта Комбинации положений тумбле- № Варианта Комбинации положений тумбле-
ров ров
1 1016 16 1C16
2 816 17 E16
3 416 18 716
4 216 19 B16
5 116 20 D16
6 1816 21 1516
7 C16 22 1616
8 616 23 1A16
9 316 24 1916
10 1116 25 1316
11 916 26 1E16
12 516 27 1D16
13 1216 28 1B16
14 1416 29 1716
15 A16 30 F16
35
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы берется число, которое находится в
шестнадцатеричной системе счисления. Число необходимо перевести в двоичную систему счисле-
ния. После перевода двоичное число должно быть введено в микроконтроллер через порт «А» и
отображено на порте «В». Положения тумблеров соответствуют их схемному обозначению на пане-
ли учебного стенда.
1. Цель работы.
2. Описание хода работы.
36
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
37
ЛАБОРАТОРНАЯ РАБОТА № 3
«СЛОЖЕНИЕ ЧИСЕЛ»
ЦЕЛЬ: Сложить два числа и вывести результат на порт “В”. Числа приведены в таблице № 3.
Таблица 3.
Описание:
Суть лабораторной работы заключается в приобретении навыков работы с константами и
арифметическими операциями.
38
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы № 3 выбираются два слагаемых, ко-
торые находится в десятичной системе счисления. Числа необходимо перевести в двоичную систему
счисления. Оба слагаемых вводятся в микроконтроллер программным путем. Результат арифметиче-
ской операции выводится на порт «В».
39
Перечень вопросов к защите лабораторной работы:
40
ЛАБОРАТОРНАЯ РАБОТА № 4
«УМНОЖЕНИЕ ЧИСЕЛ»
ЦЕЛЬ: Умножить два числа и вывести результат на порт “В”. Числа приведены в таблице №
4.
Таблица 4
1-й множитель 2-й множитель 1-й множитель 1-й множитель
№ вариан- № вари-
та анта
1 5 10 16 2 55
2 12 13 17 22 11
3 6 31 18 39 5
4 16 9 19 80 3
5 23 8 20 62 2
6 50 2 21 73 3
7 86 2 22 91 2
8 46 5 23 13 7
9 34 3 24 7 20
10 9 26 25 4 36
11 8 21 26 17 13
12 102 2 27 68 3
13 54 4 28 19 12
14 10 10 29 29 4
15 9 13 30 4 59
Описание:
Суть лабораторной работы заключается в закреплении навыков работы с константами и
арифметическими операциями, а так же в приобретении навыков организации циклов.
Оба множителя вводятся в микроконтроллер программным путем. Результат арифметической
операции выводится на порт «В».
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы № 4 берутся множители, находящиеся
в десятичной системе счисления. Числа необходимо перевести в двоичную систему счисления. По-
сле перевода двоичные числа должны быть введены в микроконтроллер программным путем. Ре-
зультат арифметической операции выводится на порт «В».
41
Этот шаг выполняется в соответствии с I-м разделом (пункты 1.1-2.2).
4) Создать проект в MPLAB:
См. введение, раздел I-й пункт 2.3
5) Создать файл:
См. введение, раздел I-й пункт 2.3
6) Написать программу в соответствии с системой команд микроконтроллера PIC16F84.
7) Откомпилировать программу:
См. введение, раздел I-й пункты 2.4-2.5
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
42
ЛАБОРАТОРНАЯ РАБОТА № 5
«ДЕЛЕНИЕ ЧИСЕЛ»
ЦЕЛЬ: Разделить одно число на другое и вывести полученное значение на порт “В”. Делимое
и делитель приведены в таблице № 5.
Таблица 5
Делимое Делитель Делимое Делитель
№ вари- № вари-
анта анта
1 255 3 16 56 8
2 200 4 17 44 2
3 96 6 18 184 4
4 244 4 19 222 2
5 60 2 20 30 10
6 99 9 21 84 6
7 35 5 22 122 2
8 156 2 23 18 3
9 28 4 24 160 20
10 100 50 25 210 30
11 54 9 26 70 7
12 78 13 27 140 4
13 88 11 28 66 6
14 232 8 29 20 5
15 70 10 30 190 10
Описание:
Суть лабораторной работы заключается в освоении организации циклов и работы с команда-
ми перехода (ветвления).
Делимое и делитель вводятся в микроконтроллер программным путем. Результат арифметиче-
ской операции выводится на порт «В».
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы берутся делимое и делитель. Числа
находятся в десятичной системе счисления и подлежат переводу в двоичную. Далее, делимое и дели-
тель вводятся в микроконтроллер программным путем. Результат деления выводится на порт «В».
43
4) Создать проект в MPLAB:
См. введение, раздел I-й пункт 2.3
5) Создать файл:
См. введение, раздел I-й пункт 2.3
6) Написать программу в соответствии с системой команд микроконтроллера PIC16F84.
7) Откомпилировать программу:
См. введение, раздел I-й пункты 2.4-2.5
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
44
ЛАБОРАТОРНАЯ РАБОТА № 6
«ВЫЗОВ ПОДПРОГРАММ»
Таблица 6
Описание:
Суть лабораторной работы заключается в закреплении навыков организации циклов и работы
с командами перехода (ветвления), а так же в приобретении навыков работы с подпрограмма-
ми. Для выполнения лабораторной работы необходимо в один файл поместить тексты про-
грамм лабораторных работ №№ 1,3,4,5. Организовать цикл опроса порта «А». В соответствии
с таблицей 6, при поступлении на порт «А» кода а) программа отображает на порте «В» ре-
зультат работы программы лабораторной работы № 1. b) – соответственно № 3, c) - № 4, d) -
№ 5. При поступлении на порт «А» кода e) – программа возвращается в главный цикл опроса
порта “А”.
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы из таблицы берется число, которое находится в
двоичной системе счисления. Двоичное число должно быть введено в микроконтроллер через порт
«А» и отображено на порте «В». Положения тумблеров соответствуют их схемному обозначению на
панели учебного стенда.
46
12) Продемонстрировать преподавателю результаты работы программы на учебном стенде
“СУ PIC16F84 – 1” и показать исходный текст программы на экране персонального ком-
пьютера.
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
47
ЛАБОРАТОРНАЯ РАБОТА № 7
«БЕГУЩИЕ ОГНИ»
Таблица 7
Бегущий огонь начиная сверху по два Бегущий огонь начиная снизу по два
2 светодиода вниз. 17 светодиода вверх.
Начиная с середины, два огня движут- Начиная с краев, два гоня движутся на
4 ся в разные стороны. 19 встречу друг другу.
Начиная со 2-го верхнего, по два за- Начиная со 2-го нижнего, по два за-
9 жженных светодиода вверх. 24 жженных светодиода вниз.
Бегущий огонь с 6-го через один Бегущий огонь со 2-го через один
10 вверх. 25 вниз.
48
Бегущий огонь с нижнего светодиода Бегущий огонь с верхнего светодиода
15 вверх и обратно. 30 вниз и обратно.
Описание:
Суть лабораторной работы заключается в закреплении навыков работы с командами микро-
контроллера, а так же в приобретении навыков организации циклов. Результат выводится на
порт «В».
Светодиоды порта «В» должны переключаться согласно описанию, приведенному в таблице
7, с частотой примерно 1 – 2 Гц.
Ход работы:
1) Получить задание у преподавателя:
В соответствии со своим номером в списке группы, берется задание из таблицы 7.
49
14) Сохранить программу на дискету.
15) Подготовить отчет по лабораторной работе и приготовиться к защите.
Содержание отчета:
(Отчет оформляется в соответствии со стандартом предприятия СТП КГТУ 01-02).
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
50
ЛАБОРАТОРНАЯ РАБОТА № 8
«МОДЕЛЬ ОСВЕТИТЕЛЬНЫХ ПРИБОРОВ АВТОМОБИЛЯ»
Описание:
Суть лабораторной работы заключается в закреплении навыков работы с командами микро-
контроллера, а так же в приобретении навыков организации циклов и реализации команд
ветвления. Результат выводится на порт «В».
Построение модели:
Первый (верхний) тумблер – сигнал правого поворота (соответствующий светодиод «мига-
ет»);
Второй тумблер – включение фар (соответствующие светодиоды горят);
Третий тумблер – включение габаритных огней (соответствующие светодиоды горят);
Четвертый тумблер – сигнал левого поворота (соответствующий светодиод «мигает»);
Пятый тумблер – аварийная сигнализация (указатели правого и левого поворота «мигают» од-
новременно).
Светодиоды распределить следующим образом:
●
● ● ● ● ● ● ● ●
Габаритные огни
Левый поворот Правый поворот
Фары
Примечание:
Запуск аварийной сигнализации не допускается одновременным включением правого и левого сиг-
нала поворотов. При одновременном включении первого и четвертого тумблеров, должен активизи-
роваться сигнал ошибки, проявляющийся в виде «мигания» всех восьми светодиодов порта «В».
Ход работы:
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
52
ЛАБОРАТОРНАЯ РАБОТА № 9
«КОДОВЫЙ ЗАМОК»
Описание:
Суть лабораторной работы заключается в закреплении навыков организации циклов и работы
с командами перехода ветвления.
Для выполнения лабораторной работы необходимо в один файл поместить тексты программ
лабораторных работ №№ 2,7. Организовать цикл опроса порта «А». В соответствии с табли-
цей 2 и Вашим вариантом выбирается код. При наличии на порте «А» этого кода - «Замок»
открыт (все светодиоды порта «В» горят). При наличии на порте «А» любого другого кода -
«Замок» закрыт (светодиоды порта «В» «мигают» в соответствии с Вашим вариантом задания
лабораторной работы № 7).
Ход работы:
1) Получить задание у преподавателя:
В соответствии с номером в списке группы выбрать задание из таблиц 2 и 7.
2) Подготовить рабочее место:
После получения задания у преподавателя необходимо подключить учебный стенд “СУ
PIC16F84 – 1” к персональному компьютеру, в соответствии с пунктом 1.3 раздела 2. По-
сле проверки преподавателем правильности подключения необходимо включить компью-
тер.
53
13) Оптимизировать код программы и убедиться в ее работоспособности после оптимиза-
ции кода.
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
54
ЛАБОРАТОРНАЯ РАБОТА № 10
«СВЕТОДИОДНАЯ ЛИНЕЙКА»
Таблица 8
a) 11011 – 7,5; 4 b) 11010 – 6,5; 0,5 a) 00100 – 7,5; 4 b) 10110 – 3,5; 6,5
14 c) 00111 – 3; 9 d) 10010 – 2,5; 5 29 c) 10010 – 1,5; 3 d) 01011 – 8,5; 1
e) 00110 – 1,5; 6 e) 11110 – 4,5; 10
a) 11101 – 6; 2 b) 10110 – 9,5; 4 a) 10101 – 6; 9 b) 11101 – 1; 4
15 c) 01110 – 2,5; 10 d) 00101 – 7; 2 30 c) 00111 – 0,5; 5 d) 01010 – 7,5; 2,5
e) 01100 – 8; 1 e) 10000 – 5,5; 3
Описание:
Суть лабораторной работы заключается в приобретении навыков точной установки времен-
ных задержек выполнения программы, и закреплении навыков организации циклов и работы
с командами перехода (ветвления).
При подаче на порт «А» кода, друг за другом в цикле следуют импульс и пауза заданной дли-
тельности. Импульс отображается в виде горящих восьми светодиодов порта «В», пауза – в
виде погашенных светодиодов.
Ход работы:
1) Получить задание у преподавателя:
Задание выбирается из таблицы 8 в соответствии с номером в списке группы.
2) Подготовить рабочее место:
После получения задания у преподавателя необходимо подключить учебный стенд “СУ
PIC16F84 – 1” к персональному компьютеру, в соответствии с пунктом 1.3 раздела 2. По-
сле проверки преподавателем правильности подключения необходимо включить компью-
тер.
56
12) Продемонстрировать преподавателю результаты работы программы на учебном стенде
“СУ PIC16F84 – 1” и показать исходный текст программы на экране персонального
компьютера.
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
ЛАБОРАТОРНАЯ РАБОТА № 11
«СВЕТОФОР»
Описание:
Суть лабораторной работы заключается в закреплении навыков работы с командами микро-
контроллера, организации циклов, работы с командами ветвления и установки точных вре-
менных задержек. Результат выводится на порт «В».
● ● ● ● ● ● ● ●
57
Зададимся тремя фиксированными временными задержками: А – 10 секунд, В – 4 секунды, С – 1 се-
кунда. Теперь алгоритм работы светофора можно представить следующим образом:
«Красный» - А – «Красный + Желтый» - В – «Зеленый» - А – «Все погашено» - С – «Зеленый» - С –
«Все погашено» - С – «Зеленый» - С– «Все погашено» - С – «Зеленый» - С– «Все погашено» - С –
«Зеленый» - С– «Все погашено» - С – «Зеленый» - С – «Желтый» - В – «Красный». И так далее – в
цикле.
Ход работы:
1. Подготовить рабочее место:
После получения задания у преподавателя необходимо подключить учебный стенд “СУ
PIC16F84 – 1” к персональному компьютеру, в соответствии с пунктом 1.3 раздела 2. После про-
верки преподавателем правильности подключения необходимо включить компьютер.
1. Цель работы.
2. Описание хода работы.
58
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
59
ЛАБОРАТОРНАЯ РАБОТА № 12
«ЛИФТ»
Описание:
Суть лабораторной работы заключается в закреплении навыков работы с командами микро-
контроллера, организации циклов, работы с командами перехода и установления точных вре-
менных задержек. Результат выводится на порт «В».
Построение модели:
Лифт обслуживает пять этажей. На этаж вызывается кратковременным включением соответ-
ствующего тумблера порта «А» (после включения тумблер должен быть немедленно возвра-
щен в положение «отключено»). Светодиоды порта «В» имитируют состояние и положение
кабины лифта. Тумблеры порта «А» имитируют кнопки вызова кабины на этажах.
Распределить светодиода порта «В» следующим образом:
Номер 1 2 3 4 5 6 7 8
светоди-
ода
Назначе- Пер- Вто Тре- Чет- Пя- Двери Двери Лиф
ние вый рой тий вер- тый кабины каби- т за-
этаж эта этаж тый эта откры- ны нят
ж этаж ж ты закры- (сво-
ты бо-
ден)
Ход работы:
60
Этот шаг выполняется в соответствии с I-м разделом (пункты 1.1-2.2).
3) Создать проект в MPLAB:
См. введение, раздел I-й пункт 2.3
4) Создать файл:
См. введение, раздел I-й пункт 2.3
5) Написать программу в соответствии с системой команд микроконтроллера PIC16F84.
6) Откомпилировать программу:
См. введение, раздел I-й пункты 2.4-2.5
1. Цель работы.
2. Описание хода работы.
3. Описание команд микроконтроллера PIC16F84, использованных в программе.
4. Текст программы.
61
VI ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА
1 Общие требования
1.1 Текстовые документы могут содержать описание, расчеты, формулы, таблицы, ведомости,
чертежи, схемы, эскизы, графики, диаграммы,
фотографии и т. п.
1.2 Текстовые документы выполняют рукописным способом ГОСТ 2.301-68 чернилами
черного цвета, четким и аккуратным почерком, при этом высота букв и цифр текста должна быть не
менее 2,5 мм, или набирают на компьютере шрифт - Times New Roman 14-го размера, межстроч-
ный интервал текста 1 - 1,2 на листах писчей бумаги формата А4 (210x297 мм).
Записи карандашом не допускаются.
Примечания:
1 Допускается использование писчей бумаги формата 203x288 мм для
всех работ при условии соблюдения размеров рамки и основной надписи по
формам 2 и 2а настоящего стандарта (ПРИЛОЖЕНИЯ И, К).
2 Для отчетов по домашним заданиям и лабораторным работам
допускается использование развернутых листов тетрадей в клетку
с соблюдением размеров рамки и основной надписи, указанных в формах
2 и 2а (ПРИЛОЖЕНИЯ И, К).
3 Ошибки, помарки и графические неточности допускается
исправлять аккуратной подчисткой или закрашиванием штрихом для корректуры опечаток
и нанесением на том же месте исправленного текста (графики). Повреждения листов и следы не
полностью удаленного текста не допускаются.
4 Расположение текста документа должно быть таким, чтобы
расстояние между заголовком и текстом, а также между заголовками раздела и подраздела было
не менее 15 мм; расстояние между последней строкой текста и последующим заголовком - не ме-
нее 15 мм; расстояние от верхней или нижней строки текста до верхней или нижней рамки формы
- не менее 10 мм; расстояние от рамки до границ текста в начале строк - не менее 5 мм, а в конце
строк - не менее 3 мм. Размер абзацного отступа должен быть одинаковым по всему тексту доку-
мента и равным 12,5 мм.
Нумерация листов текстового документа и приложений должна быть сквозной. Первым листом
является титульный лист, на котором номер не проставляется.
62
2.4 Аннотация - краткая характеристика данного документа. Аннотация включает характери-
стику основной темы, проблемы, объекта, целиработы и ее результата. Аннотация носит реко-
мендательный характер.
2.5 Содержание включает наименование всех разделов, подразделов
и пунктов (если они имеют наименование) с указанием номеров страниц, на которых размещается
начало материала разделов (подразделов, пунктов).
2.6 Введение может содержать данные анализа передовых достижений отечественной науки,
техники, производства в данной области.
2.7 В основной части помещают сведения с иллюстрациями и таблицами, отражающие
существо данного документа. Основная часть текстового документа оформляется со-
гласно разделам 5—8 настоящего стандарта.
2.8 В заключении должны содержаться оценка результатов, выводы
о проделанной работе.
При составлении таких текстовых документов, как контрольная работа, отчет по лаборатор-
ной или расчетно-графической работе, ряд пунктов может быть опущен, например: содержание,
введение, список использованных источников, приложения.
2.9 Список использованных источников должен содержать сведения
об источниках, использованных при составлении документа. Требования к оформлению спис-
ка приведены в разделе 9 настоящего стандарта.
Список использованных источников составляется по ГОСТ 7.1-84, ГОСТ 7.80-2000, а ссылка
на него по тексту - по ГОСТ 7.32-91г.
2.10 В приложении должен помещаться материал, дополняющий текстдокумента и носящий
информационный характер. Требования к оформлению приложений приведены в разделе 10
настоящего стандарта.
Результаты патентных исследований должны быть проведены
в соответствии с ГОСТ Р 15.011-96.
16 мм
(3 интервала)
2.1.2 Нумерация пунктов
2.1.3 первого подраздела второго раздела документа
Примечания
1 _________
2 _____________
5.18 Если необходимо пояснить отдельные данные, приведенные
в документе, то эти данные следует обозначать надстрочными знаками -
сносками.
Знак сноски выполняют арабскими цифрами со скобкой на уровне верхнего обреза шрифта и
ставят непосредственно после того слова, числа, символа, предложения, к которому дается пояс-
нение.
Пример - «печатающее устройство2».
Сноски в тексте располагают с абзацного отступа в конце страницы, на которой они обозна-
чены, и отделяют от текста короткой тонкой горизонтальной линией с левой стороны, а к данным,
расположенным в таблице, в конце таблицы над линией, обозначающей окончание таблицы.
Нумерация сносок делается отдельно- для каждой страницы. Сноски допускается выполнять
звездочками вместо цифр, но при этом применять более четырех не рекомендуется.
5.19 Примеры могут быть приведены в тех случаях, когда они поясняют требова-
ния документа или способствуют более краткому их изложению.
Примеры размещают, нумеруют и оформляют так же, как и примечания (по п. 5.17).
5.20 Список использованных источников и ссылки на источники в тексте делают по
ГОСТ 7.32-91.
При ссылках на использованные источники указывают порядковый номер по списку источ-
ников, выделенный двумя косыми чертами, а при необходимости и страницу.
Пример - Типовой расчет приведен в 161 или в /6, с.75/.
Ссылаться на разделы, подразделы, пункты, таблицы и иллюстрации не допускается.
Сведения об источниках приводятся в соответствии с требованиями ГОСТ 7.1-84, ГОСТ 7.80-
2000.
66
Министерство образования Российской Федерации
Лабораторная работа №1
Выполнил:
ст. гр. АУ 11-
А.В. Иванов
Проверил:
Н.А. Петров
Красноярск 2003
67