Лабораторная работа №1 МПС

Лабораторная работа
Тема: Архитектура микроконтроллера МК i8051. Организация памяти данных. Команды пересылки данных.
Цель работы: изучение структуры микроконтроллера MК i8051, организации памяти и форматов его команд, а также приобретение начальных навыков программирования в кодах микроконтроллера с использованием команд передачи данных.
Оборудование: персональный компьютер
Программное обеспечение: операционная система, программа отладчик для МК51

1. Общие положения.
Архитектура микроконтроллера МК 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
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
2
1
0

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
0

@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.
Пространство памяти программ CSEG
Объем пространства памяти программ 64Кбайт. Оно построено как однородное линейное пространство с двумя основными способами передачи управления. Первые (младшие) 4К байт физически принадлежат EPROM внутри МК, остальные 60К байт - реализуются внешним ЗУ. К пространству CSEG возможно также обращение как к источнику операндов (констант). Для этого используется непосредственная адресация и косвенная адресация через регистры DPTR или PC c переменным смещением.
При непосредственной адресации операнд (константа!) указывается в коде команды. Возможны команды с 8-разрядным операндом #d и 16-разрядным операндом (#d16).
Косвенная адресация возможна только с помощью двух команд. Команда MOVC A,@A+DPTR считывает в аккумулятор байт из CSEG по адресу, равному сумме содержимого А (смещение) и DPTR. Команда MOVC A,@A+PC считывает в аккумулятор байт из СSEG по адресу, найденному как сумма содержимого A и PC.


Команды передачи данных
В микроконтроллере широко представлены команды пересылки данных, большую часть которых составляют команды передачи и обмена байтов. Все команды данной группы не модифицируют флаги результата, за исключением команд загрузки PSW и аккумулятора. Мнемоника и коды операций команд передачи данных приведены в таблица 2.
Таблица 2. Группа команд передачи данных
Мнемоника
Код операции
Байт
Циклов
Операция

MOV A,Rn
11101rrr
1
1
(A) := (Rn)

MOV A,ad
11100101
2
1
(A) := (ad)

MOV A,@Ri
1110011i
1
1
(A) :=((Ri))

MOV A,#d
01110100
2
1
(A) := #d

MOV Rn,A
11111rrr
1
1
(Rn) := (A)

MOV Rn,ad
10101rrr
2
2
(Rn) := (ad)

MOV Rn,#d
01111rrr
2
1
(Rn) := #d

MOV ad,A
11110101
2
1
(ad) := (A)

MOV ad,Rn
10001rrr
2
2
(ad) := (Rn)

MOV add,ads
10000101
3
2
(add):= (ads)

MOV ad,@Ri
0000011i
2
2
(ad) :=((Ri))

MOV ad,#d
01110101
3
2
(ad) := #d

MOV @Ri,A
1111011i
1
1
((Ri)):= (A)

MOV @Ri,ad
0110011i
2
2
((Ri)):= (ad)

MOV @Ri,#d
0111011i
2
1
((Ri)):= #d

MOV DPTR,#d16
10010000
3
2
(DPTR):= #d16

MOVC A,@A+DPTR
10010011
1
2
(A) :=((A)+(DPTR))

MOVC A,@A+PC
10000011
1
2
PC):=(PC)+1,(A):=((A)+(PC))

MOVX A,@Ri
1110001i
1
2
(A) :=((P2)*(Ri))

MOVX A,@DPTR
11100000
1
2
(A) :=((DPTR))

