Вычислительные комплексы и системы

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

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 22.10.2019
Размер файла 319,7 K

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

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

PS

PT1

PX1

PT0

PX0

Разрешение обработки прерывания от внешних источников осуществляется установкой в единицу разрядов EX1 (EX0) регистра IE. Если прерывания разрешены, то обеспечивается переход к программе обслуживания прерывания, адрес которой определяется в соответствии с таблицей 6.
Обработка прерывания по переполнению таймеров/счетчиков производится в том случае, когда разряды ТF1 (ТF0) устанавливаются в единицу и прерывания разрешены (разряды ЕТ1 (ЕТ0) регистра IE установлены в единицу). Значения разрядов ТF1 (TF0) автоматически сбрасываются в нуль при выполнении первой команды подпрограммы обслуживания прерывания.
Формирование признаков RI и TI осуществляется по готовности приемника или передатчика последовательного порта. Разрешение прерывания от этого источника обеспечивается установкой в единицу разряда ES регистра IE.
Таблица 8
Адрес подпрограммы обслуживания прерываний

Источник запроса прерывания

Признак

Позиция в регистре

Адрес подпрограммы

Внешний источник прерывания 0

IE0

TCON.1

0003H

Внешний источник прерывания 1

IE1

TCON.3

0013H

Встроенный таймер/счетчик 0

TF0

TCON.5

000BH

Встроенный таймер/счетчик 1

TF1

TCON.7

001BH

Приемник последовательного порта

RI

SCON.0

0023H

Передатчик последовательного порта

TI

SCON.1

0023H

Запрещение обработки прерываний сразу от всех источников выполняется с помощью установки в нуль разряда ЕА регистра IE. Установка признака ЕА в единицу разрешает обработку прерываний от любого из пяти источников в зависимости от состояния разрядов 0 - 4 регистра IE. Приоритеты источников прерываний указываются с помощью установки в соответствующее состояние разрядов 0 - 4 регистра IP (таблица 8).
Таблица 9
Уровни приоритетов прерываний

Обозначение

Позиция в регистре

Источник запроса прерывания

Приоритет

PX0

IP.0

Внешний источник 0

0 (высший)

PT0

IP.1

Таймер/счетчик 0

1

PX1

IP.2

Внешний источник 1

2

PT1

IP.3

Таймер/счетчик 1

3

PS

IP.4

Последовательный порт

4 (низший)

IP.5-7

Резервные

Обработка прерываний начинается после выполнения текущей команды прерываемой программы до конца и запоминание содержимого счетчика команд (адреса возврата) в стеке. В счетчик команд загружается один из адресов, указанных в таблице 7. В ячейке памяти по этому адресу должна быть записана команда типа JMP безусловного перехода к начальному адресу подпрограммы обслуживания прерываний. Подпрограмма обслуживания прерываний должна начинаться командами записи в стек снова состояния программы PSW, аккумулятора, указателя данных и всех регистров, значение которых может быть изменено в процессе выполнения подпрограммы, и заканчиваться командами РОР восстановления из стека. В конце подпрограммы обслуживания прерывания обязательно должна быть записана команда RETI возврата из подпрограммы, после выполнения, которой в счетчик команд загружается из стека адрес возврата.
5.7 Организация последовательного ввода/вывода
Порт последовательного ввода/вывода используется в асинхронном режиме для связи со стандартными периферийными устройствами (дисплеем, телетайпом, модемом и др.), а также для объединения нескольких ОЭВМ. Для организации последовательного ввода/вывода используется регистр специального назначения SBUF, который обеспечивает обмен данными между регистром SBUF и сдвигающими регистрами приема и передачи информации. Запись байта в регистр SBUF приводит к автоматической переписи байта в сдвигающий регистр передатчика и последовательную передачу байта на внешнее устройство через вывод Р3.1 порта РЗ. Использование регистра SBUF при приеме позволяет совмещать операцию чтения ранее принятого байта с приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из регистра SBUF, то он будет потерян.
Таблица 10
Формат слова SCON

Номер разряда

7

6

5

4

3

2

1

0

Обозначение разрядов

SM0

SM1

SM2

REN

TB8

RB8

T1

R1

