Лабораторная работа
Тема: Архитектура микроконтроллера МК i8051. Организация памяти данных. Команды пересылки данных.
Цель работы: изучение структуры микроконтроллера MК i8051, организации памяти и форматов его команд, а также приобретение начальных навыков программирования в кодах микроконтроллера с использованием команд передачи данных.
Оборудование: персональный компьютер
Программное обеспечение: операционная система, программа отладчик для МК51
Общие положения.
Архитектура микроконтроллера МК i8051.
Микроконтроллер (МК) МK i8051 относится к классу однокристальных микроЭВМ и предназначен для построения несложных цифровых систем управления. Микроконтроллер (МК) выполнен на базе n-МОП технологии, упакован в корпус с двухрядным расположением выводов СБИС (имеет 40 контактов). БИС питается от одного источника напряжением 5В. Структура МК приведена на рисунке 1.
В состав операционной части МК включены следующие устройства:
· АЛУ, выполняющее 51 различную операцию над битами, восьми разрядными двоичными числами и десятичными числами;
· восьмиразрядные временные регистры Т1,Т2 аккумулятор А
· расширитель аккумулятора В (для выполнения операций умножения и деления);
· регистр слова состояния программы PSW, назначение битов которого приведено в таблице 1.
Микропроцессор содержит:
· RAM - резидентную память данных объёмом 128 байт, доступ к которой осуществляется через регистр адреса RAR или указатель стека SP;
· EPROM - встроенную перепрограммируемую память программ, при выборке команд из которой используется 16-ти разрядный указатель адреса PC. Если из памяти команд выбираются данные (константы),то для адресации используется 16-ти разрядный указатель адреса DPTR (младший байт адреса помещается в DPL,а старший в DPH).
Таблица 1. Назначение битов PSW.
Назначение | Бит | Обозначение |
Перенос из старшего разряда АЛУ | PSW.7 | C |
Десятичный перенос из младшей тетрады АЛУ | PSW.6 | AC |
Флаг пользователя общего назначения | PSW.5 | F0 |
Выбор банка регистров | PSW.4 | RS1 |
Выбор банка регистров | PSW.3 | RS0 |
Арифметическое переполнение результата | PSW.2 | OV |
Не используется | PSW.1 | |
Паритет - четность содержимого регистра А | PSW.0 | P |
В состав устройства управления МК входят:
· IR - регистр команд, в котором хранится код выполняемой команды;
· OSC - встроенный генератор синхроимпульсов Х1,Х2;
· Устройство синхронизации и управления работой МК.
МК имеет 4 квази двунаправленных порта Р0 - P3 для подключения внешних устройств, причем порт Р3 может выполнять альтернативные функции.
В состав МК также входят:
· два 16-ти разрядных таймера-счетчика для временной синхронизации вычислительных процессов;
· последовательный приемо-передатчик SIO;
· схема обработки внутренних и внешних прерываний.
Форматы команд.
Система команд МК насчитывает 111 команд, среди которых: 49 однобайтных, 45 двухбайтных и 17 трехбайтных. Форматы команд МК приведены на рисунке 2.
В приведенных форматах использованы следующие сокращения:
#d - непосредственный операнд;
ad - адрес операнда в DSEG;
bit - адрес бита в BSEG;
rel - относительный адрес в CSEG;
КОП | ||||
КОП | #d | |||
КОП | ad | |||
КОП | bit | |||
КОП | rel | |||
A10 A9 A8 КОП | A7…………….A0 | |||
КОП | ad | #d | ||
КОП | ad | rel | ||
КОП | ads | add | ||
КОП | #d | rel | ||
КОП | bit | rel | ||
КОП | ad 16h | ad 16l | ||
КОП | #d 16h | #d 16l |
Рисунок 2. Форматы команд микроконтроллера
ad16 - адрес 16 разрядов;
#d16 - непосредственный 16 разрядный операнд;
ads,add - непосредственные адреса источника и приемника в DSEG.
Организация памяти.
Память микроконтроллера можно представить как пять логических адресуемых пространств, отображаемых на 3 физических устройствах памяти (внутренние ROM и RAM и внешнее ЗУ).
Пространство RSEG
Пространство внутренних регистров включает 32 восьмиразрядных регистра, которые объединены в 4 банка по 8 регистров в каждом. Банки регистров (смотри рисунок 3.) соответственно обозначаются -RB0, RB1, RB2 и RB3.
Рисунок 3. Пространство RSEG
Для доступа к любому регистру текущего банка используется регистровая адресация, при этом номер регистра текущего банка указывается в 3 младших разрядах первого байта команды в поле Rn
КОП | r | r | r |
7………….3 |
r r r=Rn, n=0,1,2,3,4,5,6,7
Текущий банк регистров выбирается с помощью двухразрядного поля RS в PSW.
Пространство DSEG
Пространство внутренней памяти данных имеет объем 256 байт. Для доступа к ячейке пространства DSEG используется два способа адресации.
Первый способ - прямая адресация, при этом в команде указывается прямой восьмиразрядный адрес ad. При прямой адресации доступно 128 младших байт пространства DSEG или специальные регистры. Если старший (седьмой) разряд прямого адреса равен 0, то происходит обращение к одной из 128 ячеек внутренней памяти. Если старший разряд прямого адреса равен 1, происходит обращение к одному из специальных регистров. Если при этом используется адрес, который не приписан ни к одному специальному регистру, то результат действия команды не определен. В двухадресных командах используется прямой адрес источника операнда ads и прямой адрес приемника операнда add.
Второй способ - косвенная адресация через регистры R0 или R1текущего банка регистров
КОП | i |
7…………….……..1 |
@Ri, i=0,1
При косвенной адресации к пространству DSEG возможен доступ только к 128 младшим адресам пространства. Если содержимое регистра R0 (R1) при косвенном обращении к DSEG превосходит 7FH, то результат операции не определен.
Пространство BSEG
Пространство ВSEG представляет собой одноразрядное линейно упорядоченное пространство памяти емкостью 256 бит. В пространстве BSEG используется только прямая адресация. Прямой восьмиразрядный адрес в пространстве BSEG обозначается bit.
Пространство внешней памяти данных XSEG
Пространство внешней памяти данных представляет собой линейное адресное пространство объемом 64Кбайт. Адрес в XSEG может принимать значение от 0000H до FFFFH. Используется два способа адресации.
Первый способ - косвенная адресация через 16 разрядный регистр-указатель DPTR. Такая адресация возможна только в двух командах MOVX A,@DPTR и MOVX @DPTR,A;
Второй способ - косвенная страничная адресация, при этом номер страницы задается содержимым порта Р2, а смещение в странице- содержимым регистра R0 (или R1) текущего банка, т.е. адрес в XSEG находится как конкатенция (Р2)*(Ri). Для этой цели можно использовать также только две команды - MOVX A,@Ri или MOVX @Ri,A.