MOVX @Ri,A
1111001i
1
2
((P2*(Ri)):=(A)

MOVX @DPTR,A
11110000
1
2
((DPTR)) :=(A)

PUSH ad
11000000
2
2
(SP):=(SP)+1,((SP)):=( ad)

POP ad
11010000
2
2
(ad):=((SP)),(SP):=(SP)-1

XCH A,Rn
11001rrr
1
1
(A) -- (Rn)

XCH A,ad
11000101
2
1
(A) -- (ad)

XCH A,@Ri
1100011i
1
1
(A) --((Ri))

XCHD A,@Ri
1101011i
1
1
(A[0-3]) -- ((Ri[0-3]))


2. Задание для домашней подготовки.
Повторить основные узлы МК51;
Повторить форматы данных и команд МК51;
Повторить способы адресации данных МК51;
Повторить команд передачи данных МК51;

3. Порядок выполнения работы.
Ознакомиться с заданием и проанализировать его.
Составить программу согласно заданию в кодах МК51.
Набрать текст составленной программы в текстовом редакторе отладчика.
Выполнить трансляцию программы (в случае возникновения ошибок исправить их).
Сделать пошаговое выполнение программы и убедиться в правильности ее работы (в случае неправильности внести исправления в текст программы и повторить п.4-5).
Ответить на вопросы.


4. Задание по лабораторной работе.
Составить на ассемблере МК 51 программу, которая:
записывает в ячейку RAM1 константу CONST1;
записывает в ячейку RAM2 константу CONST2;
переписывает содержимое RAM1 в регистр с номером X банка регистров с номером Q;
переписывает содержимое RAM2 в регистр с номером Y банка регистров с номером W;
Начальный адрес программы ADR1.
Таблица 3. Таблица вариантов заданий
Номер
RAM1
RAM2
CONST1
CONST2
X
Bank Q
Y
Bank W
ADR1

01
71
43
FE
CA
0
0
2
3
0714

02
62
54
FF
AB
1
1
3
2
062F

03
53
62
FD
BC
2
2
4
1
053E

04
44
71
FC
CD
3
3
5
0
044A

05
35
12
FB
DE
4
1
6
3
0355

06
26
23
FA
EF
5
2
7
2
0266

07
17
34
F1
FF
6
3
0
0
0177

08
78
45
F2
1A
7
0
1
3
078A

09
69
56
F3
2B
3
1
2
2
069D

10
5A
67
F4
3C
0
2
3
1
05AF

11
4B
78
F5
4D
1
3
4
0
04BA

12
3C
23
F6
5E
2
0
5
3
03C9

13
2D
3A
F7
6F
3
1
6
2
02D8

14
1E
4B
F8
7A
4
2
7
1
01E4

15
7F
5C
F8
8B
5
3
0
0
07F5

16
6E
6D
F9
9C
6
0
1
3
06E6

17
5A
7E
F1
2D
7
1
2
2
05A1

18
4D
1F
F2
5E
0
2
3
1
04D3

19
3C
2E
F3
6F
1
3
4
0
03C8

20
26
3D
F4
7A
2
0
5
3
026F

21
45
6A
FF
8B
3
1
6
3
04BE

22
67
8D
1F
9D
4
2
7
3
03CA

23
4F
4E
2E
A0
5
3
7
2
02D3

24
5D
3B
3D
B1
6
3
6
1
01E7

25
3A
71
4C
C2
7
2
5
0
07F3

26
6E
69
5B
D3
1
1
4
2
06E5

27
3F
6E
6A
E4
2
0
3
1
05AD


5. Содержание отчета
Задание по лабораторной работе;
Текст программы с комментариями;
Ответы на вопросы:
Описать архитектуру микроконтроллера i8051
Описать организацию памяти микроконтроллера i8051.
Дать краткую характеристику команд пересылок данных для микроконтроллера i8051.

6. Пример выполнения задания.

Записать на ассемблере МК 51 программу, которая:
записывает в ячейку 7Fh константу 25h;
записывает в ячейку 35h константу 3Eh;
переписывает содержимое ячейки 7F в регистр с номером 3 банка регистров с номером 0;
переписывает содержимое 35h в регистр с номером 0 банка регистров с номером 1;
Начальный адрес программы 034Ah.

org 0
jmp start ; переход на начало программы
org 034Ah
start: ; начало программы
mov 7Fh,#25h ; запись в ячейку памяти
mov 35h,#3Eh ; запись в ячейку памяти
mov psw,#0 ; установка банка 0
mov r3,7Fh ; запись в r3
mov psw,#8 ; установка банка 1
mov r0,35h ; запись в r0
jmp $ ; останов программы
end











13PAGE 15


13PAGE 14615



7.....RB0..0

R0

R1

R2

R3

R4

R5

R6

R7

RB1

RB2

RB3



15

Приложенные файлы

  • doc 8981620
    Размер файла: 187 kB Загрузок: 0

Добавить комментарий