Проектирование центральных и периферийных устройств ЭВС-2

Структура фрагмента процессора. Функциональный состав процессорного блока. Входные/выходные сигналы распределителя. Микропрограмма управления для команды. Устройство управления и синхронизации, принцип его работы. Порты ввода, вывода микроконтроллера.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 17.04.2015
Размер файла 653,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

РТ0

IP.1

Бит приоритета таймера 0. Установка/сброс программой для присваивания прерыванию от таймера 0 высшего / низшего приоритета

РХ0

IP.0

Бит приоритета внешнего прерывания 0. Установка/сброс программой для присваивания высшего / низшего приоритета внешнему прерыванию INTO

Выполнение подпрограммы прерывания

Система прерываний формирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:

- в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;

- текущий машинный цикл - не последний в цикле выполняемой команды;

- выполняется команда RETI или любая команда, связанная с обращением к регистрам IE или IP

Если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается. По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC) и загружает в него адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа и окончания процедуры обслуживания данного прерывания.

7. Работа с внешней памятью микроконтроллера 8051

Обращения к внешней памяти подразделяются на обращения к внешней памяти программ и обращения к внешней памяти данных. В первом случае для формирования сигнала, активирующего ПЗУ с программой, используется сигнал PSEN, во втором - сигналы RD и WR, активизирующие ОЗУ с данными.

Если используется 16-битовый адрес, старшие восемь бит выводятся через порт Р2, где они сохраняются в течение всего цикла обращения к внешней памяти. Выходные каскады порта Р2 имеют внутреннюю нагрузку, несколько отличающуюся от Р1 и РЗ, благодаря чему в SFR P2 при выводе адресной информации вовсе не обязательно защелкивать все единицы. Добавим также, что при выводе адресной информации информация из SFR P2, хотя и не присутствует на выводах микроЭВМ, но и не теряется, восстанавливаясь на них после окончания обращений к внешней памяти (если в процессе этих обращений SFR P2 не был модифицирован).

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

На выводах порта Р0 младший байт адреса мультиплексируется с данными. Сигналы адреса/ данных задействуют оба полевых транзистора выходного каскада порта Р0. Таким образом, в этом случае выводы Р0 уже не являются выводами с открытым стоком и не требуют внешних нагрузочных элементов.

Сигнал ALE используется для фиксации младшего байта адреса во внешнем регистре-защелке. Адресная информация достоверна в момент окончания сигнала ALE.

Выводимый в цикле записи байт заносится в Р0 непосредственно перед активацией сигнала WR и остается неизменным до окончания этого сигнала. В цикле чтения данные на выводах Р0 для достоверного считывания должны быть установившимися к моменту окончания сигнала RD.

Во время обращения к внешней памяти CPU записывает 0FFH в SFR Р0, уничтожая, таким образом, хранимую там информацию. Таким образом, использовать для записи порт Р0 при работе с внешней памятью надо с известной долей осторожности.

Обращение к внешней памяти программ возможно в двух случаях:

- когда сигнал ЕА активен, т.е. имеет нулевой уровень;

- когда программный счетчик PC содержит число больше 0FFH.

Следовательно, при использовании микро-ЭВМ, не имеющей встроенного ПЗУ или не использующей его, на входе ЕА должен присутствовать сигнал с нулевым уровнем.

Когда CPU работает с внешней памятью программ, все линии порта Р2 используются для вывода старшего байта адреса и не могут быть использованы для обычного ввода\вывода информации. При этом, как отмечалось выше, в SFR P2 может быть занесена любая информация - адресная информация, выводимая через Р2, не зависит от состояния его SFR.

8. Режимы микроконтроллера с пониженным энергопотреблением

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

МикроЭВМ имеют два режима с пониженным потреблением тока:

- режим холостого хода (XX);

- режим выключенного напряжения питания (ВНП).

Режим XX характеризуется пониженным энергопотреблением в сравнении с обычным рабочим режимом микро-ЭВМ. Второй режим фирмой назван «Power Down Mode», но в этом режиме можно снизить энергопотребление МП отключением основного источника питания по выводу Ucc (для сохранения содержимого внутреннего ОЗУ в этом случае нужно подключить резервный источник питания на вывод RST).

В режиме XX (IDL = 1) тактовые сигналы от работающего генератора поступают на систему прерываний, последовательный порт и таймеры / счетчики, но синхронизация устройства управления МП отключается. Регистры встроенной памяти данных сохраняют содержимое, на выводах всех портов удерживаются логические состояния, которые были на них в момент перехода в режим XX.

В режиме ВНП (PD = 1) генератор выключается и прекращается тактирование и последовательного порта, таймеров/ счетчиков, системы прерываний. Как и в режиме XX, состояние регистров, резидентного ОЗУ и выводов портов остается неизменным.

