Объем пространства памяти программ 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 | (A):= (Rn) | ||
MOV A,ad | (A):= (ad) | |||
MOV A,@Ri | 1110011i | (A):=((Ri)) | ||
MOV A,#d | (A):= #d | |||
MOV Rn,A | 11111rrr | (Rn):= (A) | ||
MOV Rn,ad | 10101rrr | (Rn):= (ad) | ||
MOV Rn,#d | 01111rrr | (Rn):= #d | ||
MOV ad,A | (ad):= (A) | |||
MOV ad,Rn | 10001rrr | (ad):= (Rn) | ||
MOV add,ads | (add):= (ads) | |||
MOV ad,@Ri | 0000011i | (ad):=((Ri)) | ||
MOV ad,#d | (ad):= #d | |||
MOV @Ri,A | 1111011i | ((Ri)):= (A) | ||
MOV @Ri,ad | 0110011i | ((Ri)):= (ad) | ||
MOV @Ri,#d | 0111011i | ((Ri)):= #d | ||
MOV DPTR,#d16 | (DPTR):= #d16 | |||
MOVC A,@A+DPTR | (A):=((A)+(DPTR)) | |||
MOVC A,@A+PC | PC):=(PC)+1,(A):=((A)+(PC)) | |||
MOVX A,@Ri | 1110001i | (A):=((P2)*(Ri)) | ||
MOVX A,@DPTR | (A):=((DPTR)) | |||
MOVX @Ri,A | 1111001i | ((P2*(Ri)):=(A) | ||
MOVX @DPTR,A | ((DPTR)):=(A) | |||
PUSH ad | (SP):=(SP)+1,((SP)):=(ad) | |||
POP ad | (ad):=((SP)),(SP):=(SP)-1 | |||
XCH A,Rn | 11001rrr | (A) -- (Rn) | ||
XCH A,ad | (A) -- (ad) | |||
XCH A,@Ri | 1100011i | (A) --((Ri)) | ||
XCHD A,@Ri | 1101011i | (A[0-3]) -- ((Ri[0-3])) |
|
Задание для домашней подготовки.
1. Повторить основные узлы МК51;
2. Повторить форматы данных и команд МК51;
3. Повторить способы адресации данных МК51;
4. Повторить команд передачи данных МК51;
Порядок выполнения работы.
1. Ознакомиться с заданием и проанализировать его.
2. Составить программу согласно заданию в кодах МК51.
3. Набрать текст составленной программы в текстовом редакторе отладчика.
4. Выполнить трансляцию программы (в случае возникновения ошибок исправить их).
5. Сделать пошаговое выполнение программы и убедиться в правильности ее работы (в случае неправильности внести исправления в текст программы и повторить п.4-5).
6. Ответить на вопросы.
Задание по лабораторной работе.
Составить на ассемблере МК 51 программу, которая:
· записывает в ячейку RAM1 константу CONST1;
· записывает в ячейку RAM2 константу CONST2;
· переписывает содержимое RAM1 в регистр с номером X банка регистров с номером Q;
· переписывает содержимое RAM2 в регистр с номером Y банка регистров с номером W;
|
Начальный адрес программы ADR1.
Таблица 3. Таблица вариантов заданий
Номер | RAM1 | RAM2 | CONST1 | CONST2 | X | Bank Q | Y | Bank W | ADR1 |
FE | CA | ||||||||
FF | AB | 062F | |||||||
FD | BC | 053E | |||||||
FC | CD | 044A | |||||||
FB | DE | ||||||||
FA | EF | ||||||||
F1 | FF | ||||||||
F2 | 1A | 078A | |||||||
F3 | 2B | 069D | |||||||
5A | F4 | 3C | 05AF | ||||||
4B | F5 | 4D | 04BA | ||||||
3C | F6 | 5E | 03C9 | ||||||
2D | 3A | F7 | 6F | 02D8 | |||||
1E | 4B | F8 | 7A | 01E4 | |||||
7F | 5C | F8 | 8B | 07F5 | |||||
6E | 6D | F9 | 9C | 06E6 | |||||
5A | 7E | F1 | 2D | 05A1 | |||||
4D | 1F | F2 | 5E | 04D3 | |||||
3C | 2E | F3 | 6F | 03C8 | |||||
3D | F4 | 7A | 026F | ||||||
6A | FF | 8B | 04BE | ||||||
8D | 1F | 9D | 03CA | ||||||
4F | 4E | 2E | A0 | 02D3 | |||||
5D | 3B | 3D | B1 | 01E7 | |||||
3A | 4C | C2 | 07F3 | ||||||
6E | 5B | D3 | 06E5 | ||||||
3F | 6E | 6A | E4 | 05AD |
Содержание отчета
ü Задание по лабораторной работе;
ü Текст программы с комментариями;
ü Ответы на вопросы:
- Описать архитектуру микроконтроллера i8051
- Описать организацию памяти микроконтроллера i8051.
- Дать краткую характеристику команд пересылок данных для микроконтроллера i8051.
|
Пример выполнения задания.
Записать на ассемблере МК 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