Программно могут быть заданы четыре режима работы последовательного порта ввода/вывода. Для управления последовательным обменом и задания режимов служит регистр SCON (адрес 98Н). В таблице 9 показан формат слова, которое необходимо загрузить в регистр SCON для организации последовательного ввода/вывода.
С помощью разрядов SМ0 и SМ1 устанавливаются режимы, которые имеют наименование 0, 1, 2 или 3.
Режим 0 устанавливается при значении SМ0=0 и SМ1=0. Этот режим используется для ввода и вывода последовательного 8-разрядного кода данных через разряд РЗ.0 (RXD) порта РЗ. Через вывод РЗ. 1 (TXD) порта РЗ выдаются импульсы синхронизации, которые сопровождают каждый переданный или принятый бит. Частота синхронизации равна 1/12 частоты внутреннего генератора ОМЭВМ, т. е. за один машинный цикл последовательный порт принимает или передает один бит данных.
Передача в режиме 0 начинается в следующем машинном цикле после выполнения команды, по которой в регистр SBUF записывается байт данных. Затем выполняется преобразование параллельного 8-разрядного кода данных в последовательный и на десятом машинном цикле, начиная с цикла записи данных в регистр SBUF, признак Т1 регистра SCON устанавливается в единицу.
Прием в режиме 0 обеспечивается при значении разрядов REN=1 и RI=0 регистра SCON. После установки указанных разрядов со следующего машинного цикла начинается формирование синхросигналов, которые выдаются через вывод РЗ.1 (TXD) порта РЗ. В момент выдачи каждого синхроимпульса вводится один бит данных и на десятом машинном цикле, начиная с установки значений REN и RI в регистре SCON, признак RI перебрасывается в состояние единицы.
Режим 0 обычно применяется для организации синхронного обмена информацией. В этом случае используются внешние микросхемы для реализации логических функций управления синхронным обменом.
Режим 1 устанавливается при значении разрядов SМ0=0, SМ1=1. В этом режиме осуществляется асинхронная старт/стоповая передача через вывод TXD или прием с вывода RXD десяти бит информации: стартового бита, восьми разрядов данных (причем первым передается, принимается младший разряд данных) и стопового бита. При приеме столовый бит поступает в разряд регистра RВ8 регистра SCON. Скорость передачи или приема переменная и задается таймером 1, причем предварительно осуществляется на 32 частоты внутреннего генератора.
Режим 2 устанавливается при значении разрядов SM0=1, SM1=0. В этом режиме осуществляется асинхронная старт/стоповая передача через вывод TXD или прием с вывода RXD одиннадцати бит информации. Отличие от режима 1 состоит в том, что к 8 разрядам данных добавляется разряд контроля четности. Скорость передачи/приема составляет 1/32 и 1/64 частоты внутреннего генератора. Выбор скорости осуществляется программно установкой седьмого разряда регистра PCON в единицу для скорости, равной 1/32 частоты внутреннего генератора или - в нуль для скорости 1/64 частоты внутреннего генератора.
Режим 3 устанавливается при значении разрядов SM0=1, SM1=1. Этот режим полностью совпадает с режимом 2 за исключением правил выбора скорости передачи - приема, которая устанавливается так же, как в режиме 1.
Рассмотрим пример программирования таймера 1 для задания скорости передачи 2400 бод в режиме 1 или 3 при тактовой частоте внутреннего генератора 12 МГц. Если fт=12 МГц, то таймер работает с частотой счета 1 МГц и для получения скорости 2400 необходимо частоту 1 МГц разделить на величину 32Ч2400=76800. В этом случае для таймера получим коэффициент деления, равный тринадцать (точнее 13,02). Поскольку таймер обнуляется при переполнении, то для обеспечения деления на 13 (0DH) необходимо найти величину 00H-0DH=F3H, которая используется для загрузки начального значения таймера 1. Для его работы выполняется режим 2 перезагружаемого таймера. В этом случае в регистр TH1 загружается значение F3H. Программа выбора скорости последовательно передачи/приема имеет следующий вид:
MOV TCON, #0010xxxB ; выбор режима 2 таймера 1, значения разрядов ;таймера/счетчика 0 не определены
MOV TH1, #0F3H ; загрузка в TH1 коэффициента деления
SETB TR1 ; запуск таймера 1
С помощью разряда SM2 регистра SCON может быть заблокирован прием байта данных, в котором девятый бит, имеет значение, равное нулю. Содержимое разряда SM2 устанавливается/сбрасывается программно.
Разряд REN служит для управления приемом данных. Значение разряда REN устанавливается/сбрасывается программно и разрешает (REN=1) или запрещает (REN=0) последовательный прием данных.
Разряд ТВ8 служит для заполнения признака четности при передаче, а разряд RB8-при приеме. Добавление разряда четности при передаче может быть осуществлено с помощью выполнения следующей последовательности команд:
ADD A, 0 ; содержимое A не меняется, но формируется признак P
MOV С, Р ; признак Р пересылается в разряд переноса С
MOV ТВ8, С ; признак С помещается в разряд 9 буфера передачи
MOV SВUF, А ; загрузка буфера передачи байтом данных и начало последовательной передачи
Разряд ТI используется, как признак готовности передатчика передавать следующий байт данных. Признак Т1 устанавливается в единицу после окончания передачи байта данных и может быть опрошен программно или служить запросом на прерывание. В любом случае бит ТI сбрасывается программно.
Разряд RI используется как признак готовности приемника. Разряд RI устанавливается в единицу после приема байта данных и может быть опрощен программно или служить запросом на прерывание. Бит RI также сбрасывается программно.
Для иллюстрации составления программы последовательной передачи и приема данных рассмотрим пример пересылки содержимого массива A одной ОЭВМ в память другой ОЭВМ по последовательному каналу, образованному соединением выхода TXD одной ОЭВМ с входом RXD другой ОЭВМ.
Программа передачи массива A из ОЭВМ № 1 имеет следующий вид:
ORL P3, #02 ; установка вывода TXD в «1»
MOV SCON, #0101xx1xB ; режим 1, разряд T1 установлен в «1»
MOV TMOD, #0010xxxxB ; установка таймера 1 в режим 2
MOV TH1, # 30F3H ; установка скорости передачи 2400 бод
SETB TR1 ; запуск таймера
MOV DPTR, #ADDR ; загрузка в DPTR адреса массива А
MOV R3, #7FH ; загрузка в R3 числа пересылаемых байтов (например 128 байтов)
М1: MOVX A, @ DPTR ; загрузка в А байта из массива А
М2: JNB TI, M2 ; проверка состояния готовности передатчика
CLR TI ; сброс Т1
MOV SBUF, A ; передача байта данных
INC DPTR ; инкремент DPTR
DJNZ R3, M1 ; возврат к передаче пока R3 не обнулится
;Программа приема массива А и запись его в массив B ОЭВМ 2 имеет следующий вид:
ORL P3, #01 ; установка вывода RXD в «1»
MOV SCON, #40H ; установка режима1 для последовательного ввода
MOV TMOD, #20H ; установка таймера 1 в режим 2
MOV TH1, # 0F3H ; установка скорости приема 2400 бод
SETB TR1 ; запуск таймера
MOV DPTR, #ADDR ; загрузка в DPTR адреса массива В
MOV R3, #7FH ; загрузка в Р3 числа пересылаемых байтов
M3: JNB RI, M3 ; проверка готовности приемника
CLR RI ; сброс признака готовности
MOV A, SBUF ; пересылка в А содержимого буфера приемника
MOV X @ DPTR, A ; пересылка содержимого А в массив В
INC DPTR ; инкремент DPTR
DJNZ R3, M3 ; возврат к приему пока R3 не обнулится
Для выполнения указанных программ необходимо сначала запустить программу №2. В этом случае ОЭВМ №2 переходит в состояние ожидания приема, поскольку разряд RI регистра SCON установлен в нуль, только после того, как из ОЭВМ №1 поступит байт данных со стартовым битом в начале, разряд RI установится в единицу и осуществится преобразование последовательного кода в параллельный.
6. Примеры использования ОЭВМ семейства MCS-51