Режимы XX и ВНП активизируются при установке соответствующих битов в SFR PCON (регистре управления мощностью, адрес 87h). При одновременно установленных в состояние 1 битах IDL и PD регистра PCON, состояние PD имеет преимущество и МП переходит в режим ВНП. После сброса автоматически в регистре PCON устанавливается состояние 0XXX0000.

В n-МОП версиях микроЭВМ регистр PCON содержит, как правило, только SMOD. Остальные четыре бита присутствуют только в КМОП устройствах. Пользовательские программы не должны заносить состояние «1» в незанятые биты (PCON4 - PCON6), так как они могут использоваться в последующих модификациях микроЭВМ. Это ограничение справедливо для всех не занятых регистрами областей регистровой памяти данных (включая области регистров SFR). Для достижения совместимости уже разработанного программного обеспечения с новыми изделиями дополнительные возможности последних будут включаться установкой в 1 битов в соответствующих регистрах. Пользовательские программы, устанавливающие в 1 неиспользуемые биты, будет нормально работать на микро-ЭВМ, имеющихся в наличии сегодня, но вовсе не обязательно будет работать на новых микро-ЭВМ, несмотря на их полную программную совместимость с семейством 8051.

9. Режим XX

В режим холостого хода (ХХ) МЭВМ переводится любой командой, устанавливающей в 1 бит PCON.0. В режиме XX выполнение программы приостанавливается, так как на CPU перестает поступать сигнал тактового генератора. Однако содержимое внутреннего ОЗУ и регистров специальных функций остается неизменным, выводы портов удерживают значения, которые были на них до перехода в режим XX, на таймеры / счетчики, приемопередатчик и на систему прерываний продолжают поступать тактовые сигналы. На выводах ALE и PSEN устанавливаются сигналы единичного уровня.

Состояние выводов портов зависит от типа ОЗУ, с которым микро-ЭВМ обменивалась информацией перед тем как перейти в режим XX. При работе с внутренним ОЗУ на выводах портов присутствуют данные из соответствующих SFR (естественно, если порт в режиме вывода информации). При работе с внешним ОЗУ выводы порта 0 переходят в высокоимпедансное состояние, а на выводах порта 2. сохраняется адресная информация. На выводах портов 1 и 3 присутствуют данные из SFR портов.

Вывести микро-ЭВМ из режима XX можно двумя способами. Так, вызов любого из прерываний приведет к аппаратному стиранию бита PCON.0, прекращающему XX. Прерывание будет обслужено, и очередной после RETI выполняемой командой будет та, которая следует за командой, приведшей к переходу микро-ЭВМ в режим XX. флаги GF0 и GF1 могут использоваться для индикации того, произошло ли прерывание во время нормальной работы или во время XX. Например, команда, запускающая этот режим, может также устанавливать один или оба флага. Когда режим XX прекращен прерыванием, сервисная программа прерывания может проверять состояние флагов.

Другой способ прекращения XX - с помощью аппаратного сброса. Поскольку синхрогенератор продолжает работать, аппаратный сброс должен поддерживаться в активном состоянии, только в течение двух машинных циклов (24 периодов колебаний).

Сигнал сброса стирает бит PCON.0. В этот момент CPU возобновляет выполнение программы с самого начала. Как показано на рис. 14, перед началом отработки алгоритма внутреннего запуска могут иметь место два или три машинных цикла выполнения программы. Встроенное в микросхему устройство в это время препятствует доступу к внутреннему ОЗУ, но доступ к выводам порта не ограничен. Чтобы исключить возможность появления неопределенных выходных сигналов на выводах порта, команда, следующая за вызывающей XX, не должна быть командой, записывающей информацию в SFR порта или во внешнее ОЗУ данных. Напомним, что после аппаратного сброса содержимое SFR переопределяется.

9 Режим ВНП.

Команда, устанавливающая в 1 бит PCON.1, переводит микро-ЭВМ в режим ВНП. В нем генератор микро-ЭВМ, как отмечалось, останавливается, прекращает функционирование не только CPU, но и таймеры / счетчики, приемопередатчик, система прерываний. При наличии основного или резервного источника питающего напряжения встроенное ОЗУ и регистры SFR сохраняют свое содержимое. Состояние портов не отличается от состояния при переходе в режим XX (см. выше). Однако в отличие от режима XX на выводах ALE и PSEN устанавливаются сигналы с нулевым уровнем.

Единственный способ выйти из этого режима - аппаратный сброс. Он переопределяет содержимое всех SFR, но не меняет содержимого встроенного ОЗУ.

В рассматриваемом режиме напряжение питания Ucc может снижаться вплоть до 2 В. Следует, однако, позаботиться, чтобы снижалось оно не раньше перехода микроэвм в режиме ВНП и восстанавливалось до прежнего значения прежде, чем она выйдет из этого режима. Сигнал сброса, возвращающий микро-ЭВМ в обычный режим, не должен подаваться раньше, чем Ucc достигнет своего рабочего значения, и должен поддерживаться в активном состоянии достаточно долго, чтобы генератор успел запуститься и его колебания стабилизировались (обычно - не менее 10 мс).

