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




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

Тема: Команды передачи управления. Организация циклов

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

Оборудование: персональный компьютер

Программное обеспечение: операционная система, программа отладчик для МК51

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

 

Пространство памяти программ 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 определены два способа передачи управления:

1. прямая адресация с помощью 16-разрядного прямого адреса ad16;

2. относительная адресация, имеющая два варианта: с помощью 8 разрядного смещения rel (целое двоичное со знаком) относительно PC, или с помощью содержимого аккумулятора @A относительно PC [(A)+(PC)] или DPTR [(A)+(DPTR)].

Для двух команд (AJMP, ACALL) предусмотрена страничная адресация в CSEG, c помощью 11‑разрядного адреса ad11. В этом случае 8 младших разрядов адреса располагаются во втором байте команды, а 3 старших - в трех старших разрядах первого байта команды:

 

А А А КОП   А А А А А А А А
                                 
                                 

 

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

 

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

 

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


 

Таблица 1. Группа команд передачи управления.

Мнемоника Код операции Байт Циклов Операция
LJMP ad16       (PC):= ad16
AJMP ad11 aaa00001     (PC):= (PC)+2, (PC[0-10]):=ad11
SJMP rel       (PC):= (PC)+2, (PC):= (PC)+rel
JMP @A+DPTR       (PC):= (A)+(DPTR)
JZ rel       (PC):= (PC)+2; если(A)==0, то (PC):=(PC)+rel
JNZ rel       (PC):= (PC)+2; если(A)!=0, то (PC):=(PC)+rel
JC rel       (PC):= (PC)+2; если(C)==1, то (PC):=(PC)+rel
JNC rel       (PC):= (PC)+2; если(C)==0, то (PC):=(PC)+rel
JB bit,rel       (PC):= (PC)+3; если(bit)==1, то (PC):=(PC)+rel
JNB bit,rel       (PC):= (PC)+3; если (bit)==0, то (PC):=(PC)+rel
JBC bit,rel       (PC):= (PC)+3; если(bit)==1,то (PC):=(PC)+rel,(b):=0
DJNZ Rn,rel 11011rrr     (PC):=(PC)+2, (Rn):=(Rn)-1; если (Rn)!=0, то (PC):=(PC)+rel
DJNZ ad,rel       (PC):=(PC)+3, (ad):=(ad)-1; если (ad)!=0, то (PC):=(PC)+rel
CJNE A,ad,rel       (PC):=(PC)+3, если (A)!=(ad), то(PC):=(PC)+rel; если (A)<(ad), то (С):=1, иначе (C):=0;
CJNE A,#d,rel       (PC):=(PC)+3, если (A)!= #d, то(PC):=(PC)+rel; если (A)< #d, то (С):=1, иначе (C):=0;
CJNE Rn,#d,rel 10111rrr     (PC):=(PC)+3, если (Rn)!= #d, то(PC):=(PC)+rel; если (Rn):=(ad),то(С):=1, иначе C):=0;
CJNE @Ri,#d,rel 1011011i     (PC):=(PC)+3, если ((Ri))!= #d, то(PC):=(PC)+rel; если ((Ri))< #d,то(С):=1, иначе(C):=0;
LCALL ad16       (PC):=(PC)+3, (SP):=(SP)+1, ((SP)):=(PCL), (SP):=(SP)+1. ((SP)):=(PCH), (PC):=ad16
ACALL ad11 aaa10001     (PC):= (PC)+2,(SP):=(SP)+1, ((SP)):=(PCL), (SP):=(SP)+1, ((SP)):=(PCH), (PC[0-10])-=ad11
RET       (PCH):=((SP)),(SP):=(SP)-1, (PCL):=((SP)),(SP):=(SP)-1,
RETI       (PCH):=((SP)),(SP):=(SP)-1, (PCL):=((SP)),(SP):=(SP)-1,
NOP       (PC):=(PC)+1

 

 


Задание для домашней подготовки.

1. Повторить основные узлы МК51;

2. Повторить форматы данных и команд МК51;

3. Повторить способы адресации данных МК51;

4. Повторить команды передачи управления МК51;

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

1. Ознакомиться с заданием и проанализировать его.

2. Составить программу согласно заданию в кодах МК51.

3. Набрать текст составленной программы в текстовом редакторе отладчика.

4. Выполнить трансляцию программы (в случае возникновения ошибок исправить их).

5. Выполнить пошаговое выполнение программы и убедиться в правильности ее работы (в случае неправильности внести исправления в текст программы и повторить п.4-5)

 

Задание по лабораторной работе.

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

 

Таблица 2. Таблица вариантов заданий

Номер ADR1 ADR2 N ADR3
      E 4F
  62F   F  
  53E   D  
  44A   C  
      B  
      A 3D
        4F
  78A     3A
  69D   F 4C
  5AF   E  
  4BA      
  3C9      
  2D8 3A1   4C
  1E4 4B2   6C
  7F5 5C2   6F
  6E6 6D2   3A
  5A1 7E2 F 4A
  4D3 1F2 A 5B
  3C8 2E2 B 3B
  26F 3D2 C 4B
  4BE   D  
  3CA   E  
  2D3 3A2 F  
  1E7 4B2    
  7F3 5C2   3D
  6E5 6D2    
  5AD 7E4 C 3E

 

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

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

ü Задание по лабораторной работе;

ü Блок-схема алгоритма программы;

ü Текст программы с комментариями;

ü Ответы на вопросы:

- Описать способы адресации микроконтроллера i8051.

- Дать краткую характеристику команд передачи управления для микроконтроллера i8051.

 

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

В памяти команд с адреса 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

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: