Принцип работы однокристального микроконтроллера i8051

Введение.

Целью вычислительной практики 2 является формирование практических навыков по программированию микропроцессорных контроллеров на языке программирования АССЕМБЛЕР.

Практика знакомит с основами языка программирования АССЕМБЛЕР и его практического использования для программирования микропроцессорных контроллеров. Эти знания необходимы для изучения специальных дисциплин базовой подготовки.

Микроконтроллер – микросхема, предназначенная для управления электронными устройствами. По сути это компьютер способный выполнять простые задачи. С появлением МК связывают начало эры массового применения компьютерной автоматизации в области управления. Они используются в качестве основы управляющих блоков современных двигателей и электрических машин. Поэтому знания о необходимы будущим инженерам-электромеханикам для изучения специальных дисциплин базовой подготовки.

Практика подразумевает выполнение индивидуального задания по разработке и отладке рабочей программы согласно алгоритму, включающему в себя арифметические и логические операции, а также заданные способы адресации данных.

За время практики необходимо:

1. Составить блок-схему алгоритма задачи.

2. Написать текст программы на языке АССЕМБЛЕР.

3. Отладить программу в пошаговом режиме с помощью микропроцессорного контроллера.

4. Запустить программу и получить решение задачи с разными вариантами исходных данных.

Практическая отладка и выполнение рабочей программы производится с помощью учебного микропроцессорного контроллера УК52-ЭМ02.


 

Архитектура и система команд однокристального микроконтроллера i8051.

Микропроцессорный контроллер(МК) это вычислительное устройство, которое предназначено для обработки информации представленной в цифровом виде. МК имеет в своей структуре все основные элементы, которые входят в состав любого цифрового вычислительного устройства: центральный процессор (ЦП), оперативную (ОЗУ) и постоянную (ПЗУ) память, устройства ввода и вывода данных.

Однокристальный микроконтроллер i8051, изучаемый нами имеет гарвардскую архитектуру.

- Гарвардская архитектура – то есть раздельные области памяти для хранения команд (программы) и данных. Они могут иметь разную разрядность, в системе команд для обращения к ним предусмотрены различные команды и т.д.

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

Основным элементом вычислительного устройства является центральный процессор (ЦП), который выполняет определенный набор арифметических и логических операций над данными, представленных в цифровом двоичном виде. ЦП состоит из арифметико-логического устройства (АЛУ), которое собственно и выполняет операции над данными, и устройства управления и синхронизации (УУС), обеспечивающее управление и синхронизацию ЦП с остальными элементами структуры.

Исходные данные и программа в виде набора команд для реализации алгоритма обработки данных хранятся в ПЗУ и представлены в двоичном виде.

ПЗУ представляет собой регулярную структуру, состоящую из определенного числа ячеек, в каждой из которых хранится двоичное число

 

определенного формата (числа разрядов). Информация в ПЗУ записывается до начала работы устройства, и в дальнейшем изменяться не может. В процессе

 

обработки данных информации из ПЗУ может только считываться. На рис. 1 показана структурная схема микроконтроллера, с помощью которой рассмотрим принцип его работы.

ОЗУ предназначено для хранения промежуточных данных, возникающих в процессе работы, а также для хранения данных результата. Имеет структуру похожую на ПЗУ, но обычно меньше по количеству ячеек.

Исходные данные можно ввести с помощью устройства ввода данных, например, клавиатуры, сохранить их в ОЗУ и далее использовать их в процессе работы программы. Данные в ОЗУ могут записываться и считываться в процессе всего времени работы вычислительного устройства.

Результаты работы вычислительного устройства можно с помощью устройства вывода данных увидеть на дисплее, напечатать на бумаге, передать в любое другое цифровое устройство.

 

 

Рис 1. Структурная схема микроконтроллера.


Система команд.

 

Для того чтобы МК выполнял преобразования над данными не ему необходимо «знать»:

1. Какое преобразование он должен выполнить.

2. Какие исходные данные участвуют в операции.

Вся информация, которая поступает в микроконтроллер через устройства ввода, так и программа, которая ее обрабатывает, хранится в разных частях памяти ОЗУ и ПЗУ. Для передачи данных (операндов) в АЛУ для обработки требуется указать место расположения операнда в памяти – его адрес. Поэтому структура любой команды содержит два поля: поле кода операции (КОП) и поле операнда или его адреса (или операндов, если их два) (рис.2).

 

 

Рис.2. Структура команды микроконтроллера:

а) с двумя операндами; б) с одним операндом

 

Если содержание поля кода операции строго определено для конкретной команды, то содержание поля операнда может иметь различные представления. Здесь может быть представлен собственно операнд в его числовой форме либо указание места расположения (адрес) операнда в памяти. Он может храниться в одном из регистров, в памяти данных ОЗУ, в памяти программ ПЗУ, а следовательно, иметь различные способы представления (указания адреса).