10 Система команд микроконтроллера семейства 8051.

10.1 Общая характеристика.

Микро-ЭВМ рассматриваемого семейства являются типичными микропроцессорными устройствами с архитектурой SISC - со стандартным набором команд. Поэтому их система команд довольно обширна и включает в себя 111 основных команд. Их длина - один, два или три байта, причем большинство из них (94%) - одно- или двухбайтные. Все команды выполняются за один или два машинных цикла (соответственно 1 или 2 мкс при тактовой частоте 12 МГц), исключение - команды умножения и деления, которые выполняются за четыре машинных цикла (4 мкс). Микро-ЭВМ семейства 8051 используют прямую, непосредственную, косвенную и неявную, адресацию данных

В качестве операндов команд микро-ЭВМ семейства 8051 могут использовать отдельные биты, четырехбитные цифры, байты и двухбайтные слова.

Все эти черты обычны для набора команд любого SISC-процессора и по сравнению с RISC набором команд обеспечивает большую компактность программного кода и увеличение быстродействия при выполнении сложных операций.

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

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

10.2 Типы команд

Всего микро-ЭВМ выполняют 13 типов команд, они приведены в таблице 6. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) - адреса операндов или их непосредственные значения.

Типы команд

Тип команды

Первый байт D7…D0

Второй байт D7…D0

Третий байт D7…D0

тип 1

коп

тип 2

коп

#d

тип 3

коп

ad

тип 4

коп

bit

тип 5

коп

rel

тип 6

коп

a7…a0

тип 7

коп

ad

#d

тип 8

коп

ad

rel

тип 9

коп

ads

add

тип 10

коп

#d

rel

тип 11

коп

bit

rel

тип 12

коп

ad16h

ad16l

тип 13

коп

#d16h

#d16l

10.3 Типы операндов

Состав операндов включает в себя операнды четырёх типов: биты, 4-битные цифры, байты и 16-битные слова.

Микроконтроллер имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и портов. Для адресации битов используется прямой 8-битный адрес (bit). Косвенная адресация битов невозможна. Карты адресов отдельных битов представлены на рис. 9.

Четырёхбитные операнды используются только при операциях обмена SWAP и XCHD.

Восьмибитным операндом может быть ячейка памяти, программ (ПП) или данных (резидентной (РПД) или внешней (ВПД)), константа (непосредственный операнд), 'регистры специальных функций, а также порты ввода / вывода. Порты и регистры специальных функций адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры R0, R1, DPTR и PC.

Двухбайтные операнды - это константы и прямые адреса, для представления которых используются второй и третий байты команды.

(D7)

(Do)

7F

7D

79

78

77

76

75

74

73

72

71

70

6F

6D

69

68

67

66

65

64

63

62

61

60

5F

5D

59

58

57

56

55

54

53

52

51

50

4F

4D

49

48

47

46

45

44

43

42

41

40

3F

ЗЕ

3D

ЗС

ЗВ

ЗА

39

38

37

36

35

34

33

32

31

30

2F

2D

29

28

27

26

25

24

23

22

21

20

1F

1D

19

18

17

16

15

14

13

12

11

10

0F

0D

09

08

07

06

05

04

03

02

01

00

Банк 3

Банк 2

Банк 1

Банк 0

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

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

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

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

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

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

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

Формат команд - одно-, двух- и трехбайтовый, причем большинство команд (94) имеют формат один или два байта. Первый байт любых типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.

Состав операндов включает в себя операнды четырех типов: биты, ниблы (4 разряда), байты и 16-битные слова. Время исполнения команд составляет 1, 2 или 4 машинных цикла. При тактовой частоте 12 мГц длительность машинного цикла составляет 1 мкс, при этом 64 команды исполняются за 1 мкс, 45 команд - за 2 мкс и 2 команды (умножение и деление) - за 4 мкс.

Набор команд MCS-51 поддерживает следующие ряд режимов адресации.

Прямая адресация (Direct Addressing).Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров SFR.

Косвенная адресация (Indirect Addressing).В этом случае инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации может применяться при обращении как к внутреннему, так и внешнему ОЗУ. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP.

Для 16-битной адресации используется только регистр «указатель данных» (DPTR - Data Pointer).

Регистровая адресация (Register Instruction).Данная адресация применяется для доступа к регистрам R0+R7 выбранного банка. Команды с регистровой адресацией содержат в байте кода операции трехбитовое поле, определяющее номер регистра. Выбор одного из четырех регистровых банков осуществляется программированием битов селектора банка (RS1, RS0) в PSW.

Непосредственная адресация (Immediate constants).Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта (data8, data-i6).