6.1 Ввод информации с клавиатуры

Наличие в MCS-51 4 портов (32 линии ввода/вывода) позволяют построить гибкую систему обработки 32 переменных значений, поступающих от или на объекты типа включено,/выключено (клавиатура, датчики, индикация, реле и т. п.). Однако если число переменных больше 32 или требуется сэкономить число линий ввода/вывода, может быть использован метод сканирования. В этом случае ключи (кнопки) клавиатуры или датчики объединяются в матрицу и располагаются на пересечении строк и столбцов матрицы.

На рис. 12 показана функциональная схема подключения клавиатуры, состоящей из 24 клавиш (с возможностью расширения до 64 клавиш), к двум портам Р0 и Р1. С помощью порта Р1 осуществляется сканирование столбцов матрицы «бегущим нулем», а через порт Р0 производится считывание состояния уровней сигналов, поступающих с горизонтальных линий. Если ни одна клавиша не нажата, то считывается код F (все единицы). При нажатии клавиши, принадлежащей к опрошенному в данный момент столбцу, с соответствующей горизонтали будет считываться низкий уровень. Код нажатой клавиши может быть вычислен программно по состоянию портов Р0 и Р1.

Прежде чем составлять программу, пронумеруем клавиши по порядку и присвоим им номер, затем составим таблицу 10, в которой в соответствии кодам сканирования и считывания сопоставим порядковые номера клавиш. Кроме ее номера каждая клавиша может иметь свое функциональное назначение. Например, 16 клавиш могут быть предназначены для ввода шестнадцатеричного кода, 6 клавиш для ввода команд отладочного устройства типа «Электроника К580» и 2 клавиши для резерва. В этом случае каждой клавише следует сопоставить шестнадцатеричный код.