Код операции команды определяет набор действий, которые должен выполнить ЦП для преобразования операнда (операндов). Он представляется в виде 8-разрядного двоичного кода. Например: 00100101В – код операции сложения двух операндов. В таком виде в составе команды он записывается в ПЗУ микроконтроллера. Полная система команд содержит 255 кодов операций.

Разработка программы значительно упрощается, если использовать язык программирования АССЕМБЛЕР. В этом языке для упрощения процедуры записи, проверки и чтения программ используется мнемоническое или символическое кодирование для обозначения кода операции. При этом каждая машинная команда, реально используемая как машинный двоичный код, обозначается трех- или четырехбуквенным мнемоническим символом. В основе этих символов лежит описание выполняемой операции на английском языке в виде аббревиатуры (либо сокращенное слово) от полной записи наименования команды на английском языке.

Адресом называется указание месторасположения элемента данных (операнда) в памяти микроконтроллера. Память микроконтроллера включает в

 

себя помимо ОЗУ и ПЗУ ряд специализированных отдельных ячеек памяти – регистров. Они предназначены для обслуживания АЛУ.

 

Способы указания адреса.

 

Способом адресации операнда называют его различные формы представления в структуре программы.

Адресация зависит от 2-х факторов:

1. Способа представления адреса.

А). Непосредственная адресация – адрес как таковой отсутствует. Поле операнда непосредственно содержит данные, с которыми работает команда. Перед полем операнда (в большинстве случаев) ставится префикс #.

Б). Прямая адресация - префикса перед операндом нет. В поле операнда содержится адрес ячейки памяти, которая содержит данные. Эта адресация используется для внутренней памяти данных.

В). Косвенная адресация. В этом случае в команде указывается один из регистров общего назначения, который содержит фактический адрес размещения операнда в памяти. Перед операндом ставится префикс @.

2. Полноты представления адреса.

А). Полная – адрес операнда указывается как число соответствующее адресу.

Б). Регистровая – адрес операнда представляет собой 3-х битовый номер регистра.

В). Неявная – адрес не указывается, но подразумевается на уровне аппаратного выполнения кода операции. Это касается только особых регистров.

В зависимости от сочетания варианта представления адреса и полноты его указания существуют способы адресации.

1. Непосредственная полная адресация - когда в поле операнда представлен непосредственно элемент данных, т.е. число над которым выполняется операция, например: команда записи в аккумулятор непосредственного операнда - MOV A, #d (MOV A, #01H), двухбайтовая команда, в которой второй байт представляет непосредственный операнд #d (число 01H).

2. Прямая полная адресация – в поле операнда указывается адрес расположения операнда в памяти, например команда записи в аккумулятор содержимого ячейки памяти данных с прямым адресом - MOV A, ad(MOV A, 21Н), в которой второй байт представляет прямой адрес ad в памяти данных (адрес 21Н).

3. Прямая регистровая адресация – в поле кода операции указывается трехбитный номер регистра rrr = 000÷1112, где расположен операнд. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента рабочего регистра - INC Rn (00001rrr). Таким образом, изменяя номер регистра rrr, мы можем обращаться к любому из восьми рабочих регистров выбранного банка.

4. Косвенная регистровая адресация - в поле кода операции указывается однобитный номер регистра i = 0÷12, в котором предварительно записан адрес расположения операнда в памяти, т.е. регистр выполняет роль указателя на фактический адрес. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента ячейки памяти

 

 

данных адрес которой находится в регистре Ri - INC @Ri (0000011i). Таким образом, изменяя номер регистра i, мы можем использовать регистры R0 и R1 в качестве указателей данных при косвенной адресации.

5. Прямая неявная адресация - код операции команды неявным образом определяет регистр (обычно это аккумулятор А), где находится операнд, например однобайтовая команда инверсии аккумулятора - CPL A.

6. Косвенная неявная адресация - код операции неявным образом определяет регистр (обычно это регистр DPTR, либо сумма (А+ DPTR)), который содержит фактический адрес, например команда относительного косвенного перехода – JMP @A+DPTR.

 

Группы команд.

 

Система команд содержит 111 базовых команд, которые по функциональному признаку можно подразделить на пять групп:

 

- пересылки данных;

- арифметических операций;

- логических операций;

- операций над битами;

- передачи управления.


2.Архитектура и программное обеспечение учебное контроллера МК 52 – ЭМ02.

 

Учебный контроллер МК 52 – ЭМ 02, был разработан на кафедре «Электромеханика». Он состоит из: корпуса, в котором находятся микросхема, клавиатуры и десятиразрядного дисплея, которые находятся на передней панели.

 

 
 

Рис. 3. Внешний вид учебного микроконтроллера УК52–ЭМ02

 

