Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
01.05.2014
Размер:
70.14 Кб
Скачать

Лабораторная работа № 4

Изучение организации памяти и способов адресации процессора I8051

1. Ведение.

Микроконтроллеры семейства 8051 построены по модифицированной Гарвардской архитектуре, что означает функциональное и пространственное разделение памяти. Предусмотрено выделение трех блоков памяти: память программ ROM, внутренняя память данных RAM и дополнительная внешняя память данных XRAM. При этом доступ к каждому из блоков выполняется при специфических условиях, что в программах отражается как использование различных команд характеризующимися разными способами задания адреса.

Выборка команд из программной памяти выполняется в циклах выборки команды, при этом в качестве источника адреса выступает счетчик адреса команды (PC).Однако в этой области могут сохраняться и некоторые данные- константы, таблицы. Доступ константам можно обеспечить, располагая их в соответствующих командах, реализующих непосредственную адресацию. Например, команда

MOV a,# 78

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

Другой способ выборки данных из программной памяти - использование косвенной адресации. Источником адреса при этом является 16-ти разрядный регистр-указатель данных DPTR. Существуют лишь две команды доступа к ROM c косвенной адресацией

MovC a,@DPTR

MOVC a,@a+DPTR

При выполнении первой команды содержимое ячейки ROM с адресом, хранящимся в DPTR передается в аккумулятор. Во второй команде выбирается содержимое ячейки памяти с адресом, равным сумме одержимых аккумулятора и DPTR. Содержимое DPTR может загружаться константами или из аккумулятора, а также непосредственно модифицироваться командами inc и dec для реализации механизмов переадресации, в частности при обработке массивов.

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

Прямая адресация может быть использована только в операциях с Аккумулятором. Синтаксис команд с прямой адресацией имеет вид

<операция> a,<адрес>

или <операция> <адрес>,а

где <адрес> - число в диапазоне 0-127,

<операция>::= MOV, ADD,ADC,SUBB, ORA и другие.

В командах с косвенной адресацией внутренней памяти в качестве источника адреса могут выступать регистры процессора R0 и R1, в которые перед обращением должен быть записан адрес в диапазоне 0-255. Синтаксис команд доступа к внутренней памяти с косвенной адресацией имеет вид

<операция> a,@< адресный регистр>

или MOV @< адресный регистр>,a

где< адресный регистр> - Это R0 или R1.

Для внешней памяти данных возможен только обмен с аккумулятором с использованием косвенной адресации. В качестве источника адреса в этих командах может использоваться либо DPTR, либо один из регистров R0 или R1. Синтаксис команд обмена с внешней памятью данных

MOVX a, @DPTR

MOVX @DPTR,a

MOVX a,@<адресный регистр>

MOVX @<адресный регистр>,a

Все команды MOVX обеспечивают обмен между аккумулятором и ячейкой памяти номер которой задается адресным полем. В командах, использующих адресный регистр, в качестве старшего байта адреса используется содержимое регистра порта P2.

Более подробная информация о системе команд микропроцессора и наиболее употребительные директивы ассемблера представлены в разделах помощи системы отладки (см. пункты окна "Помощь" экранного меню).

Разрабатывая обучающимся программа содержит операции считывания входных данных из различных блоков памяти, обработку считанной информации и запись результатов в память. Обработка предусматривает последовательную выборку данных из одного или двух массивов. Переход к обработке очередного элемента массива следует осуществлять с использованием переадресации, то есть модификации содержимого регистра хранящего текущий адрес (это может быть DPTR, регистры R0 и R1).

2. Индивидуальные задания/

Варианты заданий сведены в таблицу. В каждом варианте устанавливается характер исходных данных ( скаляр или массив) их локализация (память программ ROM, внутренняя память данных RAM , либо внешняя память XRAM ) а также используемый для доступа способ адресации : Прямая direct, косвенная через регистр-указатель адреса DPTR, общие регистры R0 или R1

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

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

б. Результирующий массив содержит только элементы исходного массива, которые Превышают заданное скаляром значения. Остальные элементы результирующего массива нулевые.

В. Результат содержит количество элементов массива, превышающих заданный скаляр

Г. Результирующий массив содержит суммы одноименных элементов исходных массивов

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

Е.Результат есть количество совпадающих элементов исходных массивов.

No

первый Операнд

Второй операнд

Результат

алг. преоб.

ТИП/локализ

Способ

доступа

ТИП/локализ

Способ доступа

ТИП/локализ

Способ доступа

1

скаляр/rom

DPTR

массив/RAM

DPTR

массив/xram

@r0

a

2

массив/rom

DPTR

скаляр/RAM

@r1

массив/xram

@r0

a

3

скаляр/rom

DPTR

массив/RAM

@r1

массив/xram

@r0

б

4

массив/rom

DPTR

скфляр/ RAM

ditect

массив/ram

@r0

б

5

скаляр/rom

DPTR

массив/XRAM

@r0

массив/xram

dptr

в

6

массив/rom

DPTR

массив/ RAM

@r1

массив/xram

@r0

г

7

скаляр/rom

DPTR

массив/RAM

@r1

скаляр/xram

dptr

в

8

массив/rom

DPTR

массив/RAM

ditect

массив/xram

@r0

в

9

скаляр/rom

DPTR

массив/RAM

@r1

массив/xram

dptr

г

10

массив/rom

DPTR

массив/XRAM

@r1

скаляр/ram

direct

д

11

скаляр/rom

DPTR

массив/XRAM

dptr

массив/xram

@r0

г

12

массив/rom

DPTR