Рис. 11 Функциональная схема подключения клавиатуры

Таблица 11

Коды сканирования и считывания

Код

сканирования

Код

считывания

11111101B FDH

11111011B FBH

11110111B F7H

11101111B

EFH

11011111B

DFH

10111111B

BFH

Номер клавиши

Назначение

Номер клавиши

Назначение

Номер клавиши

Назначение

Номер клавиши

Назначение

Номер клавиши

Назначение

Номер клавиши

Назначение

11110111B, F7H

3

Пуск Run 10

7

Шаг Step 11 H

11

След. Next 12 H

15

К.Т. Break 13H

19

ОЗУ Mem 14H

23

Адр. Adir 15 H

11111011B, FBH

2

0CH

6

0DH

10

0EH

14

0FH

-

-

-

-

11111101, FDH

1

06H

5

07H

9

08H

13

09H

17

0AH

21

0BH

11111110B, FEH

0

00H

4

01H

8

02H

12

03H

16

04H

20

05H

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

N=k*n+m,

где N - номер нажатой клавиши в соответствии с таблицей 10;

k - число линий ввода,

n - номер столбца, где обнаружена нажатая клавиша,

m - номер строки, где обнаружена нажатая клавиша.

Для определения значения в первой части программы следует организовать счетчик числа сканирований. Номер строки, где обнаружена нажатая клавиша, косвенно содержится в коде считывания.

Если требуется сопоставить номеру нажатой клавиши ее шестнадцатеричный код в соответствии с функциональным назначением, то используется табличный способ. В этом случае в память ОМЭВМ заранее следует, начиная с адреса ХХ00Н, записать по порядку коды 00Н, 06Н, 0СH, 10Н, 01Н и т. д. Адрес ХХ00Н заносится в указатель данных DPTR. Тогда если известен номер N, то предварительно загрузив его в аккумулятор А, с помощью команды MOVC А, @ А+ DPTR может быть из таблицы переписан в аккумулятор соответствующий код нажатой клавиши. Программа (может быть вызвана как подпрограмма) сканирования и определения кода нажатой клавиши имеет следующий вид:

START: MOV RO, #60H ; загрузка в R0 адреса для запоминания N

MOV R4, #4 ; загрузка в R4 числа k

MOV R7, #0 ; обнуление счетчика числа n

MOV R6, #0FDH ; загрузка в R6 начального значения кода сканирования

M1: MOV A, R6

MOV P1, A ; вывод в порт Р1 кода сканирования

RL A ; сдвиг влево кода сканирования

MOV R6, A ; запоминание кода сканирования

MOV A, PO ; ввод из порта Р0 кода считывания

ANLA, 0FH ; выделение 4 -х разрядов кода считывания

MOV R5, A ; запоминание в R5 кода считывания

CJNE A, #0FH, M3 ; сравнение (А) с FF и переход, если не равно

SJMP M4 ; переход к продолжению сканирования

M3: MOV A, R7 ; загрузка в А числа n

MOV B, R4 ; загрузка в B числа k

MUL AB ; умножение k на n

CJNE R5, #0EH, M5 ; сравнение с кодом считывания Е

ADD A, #0 ; вычисление N для m=0

SJMP TABL ; переход к выборке из таблицы кода клавиши

M5: CJNE R5, #0DH, M6 ; сравнение с кодом считывания D

ADD A, #1 ; вычисление N для m=1

SJMP TABL ; переход к выборке из таблицы кода клавиши

M6: CJNE P5, 0BH M7 ; равнение с кодом считывания B

