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

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

1. Общие положения.

Пространство памяти программ CSEG
Для хранения программ и неизменяемых данных в МК51 используется логическое однородное линейное пространство памяти CSEG объемом 64 Кбайт. Память программ адресуется 16разрядным счетчиком PC. Младшие 4 Кбайт этого пространства соответствуют встроенному EPROM микроконтроллера, остальные 60 Кбайт реализуются внешними, относительно МК, схемами.
В пространстве CSEG выделяются следующие точки (адреса):
0000H - RESET - стартовый адрес при сбросе системы;
0003H - EXTI0 - внешнее прерывание 0;
000BH - TIMER0 - прерывание таймера/счетчика 0;
0013H - EXTI1 - внешнее прерывание 1;
001BH - TIMER1 - прерывание таймера/счетчика 1;
0023H - SINT - прерывание последовательного порта;
002BH - TIMER2 - прерывание таймера 2 (для MCS 52).
В CSEG определены два способа передачи управления:
прямая адресация с помощью 16-разрядного прямого адреса ad16;
относительная адресация, имеющая два варианта: с помощью 8 разрядного смещения rel (целое двоичное со знаком) относительно PC, или с помощью содержимого аккумулятора @A относительно PC [(A)+(PC)] или DPTR [(A)+(DPTR)].
Для двух команд (AJMP, ACALL) предусмотрена страничная адресация в CSEG, c помощью 11разрядного адреса ad11. В этом случае 8 младших разрядов адреса располагаются во втором байте команды, а 3 старших - в трех старших разрядах первого байта команды:

А
А
А
КОП

А
А
А
А
А
А
А
А

10
9
8






7
6
5
4
3
2
1
0


Номер страницы задается пятью старшими разрядами программного счетчика PC. Необходимо подчеркнуть также, что в группе пересылки существуют специальные команды MOVC A,@A+DPTR и MOVC A,@A+PC, которые позволяют считывать содержимое памяти программ. Как правило, эта возможность используется для организации таблиц констант в CSEG.

Команды передачи управления.

Группу команд передачи управления образуют команды безусловного перехода, условного перехода, команды вызова подпрограмм и команды возврата из подпрограммы. В большинстве команд используется прямая адресация. Характеристики команд приведены в таблице 1.

Таблица 1. Группа команд передачи управления.
Мнемоника
Код операции
Байт
Циклов
Операция

LJMP ad16
00000010
3
2
(PC) := ad16

AJMP ad11
aaa00001
2
2
(PC) := (PC)+2, (PC[0-10]):=ad11

SJMP rel
10000000
2
2
(PC) := (PC)+2, (PC) := (PC)+rel

JMP @A+DPTR
01110011
1
2
(PC) := (A)+(DPTR)

JZ rel
01100000
2
2
(PC) := (PC)+2; если(A)==0, то (PC):=(PC)+rel

JNZ rel
01110000
2
2
(PC) := (PC)+2; если(A)!=0, то (PC):=(PC)+rel

JC rel
01000000
2
2
(PC) := (PC)+2; если(C)==1, то (PC):=(PC)+rel

JNC rel
01010000
2
2
(PC) := (PC)+2; если(C)==0, то (PC):=(PC)+rel

JB bit,rel
00100000
3
2
(PC) := (PC)+3; если(bit)==1, то (PC):=(PC)+rel

JNB bit,rel
00110000
3
2
(PC) := (PC)+3; если (bit)==0, то (PC):=(PC)+rel

JBC bit,rel
00010000
3
2
(PC) := (PC)+3; если(bit)==1,то (PC):=(PC)+rel,(b):=0

DJNZ Rn,rel
11011rrr
2
2
(PC):=(PC)+2, (Rn):=(Rn)-1; если (Rn)!=0, то (PC):=(PC)+rel

DJNZ ad,rel
11010101
3
2
(PC):=(PC)+3, (ad):=(ad)-1; если (ad)!=0, то (PC):=(PC)+rel

CJNE A,ad,rel
10110101
3
2
(PC):=(PC)+3, если (A)!=(ad), то(PC):=(PC)+rel; если (A)<(ad), то (С):=1, иначе (C):=0;

