ПСМПС (лаб)
.pdf91
PUBLIC PUT_CRLF, PUT_STRING, PUT_EOS
PUBLIC ASCBIN, BINASC
PUBLIC GETTOKEN, GETNUMBER
При необходимости использовать публикуемые символы в других файлах проекта применяется директива EXTRN, в которой перечисляются символьные имена, задекларированные в других модулях. Директива EXTRN имеет следующий формат:
EXTRN <class> : <type> (<symbol> , <symbol> … )
Здесь <class> – определяет класс памяти символьного имени <type> – тип данных символьного имени и <symbol> – имя. Например:
EXTRN CODE (PUT_CRLF), DATA (BUFFER)
EXTRN NUMBER (TABLE_SIZE)
Еще одной директивой, используемой для связывания модулей проекта, служит директива NAME. Она позволяет определить имя текущего модуля. Например:
NAME PARSERMODULE
2.6.5. Директивы управления адресом
Директивы управления адресом позволяют управлять адресным счетчиком и регистровыми банками. Директива ORG устанавливает новое значение счетчика. Инструкция или резервируемая ячейка, указанная после директивы ORG, начинается с адреса, указанного в этой директиве. Например:
ORG 100H
ORG RESTART
ORG EXTI1
ORG ($ + 16) AND 0FFF0H
Другая директива – USING – позволяет установить текущий регистровый банк. В качестве параметра директива получает номер банка. Например:
USING 3 |
; |
Помещает |
в |
стек |
R2 |
банка |
3 |
PUSH AR2 |
|||||||
USING 1 |
; |
Помещает |
в |
стек |
R2 |
банка |
1 |
PUSH AR2 |
92
К прочим директивам ассемблера относится директива END, которая указывает на конец модуля. Любой текст, размещаемый после этой директивы, игнорируется.
3.Практическая часть
3.1.Создание проекта в среде µVision2. Простейшая программа
для микроконтроллера MCS-51
Всреде µVision2, так же, как и в других современных интегрированных средах разработки, используется понятие проекта как структуры, которая инкапсулирует в себе исходные и библиотечные файлы, файлы объектного кода, а также настройки языковых инструментальных средств (настройки компилятора и компоновщика) и инструментов среды разработки (расположение окон, настройки отладчика). При создании встраиваемого приложения для микроконтроллера в среде µVision2 должен быть изначально создан про-
ект приложения (application project).
Подробно рассмотрим процесс создания приложения в среде µVision2. 1. Для создания нового проекта необходимо выбирать команду главного меню Project (Project | New Project…). Далее в открывшемся диалоговом
окне Create New Project необходимо указать корневой каталог, в котором будут располагаться файлы проекта, а также имя файла проекта (например, директория – LAB5, имя проекта – LAB5).
2. Любому проекту среды µVision2 необходимо ассоциировать устройство, т.е. модель микроконтроллера из семейства MCS-51 или MCS-251 (среда µVision2, однако, поддерживает также микроконтроллеры семейств С166
иARM), процессорное ядро и периферия которого будет симулироваться интегрированным отладчиком µVision2. Автоматически среда предложит выбрать из базы данных доступных для симулятора устройств конкретный микроконтроллер (рис. 5.4).
3. По умолчанию проект не содержит исходных файлов. В самом простейшем случае в проект необходимо добавить один пустой файл исходного текста. Создать пустой файл исходного текста можно с помощью команды главного меню (File | New…). Затем c помощью команды меню (File | Save As…) необходимо сохранить созданный файл в каталоге проекта с расши-
рением ASM (например, MAIN.ASM).
4. Созданный и сохраненный ранее файл должен быть присоединен к проекту, для его последующей сборки в составе разрабатываемо приложения.
93
Для управления файлами проекта в состав среды µVision2 входит менеджер проектов (Project Manager), который представлен в виде стыковочного окна
Project Workspace (рис. 5.5). Присоединить к проекту файл MAIN.ASM (рис. 5.5) можно с помощью команды контекстного меню закладки Files ме-
неджера проектов (Add file to Group…)
Рис. 5.4. Окно база данных микроконтроллеров среды µVision2
Рис. 5.5. Менеджер проектов среды µVision2
94
5. Следующим шагом в проектировании приложения является программирование исходного текста программы.
Рассмотрим простейшую программу, которая демонстрирует все основные принципы построения программ для микроконтроллеров, а также основы синтаксиса ассемблера А251/51. Текст программы приведен ниже:
;ДЕКЛАРАЦИИ СЕГМЕНТОВ И СИМВОЛЬНЫХ ИМЕН
PROG SEGMENT CODE FLAGS SEGMENT BIT VARS SEGMENT DATA STACK SEGMENT IDATA
;ВЕКТОРНАЯ ТАБЛИЦА ПРЕРЫВАНИЙ
CSEG AT 0 USING 0
ORG 0000h
jmp RESET ; переход на подпрограмму инициализации
;-----------------------------------------------------------
;СЕГМЕНТ КОДА
RSEG PROG
;ПОДПРОГРАММА ИНИЦИАЛИЗАЦИИ
RESET:
;Внимание – если используем вызовы подпрограмм
;необходимо инициализация указателя стека
mov SP, #stack - 1
mov A, #100 |
; загрузка A непосредственным значением |
mov B, A |
; пересылка А в В |
xrl A, B |
; обнуляем А с помощью ИСКЛ. ИЛИ |
setb ACC.5 |
; установка бита в А |
clr B.6 |
; (ACC псевдоним аккумулятора А) |
; сброс бита в В |
|
push ACC |
; меняем содержимое А и В |
push B |
|
pop ACC |
|
95
pop |
B |
|
|
xch |
A, B ; возвращаем содержимое А и В |
||
mov |
counter, A ; |
работа байтовыми переменными |
|
call delay |
; |
вызов подпрограммы |
|
mov C, B.5 |
; |
работа с битовыми переменными |
|
mov mflag, C |
|
|
|
mov R0, #table ; |
настройка начального адреса таблицы |
||
mov A, #0 |
|
|
|
_ss: mov @R0, A |
; |
пишем байт в ячейку с адресом в R0 |
|
inc R0 |
; |
увеличиваем адрес |
|
inc A |
|
|
|
cjne A, 10, _ss |
; переход в начало есле A <> 10 |
||
;ОБЛАСТЬ ФОНОВЫХ ЗАДАЧ forever:
inc R0 ; инкремент и декремент РОН dec R1
sjmp forever
;ПОДПРОГРАММА ЗАДЕРЖКИ
delay:
djnz counter,delay ; холостой цикл с декрементом ret
;----------------------------------------------------------- |
|
|
; БИТОВЫЙ СЕГМЕНТ |
|
|
RSEG FLAGS |
|
|
mflag: |
DBIT 1 |
; битовая ячейка памяти данных |
;----------------------------------------------------------- |
|
|
; СЕГМЕНТ ДАННЫХ |
|
|
RSEG VARS |
DS 1 ; однобайтная ячейка памяти данных |
|
counter: |
||
table: |
DS 10 |
; таблица ячеек |
96
;-----------------------------------------------------------
; СЕГМЕНТ СТЕКА
RSEG STACk
DS 10h ; резервируем 32 байта
END
6. Далее созданный проект должен быть скомпилирован. Для компиляции и сборки проекта используется команда из меню Project (Project | Build Target). Если исходные тексты файлов проекта не содержат синтаксических ошибок, то в результате будет получен объектный файл (рис. 5.6).
Сообщения о ходе сборки проекта выдается в специальное окно вывода сообщений среды разработки (Output Window). Если в проекте имеются ошибки, то в окне сообщений после компиляции содержится код ошибки и строка текста программы, в котором она возникла. Двойное нажатие по коду ошибки переводит курсор редактора кода на строку – источник ошибки.
Рис. 5.6. Внешний вид окна сообщений µVision2
7. Как уже упоминалось, среда разработки µVision имеет интегрированный отладчик и позволяет выполнить пошаговое выполнение приложения с просмотром результатов. Для начала отладки выбирается команда из меню
Debug (Debug | Start / Stop Debug Session). Простейшая пошаговая отладка выполняет нажатием клавиши F10 (Debug | Step Over) (рис.5.7).
При пошаговой отладке можно наблюдать за содержимым регистров ЦПУ в закладке Regs менеджера проектов.
97
Рис. 5.7. Внешний вид главного окна в режиме пошаговой отладки
3.2.Задания
1.Изучить материал раздела 2.
2.Выполнить пошаговую отладку программы из примера в разделе 3.1.
3.Разработать простейшую программу, выполняющую умножение и деление двоичных беззнаковых чисел. Выполнить ее пошаговое выполнение
вотладчике.
4.Контрольные вопросы
1.В чем состоит основное отличие универсального микропроцессора от микроконтроллера?
2.Перечислите основные группы выводов микроконтроллера семейст-
ва MCS-51.
3.Какие виды памяти имеет микроконтроллер?
4.Перечислите регистры микроконтроллера и обозначьте и функции.
98
5.Назовите основные группы команд микроконтроллера MCS-51.
6.Поддерживает ли микроконтроллер MCS-51 сегментную адресацию памяти? Что представляет собой сегмент программы?
7.Какие типы сегментов определены в ассемблере A251/51?
8.Назовите основные директивы символьного определения, определения и резервирования данных.
99
Лабораторная работа № 6
ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА МИКРОКОНТРОЛЛЕРА MCS-51. ПОРТЫ ВВОДА/ВЫВОДА. ИНТЕГРИРОВАННЫЙ ОТЛАДЧИК СРЕДЫ РАЗРАБОТКИ MVISION2.
МАКРОСРЕДСТВА АССЕМБЛЕРА А251/51
1. Цель работы
Целью данной лабораторной работы является изучение функционирования портов ввода/вывода микроконтроллера семейства MCS-51, а также программирования операций с ними. В этой работе рассматриваются элементы схемотехники, в частности подключение простейших устройств к портам ввода/вывода микроконтроллера. Вместе с тем, в материале данной лабораторной работы продолжается рассмотрение среды разработки µVision2, а также языковых средств макроассемблера А251/51. В практической части работы предполагается рассмотрение решений практических задач использования и программирования портов микроконтроллера при сопряжении с внешними устройствами.
2.Основные теоретические сведения
2.1.Порты ввода/вывода MCS-51, их использование
ипрограммирование
Все линии ввода/вывода микроконтроллеров семейства MCS-51 сгруппированы в несколько двунаправленных параллельных 8-разрядных портов. В классическом варианте у микроконтроллера 8051АН имеются четыре параллельных порта. Эти порты могут использоваться как для выполнения функций обмена данными (допуская при этом поразрядное программирование на ввод или на вывод), так и для выполнения альтернативных функций, таких, как обращение к внешней памяти, прием запросов прерываний и других. При обращении к внешней памяти используются порты P0 и P2. Через порт P0 выдается младший байт адреса, который должен быть зафиксирован во внешнем регистре, поскольку вслед за ним на линиях порта появляются данные для записи или чтения. На рис. 6.1 приведены структурные схемы аппаратных средств, обслуживающих одну линию каждого из портов Р0-Р3. Все линии параллельных портов имеют защелки (типа D-триггера), которые
100
объединены в группы по восемь и рассматриваются как регистры специальных функций Р0-Р3.
Управление
Адрес / |
|
& |
|
|
|
||
данные |
|
|
|
Внутренняя |
D |
Q |
|
шина выхода |
|||
Запись в |
Защелка |
||
Р0.х |
|||
защелку |
|||
CL |
Q |
||
Чтение |
|||
|
|
||
выхода |
|
|
|
Чтение
защелки
Управление
Адрес
Внутренняя |
D |
Q |
шина выхода |
|
|
Защелка
Запись в Р0.х защелку CL Q
Чтение
выхода
Чтение
защелки
Vcc
&
P0.x
Vss
Vcc
&
P2.x
&
Vss
|
|
Vcc |
|
|
|
Внутренний |
|
|
|
Pull-Up |
|
Внутренняя |
|
P1.x |
|
D |
Q |
||
шина выхода |
|||
Запись в |
Защелка |
||
Р1.х |
|||
защелку |
|||
CL |
Q |
||
Чтение |
|||
|
Vss |
||
выхода |
|
||
Чтение |
|
|
|
защелки |
|
|
Vcc |
|
|
|
|
Альтернативная функция |
Внутренний |
||
Pull-Up |
|||
|
входа |
|
P3.x |
Внутренняя |
|
|
|
D |
Q |
|
|
шина выхода |
& |
||
Запись в |
Защелка |
||
Р1.х |
|
||
защелку |
|
||
CL |
Q |
|
|
Чтение |
|
||
|
|
Vss |
|
выхода |
|
|
|
Чтение |
защелки |
Альтернативная функция |
выхода |
Рис. 6.1. Аппаратное устройство линий портов в/в P0-P3
Кроме защелки, каждая линия ввода/вывода имеет входной буфер и формирователь выходного сигнала. На внутреннюю шину микроконтроллера может быть прочитано как состояние каждой из защелок, так и значение сигналов на внешних выводах. Часть команд микроконтроллера во время вы-