Индексная адресация (Indexed Addressing). Индексная адресация используется при обращении к памяти программ и только при чтении. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).

Другой тип индексной адресации применяется в командах «перехода по выбору» (Case Jump). При этом адрес перехода вычисляется как сумма указателя базы и аккумулятора.

Неявная адресация (Register-Specific Instructions).Некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR), при этом данные регистры не имеют адреса, указывающего на них; это заложено в код операции

10.5 Обозначения, используемые при описании команд.

Rn (n = 0,1,…, 7) - регистр общего назначения в выбранном банке регистров;

@Ri (i= 0, 1) - регистр общего назначения в выбранном банке регистров, используемый в качестве регистра косвенного адреса;

ad - адрес прямо адресуемого байта;

ads - адрес прямо адресуемого байта-источника;

add - адрес прямо адресуемого байта-получателя;

ad11 - 11-разрядный абсолютный адрес перехода;

ad16 - 16-разрядный абсолютный адрес перехода;

rel - относительный адрес перехода;

#d - непосредственный операнд;

#d16 - непосредственный операнд (2 байта);

bit - адрес прямо адресуемого бита;

/bit - инверсия прямо адресуемого бита;

А - аккумулятор;

PC - счетчик команд;

DPTR - регистр указатель данных;

() - содержимое ячейки памяти или регистра,

10.6 Команды пересылки данных микроконтроллера 8051.

Эта группа представлена 28 командами, их краткое описание приведено в таблице, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Команды передачи данных

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Пересылка в аккумулятор из регистра (п=0+7)

MOV A, Rn

11101rrr

1

1

1

(A)^(Rn)

Пересылка в аккумулятор прямоадресуемого байта

MOV A, ad

11100101

3

2

1

(A)< - (ad)

Пересылка в аккумулятор байта из РПД (i=0,1)

MOV A, @Ri

1110011i

1

1

1

(A)» - ((Ri))

Загрузка в аккумулятор константы

MOV A, #d

01110100

2

2

1

(A) < - #d

Пересылка в регистр из аккумулятора

MOV Rn, A

11111ГГГ

1

1

1

(Rn)^(A)

Пересылка в регистр прямоадресуемого байта

MOV Rn, ad

10101rrr

3

2

2

(Rn)<^(ad)

Загрузка в регистр константы

MOV Rn, #d

01111rrr

2

2

1

(Rn)<-#d

Пересылка по прямому адресу аккумулятора

MOV ad, A

11110101

3

2

1

(ad) < - (A)

Пересылка по прямому адресу регистра

MOV ad, Rn

10001rrr

3

2

2

(ad)< - (Rn)

Пересылка прямоадресуемого байта по прямому адресу

MOV add, ads

10000101

g

3

2

(add) < - (ads)

Пересылка байта из РПД по прямому адресу

MOV ad, @Ri

1000011i

3

2

2

(ad)< - ((Ri))

Пересылка по прямому адресу константы

MOV ad, #d

01110101

7

3

2

(ad)<-#d

Пересылка в РПД из аккумулятора

MOV @Ri, A

1111011i

1

1

1

((Ri))^(A)

Пересылка в РПД прямоадресуемого байта

MOV @Ri, ad

0110011i

3

2

2

((Ri))< - (ad)

Пересылка в РПД константы

MOV @Ri, #d

0111011J

2

2

1

((Ri))^#d

Загрузка указателя данных

MOV DPTR, #d16

10010000

13

3

2

(DPTR)<-#d16

Пересылка в аккумулятор байта из ПП

MOVC A, @A+DPTR

10010011

1

1

2

< - ((A) +(DPTR))

Пересылка в аккумулятор байта из ПП

MOVC A, @A+PC

10000011

1

1

2

(PC)< - (PC)+1, (A) < - ((A)+(PC))

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Пересылка в аккумулятор байта из ВПД

MOVX A, @Ri

1110001i

1

1

2

(A) < - ((Ri))

Пересылка в аккумулятор байта из расширенной ВПД

MOVXA,@DPTR

11100000

1

1

2

(A) < - ((DPTR))

Пересылка в ВПД из аккумулятора

MOVX @Ri, A

1111001i

1

1

2

((Ri))< - (A)

Пересылка в расширенную ВПД из аккумулятора

MOVX @DPTR, A

11110000

1

1

2

((DPTR)) < - (A)

Загрузка в стек

PUSH ad

11000000

3

2

2

(SP)< - (SP) + 1, ((SP))» - (ad)

Извлечение из стека

POP ad

11010000

3

2

2

(ad)< - (SP), (SP) < - (SP) - 1

Обмен аккумулятора с регистром

XCH A, Rn

11001rrr

1

1

1

(A) «-» (Rn)

Обмен аккумулятора с прямоадресуемым байтом

XCH A, ad

11000101

3

2

1

(A) «-» (ad)

Обмен аккумулятора с байтом из РПД