массив/RAM

@r1

скаляр/xram

dptr

д

13

скаляр/rom

DPTR

массив/XRAM

@r0

скаляр/ram

@r1

а

14

массив/rom

DPTR

массив/XRAM

ditect

скаляр/xram

@r1

е

15

скаляр/rom

DPTR

массив/RAM

@r0

скаляр/ram

@r1

е

16

массив/rom

DPTR

массив/XRAM

@r1

массив/ramI

@r0

г

3. Порядок выполнения работы.

3.1. Запустить систему отладки программ для микропроцессора. Выбрать пункт меню "Редактор" и в пункте подменю "имя файла" объявить имя исходного модуля отлаживаемой программы в языке ассемблера (следует использовать расширение ". asm"). Ввести текст приготовленной программы (пункт подменю "Ввод").

3.2. Выполнить компиляцию программы (п. подменю "Компиляция" в п. меню "Асемблер" ). Просмотреть текст листинга отладки (файла , имя которого совпадает с именем исходного файла, а расширение - "lst". Используйте пункт меню "Редактор". При наличии ошибок вернуться к п. 3.1.

3.3. Выполнить линкирование, используя в пункте меню "Линкер" пункт подменю "Одиночный файл"

Замечание: -. Рекомендуется разместить основную часть программы с

адреса не ниже 100Н. Этой основной части должно в ассемблерной программе

предшествовать директива

Org <начальный адрес>

Программа должна начинаться с перехода на начальный адрес основной

части программы ( н.п. LJMP 100H).

Данные, которые в соответствии с индивидуальным заданием должны

считываться из программной памяти должны быть помешены в текст

программы после директивы ассемблера "ORG", и сопровождаться

директивами DB перед каждой строкой с данными.

Если есть ошибки, перейти к п. 3.1.

3.4. Используя п. меню " Редактор" подготовить тексты файлов, содержащих массивы данных, размещаемых в памяти данных. Рекомендуется использовать расширение ".asm". Файл записывается в форме текста, каждая строка которого начинается с директивы DB, за которой значение байта данных в шестнадцатиричной форме.

Замечание: Даже Если предполагается, что внешняя память будет использована только для записи результатов, все рано необходимо создать файл содержащий произвольную информацию, но число строк которого не меньше объема, требуемого для записи выходных данных. Дело в том, что используемый симулятор именно в результате загрузки такого файла резервирует место во внешней памяти.

3.5. Выполнить компиляцию и линкирование файла с данными

3.6. Запустить программу моделирования ( пункт "Запуск" меню "Симуляция" ). Выбрать версию микроконтроллера ( рекомендуется выбрать вариант С). Ознакомиться с выведенным при этом на экран схематическим отображением микроконтроллера.

3.7. Ввести подготовленную программу в моделировщик. Для этого

а. Последовательно выбрать в командном окне симулятора (перемещая курсор стрелками) пункты "Load" и "programm". Исполнение действия инициируется клавишей "Enter".

б. В строку "Enter file name" вписать имя исполняемой программы (имеет имя, совпадающее с именем исходной программы и расширение ".hex").

3.8. Сконфигурировать окна памяти в следующем порядке

- Выбрать пункт меню DUMP и подменю 1 и далее - ABSOLUTE. После чего в командной строке записать начальный адрес массива во внутренней памяти данных.

- Повторить пункт меню DUMP, выбрать подменю 1 и далее - ABSOLUTE. После чего в строке диалога записать начальный адрес массива во внешней памяти данных. ( формат команды при этом должен быть x:<десятичное число> или

x:<шестьнадцатиричное число>h.

3.9. Ввести файл и исходными данными, располагаемыми во внешней памяти данных (напомним, что это необходимо и для вариантов, в которых внешняя память используется как приемник). Для этого выбрать пункт LOAD главного меню и пункт DATA подменю, а в строке диалога ввести имя загружаемого файла (поле компиляции это будет файл с именем исходного файла данных и расширением .hex).

3.11. Ввести во внутреннюю память исходные данные, которые должны считываться из нее отлаживаемой программой. Установить на программном счетчике (РС окна отображения) начальный адрес введенной программы. Переход из командного окна симулятора в окно отображения и обратно осуществляется нажатием клавиши "ESC", а перемещение внутри окна отображения - стрелками.

3.12. Выполнить один цикл программы в пошаговом режиме: одна команда исполняется по нажатию клавиши F10. Наблюдать изменения состояния регистров. Убедиться в правильности исполнения алгоритма.

Замечание: Рекомендуется Выполнить загрузку и начальную прокрутку программы в (пп.3.7 - 3.12) В режиме автоматического создания командного файла отладчика. При этом последовательность нажатия клавиш в сеансе запоминается в этом Файле и может быть повторена без участия пользователя. Режим работы в командным файлом позволяет оперативнее выполнять отладку.

Для создания командного файла следует:

a. перейти в командное окно симулятора и выбрать пункт "COMMAND FILE" и подпункт "OPEN";

б. на запрос "OPEN FILE NAME" задать имя командного файла, в котором будет сохраняться последовательность действий.

в. выполнить типовую последовательность действий: г. закрыть командный файл: перейти в командное окно симулятора и выбрать пункт "COMMAND FILE" и подпункт "close".

3.13. Окончить сеанс моделирования: В командном окне симулятора последовательно выбрать пункты "QUIT" и "EXIT".

4. Содержание отчета

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

4.2. Текст программы

4.3. Таблица трассировки .

4.4. Текст входного и выходного файлов.

Соседние файлы в папке Method