Вычислительные комплексы и системы
Обработка информации, поступающей с двоичных датчиков. Модульное программирование систем управления. Построение микропроцессорной системы на базе вычислительных машин семейства 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; t1Ц - длительность исполнения циклической команды DJNZ, равная 2 машинным циклам; t1НЦ, t2НЦ, t3НЦ - длительность исполнения нециклических команд (MOV).
Для большинства практических применений можно считать, что
, (2)
при условии К1>К2 и К1>К3.
Положим К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