XCH A, @Ri

1100011i

1

1

1

(A) - ((Ri))

Обмен младших тетрад аккумулятора и байта РПД

XCHD A, @Ri

1101011i

1

1

1

(A0…3) W(Ri) o з)

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение / запись байт из внешней памяти данных, вторая - чтение байт из памяти программ.

По команде ХСН выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD - обмен младшими тетрадами (битами 0 - 3), (4 - 7).

Команды PUSH и POP предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

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

Например, чтение PSW в аккумулятор может быть выполнено командой

MOV A, PSW, которая преобразуется Ассемблером к виду

MOVA, 0D0h(E5D0),

где Е5 - код операции, a D0 - операнд (адрес PSW).

В микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А - при неявной адресации (например, MOV A, R0) и АСС - при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

10.7 Команды арифметических операций 8051.

В эту группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Арифметические операции.

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Сложение аккумулятора с регистром (п=0*7)

ADD A, Rn

00101 rrr

1

1

1

(A) < - (A) + (Rn)

Сложение аккумулятора с прямоадресуемым байтом

ADD A, ad

00100101

3

2

1

(A) < - (A) + (ad)

Сложение аккумулятора с байтом из РПД (i = 0,1)

ADD A, @Ri

0010011i

1

1

1

(A) «_ (A) + ((Ri))

Сложение аккумулятора с константой

ADD A, #d

00100100

2

2

1

(A) «- (A) + #d

Сложение аккумулятора с регистром и переносом

ADDC A, Rn

00111 rrr

1

1

1

(A) < - (A) + (Rn) + (C)

Сложение аккумулятора с прямоадресуемым байтом и переносом

ADDC A, ad

00110101

3

2

1

(A) < - (A) + (ad) + (C)

Сложение аккумулятора с байтом из РПД и переносом

ADDC A, @Ri

0011011i

1

1

1

(A) < - (A) + ((Ri)) + (C)

Сложение аккумулятора с константой и переносом

ADDC A, #d

00110100

2

2

1

(A) < - (A) + # d + (C)

Десятичная коррекция аккумулятора

DA A *

11010100

1

1

1

Если (Ао з)>9 или ((АС)=1), то (Ао..з)< - (Ao 3) + 6, затем если (Ад. 7)>9 или((С)=1), то

(Ад…7) < - (Ад.7) + 6

Вычитание из аккумулятора регистра и заёма

SUBB A, Rn

10011 rrr

1

1

1

(А) < - (А) - (С) - (Rn)

Вычитание из аккумулятора прямоадресуемого байта и заема

SUBB A, ad

10010101

3

2

1

(А) «- (А) - (С) - ((ad))

Вычитание из аккумулятора байта РПД и заема

SUBB A, @Ri

1001011i

1

1

1

(А) < - (А) - (С) - ((Ri))

Вычитание из аккумулятора константы и заема

SUBB A, d

10010100

2

2

1

(А) < - (А) - (С) - #d

Инкремент аккумулятора

INC A

00000100

1

1

1

(А) < - (А) + 1

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Инкремент регистра

INCRn

00001 rrr

1

1

1

(Rn)< - (Rn)+ 1

Инкремент прямоадресуемого байта

INC ad

00000101

3

2

1

(ad)< - (ad) + 1

Инкремент байта в РПД

INC@Ri

0000011i

1

1

1

((Ri))< - ((Ri))+1

Инкремент указателя данных

INC DPTR

10100011

1

1

2

(DPTR) < - (DPTR) + 1

Декремент аккумулятора

DEC A

00010100

1

1

1

(A)» - (A) - 1

Декремент регистра

DECRn

00011 rrr

1

1

1

(Rn)< - (Rn) - 1

Декремент прямоадресуемого байта

DEC ad

00010101

3

2

1

(ad)< - (ad) - 1

Декремент байта в РПД

DEC @Ri

0001011i

1

1

1

«Ri))< - ((Ri)) - 1

Умножение аккумулятора на регистр В

MULAB

10100100

1

1

4

(B) (A) < - (A)*(B)

Деление аккумулятора на регистр В

DIVAB

10000100

1

1

4

(B). (A) 4 - (A)/(B)

По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице. Ц

Флаг С устанавливается при переносе из разряда D7, т.е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Флаг OV устанавливается при переносе из разряда D6, т.е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

10.8 - Команды логических операций микроконтроллера 8051.

В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (Л), логическое ИЛИ (V), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Логические операции

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Логическое И аккумулятора и регистра

ANL A, Rn

01011 rrr

1

1

1

(A) < - (A) AND (Rn)

Логическое И аккумулятора и прямоадресуемого байта

ANL A, ad

01010101

3

2

1

(A) <_ (A) AND (ad)

Логическое И аккумулятора и байта из РПД

ANL A, @Ri

0101011i

1

1

1

(A)< - (A) AND((Ri))