CJNE A,#d,rel
10110100
3
2
(PC):=(PC)+3, если (A)!= #d, то(PC):=(PC)+rel; если (A)< #d, то (С):=1, иначе (C):=0;

CJNE Rn,#d,rel
10111rrr
3
2
(PC):=(PC)+3, если (Rn)!= #d, то(PC):=(PC)+rel; если (Rn):=(ad),то(С):=1, иначе C):=0;
·

CJNE @Ri,#d,rel
1011011i
3
2
(PC):=(PC)+3, если ((Ri))!= #d, то(PC):=(PC)+rel; если ((Ri))< #d,то(С):=1, иначе(C):=0;

LCALL ad16
00010010
3
2
(PC) :=(PC)+3, (SP):=(SP)+1, ((SP)):=(PCL), (SP):=(SP)+1. ((SP)):=(PCH), (PC):=ad16

ACALL ad11
aaa10001
2
2
(PC) := (PC)+2,(SP):=(SP)+1, ((SP)):=(PCL), (SP):=(SP)+1, ((SP)):=(PCH), (PC[0-10])-=ad11

RET
00100010
1
2
(PCH):=((SP)),(SP):=(SP)-1, (PCL):=((SP)),(SP):=(SP)-1,

RETI
00110010
1
2
(PCH):=((SP)),(SP):=(SP)-1, (PCL):=((SP)),(SP):=(SP)-1,

NOP
00000000
1
1
(PC):=(PC)+1



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

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

4. Задание по лабораторной работе.
Пусть в памяти программ, начиная с ячейки ADR2, расположена таблица кодов длиной N. Записать на языке ассемблера МК51 программу, которая выполняет пересылку данного массива в RAM, начиная с адреса ADR3. Программа должна начинаться с ячейки ADR1.

Таблица 2. Таблица вариантов заданий
Номер
ADR1
ADR2
N
ADR3

01
714
431
E
4F

02
62F
541
F
23

03
53E
621
D
45

04
44A
711
C
56

05
355
121
B
48

06
266
236
A
3D

07
177
345
6
4F

08
78A
454
7
3A

09
69D
568
F
4C

10
5AF
677
E
44

11
4BA
781
5
23

12
3C9
231
6
18

13
2D8
3A1
7
4C

14
1E4
4B2
8
6C

15
7F5
5C2
8
6F

16
6E6
6D2
9
3A

17
5A1
7E2
F
4A

18
4D3
1F2
A
5B

19
3C8
2E2
B
3B

20
26F
3D2
C
4B

21
4BE
782
D
39

22
3CA
232
E
47

23
2D3
3A2
F
65

24
1E7
4B2
8
33

25
7F3
5C2
8
3D

26
6E5
6D2
9
55

27
5AD
7E4
C
3E


Коды данных задаютcя первыми N символами ФИО студента




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

6. Пример выполнения задания.
В памяти команд с адреса ADR2=0D80 расположено N=0Ch, шестнадцатеричных кодов:
FFh, 00h, 11h, 22h, 33h, 44h, 55h, 66h, 77h, 88h, 99h, AAh
Необходимо переписать их в память данных, начиная с адреса ADR3=65h. Программа должна начинаться с адреса ADR1=0F00h.

org 0
jmp Start ; переход на начало программы
org 0D80h ; организация массива в памяти программ
db 0FFh,00h,11h,22h,33h,44h,55h,66h,77h,88h,99h,0АAh
org 0F00h ; начало программы
Start:
mov DPTR,#0D80h ; база массива в памяти программ
mov R0,#65h ; база массива в ОЗУ
mov R2,#0Ch ; число циклов
mov R3,#0 ; индекс элемента массива
cycle:
mov A,R3 ; номер извлекаемого элемента массива
movc A,@A+DPTR ; извлечение элемента из массива
mov @R0,A ; запись элемента в ОЗУ
inc R3 ; переход к следующему элементу в ПЗУ
inc R0 ; переход к следующему элементу в ОЗУ
djnz R2,cycle ; если не все элементы процесс повтори
jmp $ ; останов программы
end










13PAGE 15


13PAGE 14315





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

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

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