Клавиатура контроллера имеет 16 белых клавиш для ввода исходных данных в шестнадцатеричном виде (цифры от 0 до F). С помощью этих же клавиш вводятся команды «Монитора» (управляющей программы), позволяющие записывать и модифицировать содержимое ячеек памяти и регистров, а также выполнять отладку программы и ее выполнение. 4 красные клавиши управляют режимами работы контроллера:

Клавиша « #» - вызов или выход в программу Монитор без записи последнего изменения;

Клавиша « ˽ » - возврат к предыдущей ячейке памяти;

Клавиша « CR » – запись текущего значения и переход к следующему;

Клавиша « R » - сброс (установка) контроллера в исходное состояние.

2.1. Команды «монитора».

 

 

Команда «P» (Program) - позволяет просматривать и модифицировать содержимое внешней памяти программ (ВПП).

После нажатия на клавишу «P», предлагается ввести начальный адрес по умолчанию 0000Н (начало ОЗУ), после нажатия клавиши «CR» высвечивается содержимое ячейки памяти находящейся по данному адресу которое доступно для редактирования, после редактирования нужно нажать «CR» что приведёт к записи введенного значения по текущему адресу и переходу к следующей ячейке. При вводе программы необходимо помнить, что с адреса 0003Н начинается таблица векторов прерываний.

Клавиша « ˽ » позволяет вернуться к предыдущей ячейке памяти.

Клавиша « # » - выход в монитор, без записи последнего изменения

Команда «D»(xData) - позволяет просматривать и модифицировать содержимое внешней памяти данных (ВПД).

Команда полностью идентична предыдущей, за исключением того, что работает не с ВПП, а с ВПД.

Команда«E»(Embark) – позволяет просматривать и модифицировать содержимое регистров (РСФ).

После нажатия на клавишу «Е» в старших разрядах индикатора высвечивается имя регистра, в младших его содержимое. Нажатие клавиши «CR» приведет к записи вновь введенного значения в текущий регистр и переход к следующему.

Клавиша « ˽ » позволяет вернуться к предыдущему регистру.

Клавиша « # » - выход в монитор, без записи последнего изменения.

Команда «S» – позволяет просматривать и модифицировать содержимое оперативной памяти (ОЗУ).

После нажатия на клавишу «S» предлагается ввести начальный адрес, по умолчанию 00Н. После нажатия клавиши «CR» на дисплее высвечивается содержимое ячейки памяти находящейся по данному адресу, которое доступно для редактирования. После редактирования нужно нажать на клавишу «CR», что приведёт к записи введенного значения по текущему адресу и переходу к следующей ячейке

Клавиша « ˽ » позволяет вернуться к предыдущей ячейке памяти.

Клавиша « # » - выход в монитор, без записи последнего изменения.

Команда «G»(Go) - позволяет выполнить программу пользователя.

 

 

После нажатия на клавишу «G» будет предложено выбрать режим запуска S or G. Режим «S»- выполнение программы по шагам, после введения адреса запуска программа начнет выполняться по шагам для выполнения каждой следующей инструкции нужно нажать на клавишу «j» (jump), выход из этого режима осуществляется нажатием на клавишу «A» (abort). После каждого следующего шага на индикаторе в старших разрядах высвечивается содержимое счетчика команд PC а в младших содержимое аккумулятора, при этом самый младший разряд мерцает. Режим «G» (GO) - это выполнение программы с указанного адреса целиком. В любом случае для корректного возврата в монитор программа пользователя должна заканчиваться инструкцией LJMP C100Н (02 C1 00).

 

Команда «1» - позволяет очистить ВПД

Команда «2» - позволяет очистить ВПП


Выполнение задания.

 

Условие задачи.

 
 


@55 := 35H + / 7DH

Если R6 + #46 = #35H

Или R7.2 = #0 , то: 29H := #135

 

 
 


5554 := 3DH3CH + @0072Hp

Иначе:

29H.1 := #0, 29H.5 := #1

 

Переводим исходные коды операндов в шестнадцатеричный вид, т.к. все адреса и данные вводятся в микроконтроллер в шестнадцатеричном виде. (Табл. 1)

 

Исходные коды операндов Коды операндов в шестнадцатеричном виде
#46 #2EH
#0 #0H
@55 @37H
#135 #87H
37H
36H
#1 #1H

Табл. 1. Таблица кодов операндов программы в шестнадцатеричном виде;

 


Разработка алгоритма.

Алгоритм разработан в соответствии с условием задачи и представлен в виде блок-схемы.

На рис.4 показана блок-схема алгоритма для варианта задания приведенного выше. Как видно алгоритм имеет разветвленную структуру. В зависимости от результата выполнения первых двух операций, выполнение дальнейших операций происходит по различным ветвям алгоритма.

 
 

 


 

 
 

 

 


Рис. 4. Блок-схема алгоритма.