Логическое И аккумулятора и константы

ANL A, #d

01010100

2

2

1

(A) < - (A) AND #d

Логическое И прямоадресуемого байта и аккумулятора

ANL ad, A

01010010

3

2

1

(ad) < - (ad) AND (A)

Логическое И прямоадресуемого байта и константы

ANL ad, #d

01010011

7

3

2

(ad) < - (ad) AND #d

Логическое ИЛИ аккумулятора и регистра

ORLA, Rn

01001 rrr

1

1

1

(A) < - (A) OR (Rn)

Логическое ИЛИ аккумулятора и прямоадресуемого байта

ORLA, ad

01000101

3

2

1

(A) «- (A) OR (ad)

Логическое ИЛИ аккумулятора и байта из РПД

ORLA, @Ri

0100011i

1

1

1

(A) «- (A) OR ((Ri))

Логическое ИЛИ аккумулятора и константы

ORL A, #d

01000100

2

2

1

(A) < - (A) OR #d

Логическое ИЛИ прямоадресуемого байта и аккумулятора

ORL ad, A

01000010

3

2

1

(ad) < - (ad) OR (A)

Логическое ИЛИ прямоадресуемого байта и константы

ORL ad, #d

01000011

7

3

2

(ad) < - (ad) OR #d

Исключающее ИЛИ аккумулятора и регистра

XRL A, Rn

01101 rrr

1

1

1

(A) < - (A) XOR (Rn)

Исключающее ИЛИ аккумулятора и прямоадресуемого байта

XRL A, ad

01100101

3

2

1

(A) < - (A) XOR (ad)

Исключающее ИЛИ аккумулятора и байта из РПД

XRL A, @Ri

01100111

1

1

1

(A) 4 - (A) XOR ((Ri))

Исключающее ИЛИ аккумулятора и константы

XRL A, #d

01100100

2

2

1

(A) < - (A) XOR #d

Исключающее ИЛИ прямоадресуемого байта и аккумулятора

XRL ad, A

01100010

3

2

1

(ad) < - (ad) XOR (A)

Исключающее ИЛИ прямоадресуемого байта и константы

XRL ad, #d

01100011

7

3

2

(ad) < - (ad) XOR #d

Сброс аккумулятора

CLRA

11100100

1

1

1

(A)<-0

Инверсия аккумулятора

CPLA

11110100

1

1

1

(A) < - NOT(A)

Сдвиг аккумулятора влево циклический

RLA

00100011

1

1

1

(An+1)< - (An), n=CH3, (Ao) < - (A7)

Сдвиг аккумулятора влево через перенос

RLCA

00110011

1

1

1

(An+i)< - (An), n=0+6 (Ao) < - (С), (С) НАт)

Сдвиг аккумулятора вправо циклический

RRA

00000011

1

1

1

(An)» - (An+i)1n=0+6, (A7)» - (Ao)

Сдвиг аккумулятора вправо через перенос

RRCA

00010011

1

1

1

(An)< - (An+i), n=0*6 (A7) < - (С), (С) «- (Ao)

Обмен местами тетрад в аккумуляторе

SWAP A

11000100

1

1

1

(A0…3) < - «¦ (A4…7)

10.9 Команды операций над битами микроконтроллера 8051.

Группа состоит из 12 команд, краткое описание которых приведено в таблице. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (Л) и ИЛИ (V). В качестве «логического» аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Операции с битами

Название команды

Мнемокод

КОП

т

Б

Ц

Операция

Сброс переноса

CLRC

11000011

1

1

1

(С)<-0

Сброс бита

CLR bit

11000010

4

2

1

(b)<-0

Установка переноса

SETBC

11010011

1

1

1

(С)<-1

Установка бита

SETB bit

11010010

4

2

1

(b)<-1

Инверсия переноса

CPLC

10110011

1

1

1

(С) < - NOT(C)

Инверсия бита

CPL bit

10110010

4

2

1

(b)< - NOT(b)

Логическое И бита и переноса

ANL C, bit

10000010

4

2

2

(C)< - (C) & (b)

Логическое И инверсии бита и переноса

ANL C, /bit

10110000

4

2

2

(С)< - (С)& (NOT(b))

Логическое ИЛИ бита и переноса

ORL C, bit

01110010

4

2

2

(С) < - (С) OR (b)

Логическое ИЛИ инверсии бита и переноса

ORL C, /bit

10100000

4

2

2

(С)< - (С) OR (NOT(b))

Пересылка бита в перенос

MOV C, bit

10100010

4

2

1

(C)< - (b)

Пересылка переноса в бит

MOV bit, С

10010010

4

2

2

(b)< - (C)

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

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

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

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

Название команды

Мнемокод

КОП

T

Б

Ц

Операция

Длинный переход в полном объеме ПП

LJMP ad16

00000010

12

3

2

(PC)<-ad16