ADD A, #2 ; вычисление N для m=2

SJMP TABL ; переход к выборке из таблицы кода клавиши

M7: CJNE R5, #07, START ; если не найдена нажатая клавиша, то переход к началу.

ADD A, #3 ; вычисление N для m=3

SJMP TABL ; переход к выборке из таблицы кода клавиши

TABL: MOV @ R0, A ; запоминание в ячейке 60H номера N

MOV DPTR, xx00H ; загрузка в DPTR начального адреса таблицы

MOVC A, @ A+DPTR ; пересылка в А кода клавиши

INC R0 ; инкремент R0

MOV @ R0, A ; запоминание в ячейке 61H кода клавиши

RET ; выход из под программы

M4: INC R7 ; инкремент счетчика числа сканирований

CJNE R7, #06, M1 ; проверка на конец сканирования

LJMP START ; повторение цикла, если нет нажатых клавиш.

После возврата из подпрограммы в ячейке 60H будет содержаться двоичный код N порядкового номера нажатой клавиши, а в ячейке 61 H - значение, которое присвоено клавише в соответствии с функциональным назначением (таблица 10).

6.2 Пример организации п/п задержки на заданное время

Организовать временную задержку на 100 тысяч машинных циклов методом вложенных циклов. Задержка создается циклическим повторением команды декремента регистра и последующей проверки его на нуль (DJNZ). Длительность задержки определяется предварительно записанными в регистры числами К1, К2, К3,… и количеством циклов.

Для программы с двумя вложенными циклами:

, (1)

где К1, К2, К3 - начальные значения регистров R1, R2, R3; t - длительность исполнения циклической команды DJNZ, равная 2 машинным циклам; t1НЦ, t2НЦ, t3НЦ - длительность исполнения нециклических команд (MOV).

Для большинства практических применений можно считать, что

, (2)

при условии К12 и К13.

Положим К1=250, К2 =20, К3=10.

MOV R3,#10 ; Запись в регистр 3 исходного значения

CYCL3: MOV R2,#20 ; Запись в регистр 2 исходного значения

CYCL2: MOV R1,#250 ; Запись в регистр 1 исходного значения

CYCL1: DJNZ R1,CYCL1 ; Цикл 1 - внутренний

DJNZ R2,CYCL2 ; Цикл 2

DJNZ R3,CYCL3 ; Цикл 3

Библиографический список

1. Угрюмов Е.П. Цифровая схемотехника. Уч. Пособие. Издательство «БХВ - Петербург» СПБ, 2007г.

2. Редькин П.П. Прецизионные системы сбора данных семейства MSC12xx фирмы Texas Instruments: архитектура, программирование, разработка приложений. М.: Издательский дом «Додэка-ХХI», 2006. 608 с.

3. Боборыкин А.В. и др. Однокристальные микро - ЭВМ. М.: Микап, 1994, 400 с.

4. Предко М. Руководство по микроконтроллерам, в двух томах. М.: Постмаркет, 2001г.

5. БИС запоминающих устройств: Справочник / Под ред. А.Ю. Гордонова и Ю.Н. Дьякова. М.: Радио и связь, 1990. 348 с.

6. Дерюгин А.А. Применение ИМС памяти / Под ред. А.Ю. Гордонова. М.: Радио и связь, 1994. 380 с.

7. Интегральные микросхемы энергонезависимой памяти 28F008SA, 28F008SA-L: Пер. с англ. В.В. Затишнова. М.: Совместное издание "БИНОМ" и ТОО «Конкорд», 1992. 80 с.

8. Лебедев О.Н. Применение микросхем памяти в электронных устройствах. М.: Радио и связь, 1994. 380 с.

9. Логические ИС КР1533, КР1554: Справочник: В 2-х ч. М.: ТОО Бином, 1993. 354 с.

10. Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC: Пер. с англ./ Под ред. У. Томкниса, Дж. Уэбстера. М.: Мир, 1992. 273 с.

11. Федорков Б.Г., Телец В.А. Микросхемы ЦАП и АЦП: функционирование, параметры, применение. М.: Энергоатомиздат, 1990. 320 с.

12. Хоровиц П., Хилл У. Искусство схемотехники: В 2-х т. М.: Мир, 1983.584с., 604 с.

13. Кузьминов, А.Ю. Интерфейс RS232: Связь между компьютером и микроконтроллером: От DOS к WINDOWS 98/XP. М.: Издательский дом «ДМК-пресс», 2006. 320 с.