Абсолютный переход внутри страницы в 2 Кб

AJMPad11

aioa9a800001

6

2

2

(PC) < - (PC) + 2, (РСо-ю) < - ad11

Короткий относительный переход внутри страницы в 256 байт

SJMP rel

10000000

5

2

2

(PC) < - (PC) + 2, (PC) < - (PC) +rel

Косвенный относительный переход

JMP ©A+DPTR

01110011

1

1

2

(PC) < - (A) + (DPTR)

Переход, если аккумулятор равен нулю

JZrel

01100000

5

2

2

(PC)< - (PC)+2, если (А)=0, то (PC)» - (PC)+rel

Переход, если аккумулятор не равен нулю

JNZ rel

01110000

5

2

2

(PC)< - (PC)+2, если (А)*0, то (PC)< - (PC)+rel

Переход, если перенос равен единице

JCrel

01000000

5

2

2

(PC)< - (PC)+2, если (С)=1, то (PC)< - (PC)+rel

Переход, если перенос равен нулю

JNC rel

01010000

5

2

2

(PC)< - (PC)+2, если (С)=0, то (PC)< - (PC)+rel

Переход, если бит равен единице

JB bit, rel

00100000

11

3

2

(PC)< - (PC)+3, если (b)=l, то (PC)< - (PC)+rel

Переход, если бит равен нулю

JNB bit, rel

00110000

11

3

2

(PC)< - (PC)+3, если (b)=0, то (PC)< - (PC)+rel

Переход, если бит установлен, с последующим сбросом бита

JBC bit, rel

00010000

11

3

2

(PC) < - (PC) + 3, если(Ь)=1, то (b) <- 0 и (РС)< - (PC) + rel

Декремент регистра и переход, если не нуль

DJNZ Rn, rel

11011rrr

5

2

2

(PC) < - (PC) + 2, (Rn) < - (Rn) -1, если (Rn) t 0, то (PC) < - (PC) + rel

Декремент прямоадресуемого байта и переход, если не нуль

DJNZ ad, rel

11010101

8

3

2

(PC) < - (PC) + 2, (ad)< - (ad) - 1, если (ad) t 0, то (PC) < - (PC) + rel

Сравнение аккумулятора с прямоадресуемым байтом и переход, еслк не равно

CJNE A, ad, rel

10110101

8

3

2

(PC) 4 - (PC) + З.если (A) t (ad), то (PC) < - (PC) + ге1, если (A) < (ad), то (С) < - 1, иначе (С) <- 0

Сравнение аккумулятора с константой и переход, если не равно

CJNE A, #d, rel

10110100

10

3

2

(PC) < - (PC) + З.если (А) * #d, то (PC) < - (PC) + ге1, если (А) < #d, то (C)< - 1, иначе (С) <-0

Сравнение регистра с константой и переход, если не равно

CJNE Rn, #d, re

10111rrr

10

3

2

(PC) «- (PC) + З.если (Rn) t #d, то (PC) < - (PC) + rel, если (Rn) < #d, то (C)< - 1, иначе (С) <- 0

Сравнение байта в РПД с константой и переход, если не равно

CJNE @Ri,#d, re

1011011i

10

3

2

(PC) < - (PC) + З.если ((Ri)) * #d, то (PC) «- (PC) + ге1, если ((Ri)) < #d, то (C)< - 1, иначе (С) <-0

Длинный вызов подпрограммы

LCALL adl6

00010010

12

3

2

(PC) < - (PC) + 3, (SP) < - (SP) +1, ((SP)) < - (PC0…7), (SP)< - (SP)+1, ((SP))» - (PCe…i5), (PC)«-ad16

Абсолютный вызов подпрограммы в пределах страницы в 2 Кб

ACALLad11

a10a9a8i0001

6

2

2

(PC) 4 - (PC) + 2, (SP) < - (SP) + 1, ((SP)) < - (PC0…7), (SP)» - (SP)+1, ((SP)) < - (PC8…is), (PC0-10) < - ad11

Возврат из подпрограммы

RET

00100010

1

1

2

(PC8…15)» - ((SP)), (SP)< - (SP) - 1, (PCo…7) < - ((SP)), (SP) < - (SP) - 1

Возврат из подпрограммы обработки прерывания

RETI

00110010

1

1

2

(PCe..15) < - ((SP)), (SP)» - (SP) - 1,

(PC0…7) < - ((SP)), (SP) <r - (SP) - 1

Пустая операция

NOP

00000000

1

1

1

(PC)< - (PC)+ 1