14. Ирвин, Кип. Язык ассемблера для процессоров Intel, 4-ое издание.: Пер. с англ. М.: Издательский дом “Вильямс”, 2005. 912 с.

15. Фрунзе Л.В. Микроконтроллеры? Это же просто! В 3-х т. М.: ИДСКИМЕП, 2003.

16. Микроконверторы фирмы Analog Devices в микропроцессорных приборных комплексах: учебное пособие / П. П. Редькин, А. Б. Виноградов. Ульяновск: УлГТУ, 2005. 316 с.

17. Сташин В.В., Урусов А.В., Мологонцева О.П. Проектирование цифровых устройств на однокристальных микроконтроллерах. М.: Энергоатомиздат, 1990.

18. Каспер Эрни. Программирование на языке ассемблера для микроконтроллеров семейства i8051. М.: Горячая линия-Телеком, 2003.

Приложение 1

Список команд ассемблера Asm51

Группа команд передачи данных

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

Мнемокод

T

Б

Ц

Операция

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

MOV A, Rn

1

1

1

(A) = (Rn)

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

MOV A, ad

3

2

1

(A) = (ad)

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

MOV A, @Ri

1

1

1

(A) = ((Ri))

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

MOV A, #d

2

2

1

(A) = #d

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

MOV Rn, A

1

1

1

(Rn) = (A)

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

MOV Rn, ad

3

2

2

(Rn) = (ad)

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

MOV Rn, #d

2.

2

1

(Rn) = #d

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

MOV ad, A

3

2

1

(ad) = (A)

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

MOV ad, Rn

3

2

2

(ad) = (Rn)

Пересылка

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

прямому адресу

MOV add, ads

9

3

2

(add) = (ads)

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

MOV ad, @Ri

3

2

2

(ad) = ((Ri))

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

MOV ad, #d

7

3

2

(ad) = #d

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

MOV @Ri, A

1

1

1

((Ri)) = (A)

Пересылка в РДП

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

MOV @Ri, ad

3

2

2

((Ri)) = (ad)

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

MOV @Ri, #d

2

2

1

((Ri)) = #d

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

MOV DPTR, #d16

13

3

2

(DPTR) = #dl6

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

MOVC A, @A + DPTR

1

1

2

(A) = ((A) + (DPTR))

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

MOVC A, @A + PC

1

1

2

(PC) = (PC)+1 (A) = ((A) + (PC))

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

MOVX A, @Ri

1

1

2

(A) = ((Ri))

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

MOVX A, @DPTR

1

1

2

(A) = ((DPTR))

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

MOVX @Ri, A

1

1

2

((Ri)) = (A)

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

MOVX @DPTR, A

1

1

2

((DPTR)) = (A)

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

PUSH ad

3

2

2

(SP) = (SP)+ 1

«SP)) = (ad)

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

POP ad

3

2

2

(ad) = (SP)

(SP) = (SP)-1

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

XCH A, Rn

1

1

1

(A)<->(Rn)

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

XCH A, ad

3

9

1

(A) <-> (ad)

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

XCH A, @Ri

1

1

1

(A) <-> ((Ri))

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

XCHD A, @Ri

1

1

1

(A0.3)<->((Ri)o-3)

Группа команд арифметических операций

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

Мнемокод

T

Б

Ц

Операция

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

ADD A, Rn

1

1

1

(A) = (A) + (Rn)

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

ADD A, ad

3

2

1

(A) = (A) + (ad)

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

ADD A, @Ri

1

1

1

(A) = (A) + ((Ri))

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

ADD A, #d

2

2

1

(A) = (A) + #d

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

ADDC A, Rn

1

1

1

(A) = (A) + (Rn) + (C)

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

ADDC A, ad

3

2

1

(A) = (A) + (ad) + (C)

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

ADDC A, @Ri

1

1

1

(A) = (A) + ((Ri)) +(C)

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

ADDC A, #d

2

2

1

(A) = (A) + #d + (C)

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

DA A

1

1

1

Если

(A0.3)>9V((AC) = 1),

TO (A0.3) = (A0.3) + 6,

затем если (A4.7)>9V((C)=1), то (A4.7) = (A4.7) + 6

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

SUBB A, Rn

1

1

1

(A) = (A)-(Q-(Rn)

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

SUBB A, ad

3

2

1

(A) = (A) -(C)-((ad))

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

SUBB A, #d

2

2

1

(A) = (A)-(C).#d

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

INC A

1

1

1

(A) = (A) + 1

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

INC Rn

1

1

1

(Rn) = (Rn) + 1

Инкремент

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

INC ad

3

2

1

(ad) = (ad) + 1

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

INC @Ri

1

1

1

((Ri)) = ((Ri))+l

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

INC DPTR

1

1

2

(DPTR) = (DPTR) + 1

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

DEC A

1

1

1

(A) = (A)-1

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

DEC Rn

1

1

1

(Rn) = (Rn) - 1

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

DEC ad

3

2

1

(ad) = (ad) - 1

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

DEC @Ri

1

1

1

((Ri)) = ((Ri))-l

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

MUL AB

1

1

4

(B)(A) = (A)*(B)

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

DIV AB

1

1

4

(A).(B) = (A)/(B)

Группа команд логических операций

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

Мнемокод

T

Б

Ц

Операция

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

ANL A, Rn

1

1

1

(A) = (A) AND (Rn)

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

ANL A, ad

3

2

1

(A) = (А) AND (ad)

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

ANL A, @Ri

1

1

1

(A) = (A) AND ((Ri))

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

ANL A, #d

2

2

1

(A) = (А) AND #d

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

ANL ad, A

3

2

1

(ad) = (ad) AND (A)

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

ANL ad, #d

7

3

2

(ad) = (ad) AND #d

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

ORL A, Rn

1

1

1

(A) = (A) V (Rn)

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

ORL A, ad

3

2

1

(A) = (A) V (ad)

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

ORL A, @Ri

1

1

1

(A) = (A) V ((Ri))

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

ORL A, #d

2

2

1

(A) = (A) V #d

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

ORL ad, A

3

2

1

(ad) = (ad) V (A)

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

ORL ad, #d

7

3

2

(ad) = (ad) V #d

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

XRL A, Rn

1

1

1

(A) = (A) V (Rn)

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

XRL A, ad

3

2

1

(A) = (A) V (ad)

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

XRL A, @Ri

1

1

1

(A) = (A) V ((Ri))

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

XRL A, #d

2

2

1

(A) = (A) V #d

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

XRL ad, A

3

2

1

(ad) = (ad) V (A)

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

XRL ad, #d

7

3

2

(ad) = (ad) V #d

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

CLR A

]

1

1

(A) = 0

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

CPL A

]

1

]

(A) = (/A)

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

RL A

1

1

1

(AnH) = (An), n = 0-6,(A0) = (A7)

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

RLC A

1

1

1

(An-i) = (An),

n = 0-6,(A0) = (C),