Команда безусловного перехода LJMP (L - long - длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т.е. команда обеспечивает переход в любую точку памяти программ.

Действие команды AJMP (А - absolute - абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.

В отличие от предыдущих команд, в команде SJMP (S - short - короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения rel рассматривается как число со знаком, а, следовательно, переход возможен в пределах - 128…+127 байт относительно адреса команды, следующей за командой SJMP.

Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.

Командами условного перехода можно проверять следующие условия:

JZ - аккумулятор содержит нулевое значение;

JNZ - аккумулятор содержит не нулевое значение

JC - бит переноса С установлен;

JNC - бит переноса С не установлен;

JB - прямо адресуемый бит равен 1

NB - прямо адресуемый бит равен 0;

JBC - прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.

Все команды условного перехода рассматриваемых микро-ЭВМ содержат короткий относительный адрес, т.е. переход может осуществляться в пределах-128… +127 байт относительно следующей команды.

Команда DJNZ предназначена для организации программных циклов. Регистр Rn или байт по адресу ad, указанные в теле команды, содержат счетчик повторений цикла, а смещение rel - относительный адрес перехода к началу цикла. При выполнении команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.

Команда CJNЕ для реализации процедур ожидания внешних событий. В теле команды указаны «координаты» двух байт и относительный адрес перехода rel. В качестве двух байт могут быть использованы, например, значения содержимого аккумулятора и прямо адресуемого байта или косвенно адресуемого байта и константы. При выполнении команды значения указанных двух байт сравниваются и в случае, если они не одинаковы, осуществляется переход. Например, команда WAIT: CJNE A, PO, WAIT будет выполняться до тех пор, пока значения на линиях порта Р0 не совпадут со значениями содержимого аккумулятора.

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

Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание обслуженного уровня. Команды RET и RETI не различают, какой командой - LCALL или ACALL - была вызвана подпрограмма, так как и в том, и в другом случае в стеке сохраняется полный 16-разрядный адрес возврата.

Большинство Ассемблеров допускают обобщенную мнемонику JMP - для команд безусловного перехода и CALL - для команд вызова подпрограмм. Конкретный тип команды определяется Ассемблером, исходя из «длины» перехода или вызова.

На рисунке приведен состав внешних выводов МП 8051.

Состав внешних выводов МП

Размещено на Allbest.ru


Подобные документы

  • Классификация и структура микроконтроллеров. Структура процессорного ядра микроконтроллера, основные характеристики его производительности. Архитектура процессорного модуля, размер и тип встроенной памяти, набор периферийных устройств, тип корпуса.

    курсовая работа [41,7 K], добавлен 28.08.2010

  • Особенности микроконтроллера ATTINY семейства AVR. Описание ресурсов микроконтроллера ATTINY12: описание процессора, порты ввода/вывода, периферийные устройства, архитектура ядра. Разработка устройства со световыми эффектами на базе микроконтроллера.

    курсовая работа [2,1 M], добавлен 24.06.2013

  • Исследование архитектуры микроконтроллера и его интерфейсных устройств. Характеристика выбора ввода и вывода для входных и выходных сигналов. Анализ расположения переменных и констант в регистрах процессора, разработки алгоритма и программы управления.

    курсовая работа [1,4 M], добавлен 07.03.2012

  • Микроконтроллер ATtiny2313/V фирмы Atmel: структура, основные характеристики, возможности. Центральное ядро процессора. Системная перепрограммируемая Flash-память программ. Порты ввода-вывода микроконтроллера. Блок-схема восьмиразрядного таймера/счётчика.

    курсовая работа [2,2 M], добавлен 11.01.2011

  • Формирование кодовой таблицы аналогового сигнала. Общая характеристика микроконтроллера P83C51RB+. Дискретизация заданного сигнала генератора. Организация памяти и программная модель, регистры SFR микроконтроллера. Параллельные порты ввода/вывода.

    курсовая работа [1005,6 K], добавлен 07.08.2013

  • Принцип действия и электрическая структурная схема проектируемого генератора квадратурных напряжений. Описание платы ввода-вывода NI PCI-6251 и коннекторного блока BNC-2120. Разработка программного обеспечения генератора, результаты работы программы.

    курсовая работа [2,3 M], добавлен 08.01.2014

  • Внедрение микропроцессорной и цифровой техники в устройства управления промышленными объектами. Проектирование схемы детектора фронтов, генератора тактовых импульсов, счетного устройства, блока вывода в устройство обработки, блока индикации и управления.

    курсовая работа [247,5 K], добавлен 15.05.2012

  • Структурная схема устройства управления. Алгоритм работы микроконтроллера в его составе. Строение центрального процессорного элемента – микроконтроллера AVR семейства Classic. Принципиальная схема устройства, расчет временных параметров ее работы.

    курсовая работа [636,5 K], добавлен 03.12.2013

  • Микросхема КР 580 ВВ55А как программируемое устройство ввода/вывода параллельной информации, его внутренняя структура и функциональные особенности, сферы практического применения. Методика и этапы настройки контроллера для его нормальной работы.

    методичка [157,1 K], добавлен 24.06.2015

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

    курсовая работа [2,7 M], добавлен 19.12.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.