(Q = (A7)

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

RR A

1

1

1

(An) = (A„-,), n=0-6,(A7) = (Ao)

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

RRC A

1

1

1

(An) = (An-,),n = 0-6, (A7) = (C),(C) = (Ao)

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

SWAP A

1

1

1

(Ao-3)<->(A4-7)

Группа команд операций с битами

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

Мнемокод

т

Б

Ц

Операция

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

CLR C

1

1

1

(С) = 0

Сброс бита

CLR bit

4

2

1

(bit) = 0

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

SETB С

1

1

1

(С)=1

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

SETB bit

4

2

1

(bit) = 1

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

CPL C

1

1

1

(С) = (С)

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

CPL bit

4

2

1

(B) = (/B)

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

ANL C, bit

4

2

2

(С) = (С)/\(Bit)

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

ANL C,/bit

4

2

2

(С) = (С) /\ (Bit)

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

ORL C, bit

4

2

2

(С) = (С) V (Bit)

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

ORL C, /bit

4

2

2

(С) = (С) V (Bit)

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

MOV C, bit

4

2

1

(С) = (Bit)

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

MOV bit, С

4

2

2

(b)=(С)

Группа команд передачи управления

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

Мнемокод

T

В

U

Операция

Длинный переход в полном объеме памяти в программ

LJMP adl6

12

3

2

(PC) = ad 16

Абсолютный переход

внутри страницы в 2 Кб

AJMP ad11

6

2

2

(PC) = (PC) + 2 (PC0.,o) = ad11

Короткий относительный

переход внутри страницы

в 256 байт

SJMP rel

5

2

2

(PC) = (PC) + 2 (PC) = (PC) + rel

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

JMP @A+DPTR

1

1

2

(PC) = (A) + (DPTR)

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

JZ rel

5

2

2

(PC) = (PC)+ 2,

если (А) = 0,

то (PC) = (PC) + rel

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

JNZ rel

5

2

2

(PC) = (PC)+ 2,

если (А) <> 0,

то (PC) = (PC) + rel

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

JC rel

5

2

2

(PC) = (PC) + 2,

если (С) = 1,

то (PC) = (PC) + rel

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

JNC rel

5

2

2

(PC) = (PC)+ 2,

если (С) = 0,

то (PC) = (PC) + rel

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

JB bit, rel

11

3

2

(PC) = (PC) + 3,

если (b) = 1,

то (PC) = (PC) + rel

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

JNB bit, rel

11

3

2

(PC) = (PC) + 3,

если (b) = 0,

то (PC) = (PC) + rel

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

JВС bit, rel

11

3

2

(PC) = (PC) + 3,

если (b) = 1,

то (b) = 0

и (PC) = (PC) + rel

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

DJNZ Rn, rel

5

2

2

(PC) = (PC)+ 2,

(Rn) = (Rn) -l,

если (Rn) <> 0,

то (PC) = (PC) + rel

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

DJNZ ad, rel

8

3

2

(PC) = (PC) + 2,

(ad) = (ad) -l,

если (ad) <> 0,

то (PC) = (PC) + rel

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

CJNE A, ad, rel

8

3

2

(PC) = (PC) + 3,

если (А) <> (ad),

то (PC) = (PC) + rel,

если (А) < (ad),

то(С)=1,

иначе (С) = 0

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

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

CJNE A, #d, rel

10

3

2

(PC) = (PC) + 3,

если (А) <> #d,

то (PC) = (PC) + rel,

если (А) < #d,

T0(O=l,

иначе (С) = 0

Сравнение регистра с

константой и переход,

если не равно

CJNE Rn, #d, rel

10

3

2

(PC) = (PC) + 3,

если (Rn) <> #d,

то (PC) = (PC) + rel,

ecли (Rn)<#d,

то (С)=1, иначе (С) = 0

Сравнение байта в РИД с

константой и переход,

если не равно

CJNE @Ri, #d, rel

10

3

2

(PC) = (PC) + 3,

если ((Ri)) <> #d,

то (PC) = (PC) + rel,

ecли ((Ri))<#d,

то (С)=1,

иначе (С) = 0

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

LCALL adl6

12

3

2

(PC) = (PC) + 3, (SP) = (SP)+1,

((SP)) = (PC0.7), (SP) = (SP)+1,

((SP)) = (PC8.I5), (PC) = ad 16

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

ACALL ad11

6

2

2

(PC) = (PC)+ 2, (SP) = (SP)+1,

((SP)) = (PC0.7), (SP) = (SP)+1,

((SP)) = (PC8.,5), (PC0.,o) = ad11

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

RET

1

1

2

(PC8.,5) = ((SP)),

(SP) = (SP)-1,

(PCo.7) = ((SP)),

(SP) = (SP)-1

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

RETI

1

1

2

(PC8.,5) = ((SP)),

(SP) = (SP)-1,

(PCo.7) = ((SP)),

(SP) = (SP)-1

Холостая команда

NOP

1

1

1

(PC) = (PC) + 1

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


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

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

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

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

    реферат [906,9 K], добавлен 18.01.2011

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

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

  • Однопроцессорные вычислительные системы не справляются с решением военно-прикладных задач в реальном времени, поэтому для повышения производительности вычислительных систем военного назначения используются многопроцессорные вычислительные системы (МВС).

    реферат [70,1 K], добавлен 30.05.2008

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

    реферат [22,8 K], добавлен 15.03.2004

  • Использование объектно-ориентированного подхода для минимизации затрат в процессе продажи и обслуживания контрольно-кассовых машин. Детализация алгоритмической и логической реализации операций системы. Построение базовой модели и диаграммы деятельности.

    контрольная работа [381,8 K], добавлен 19.03.2015

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

    курсовая работа [42,0 K], добавлен 30.08.2010

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

    контрольная работа [118,1 K], добавлен 02.06.2014

  • Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.

    курсовая работа [802,8 K], добавлен 04.03.2015

  • Основные преимущества модульного программирования. Выделение процедуры: ввода массива с консоли, вывода на экран массива, информации об авторе и условии решенной задачи до обработки и после обработки. Иерархия процедур, характеристика назначения модулей.

    реферат [2,3 M], добавлен 29.01.2016

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