- •Кафедра информационных систем и технологий
- •Программирование и отладка
- •Программных модулей для омк Intel 8051 (к1816 ве51)
- •Методические указания к лабораторной работе
- •1. Структурная организация Intel 8051
- •1.1. Арифметико‑логическое устройство
- •1.2. Резидентная память
- •1.3 Внешняя память
- •1.4 Устройство управления и синхронизации
- •2. Программная модель омк
- •3.Система команд 8051
- •4.Периферийные устройства омк
- •4.1.Порты ввода/вывода.
- •4.2. Счетчик/Таймер
- •4.3. Последовательный порт
- •4.4 Система прерываний
- •5. Особые режимы работы
- •6. Особенности архитектуры микроконтроллеров 8x52 и 8xС52
- •7. Тенденции развития mcs-51/151/251
- •8. Проектирование устройств сбора и обработки информации на основе 8051
- •8.1. Разработка алгоритмов функционирования
- •Арифметический правый сдвиг на один разряд записывается в виде
- •Например, сравнение двух слов а и b можно описать в виде
- •8.2. Программирование на ассемблере 8051.
- •Система команд омк Intel 8051
- •Подготовка программ для отладКи в dos - эмуляторе.
- •Полноэкранный отладчик ассемблерных программ для однокристальной микро-эвм кр1816 ве51 (Intel 8051)
- •1. Запуск отладчика.
- •2. Ввод команд.
- •3. Описание команд.
- •3.1. Функциональные клавиши.
- •3.2. Команды отладчика
- •4. Полноэкранное редактирование
- •5. Режим ассемблера
- •5. Работа с точками останова
- •Приложение 3 Задание на проектирование
- •Алгоритм функционирования усои
3.Система команд 8051
8051 обладает гибкой системой команд, ориентированной, главным образом, на реализацию контроллерных функций. Характеристики системы команд определяются форматами данных и команд.
Форматы данных. Тип представления данных: числовые, логические, битовые. Числовые данные могут быть представлены в двоичном и двоично-десятичном кодах в целочисленном формате. Обработка двоичных данных может выполняться в дополнительном коде. Длина формата байт, два байта, бит. В операциях обмена тетрадами используется дополнительное представление информации ‑ полубайтами (4 бита).
Форматы команд. Команды одноадресные, двухадресные, безадресные. Длина команды – байт, два байта, три байта. При обращении к РПД могут использоваться прямой регистровый, прямой, косвенный, непосредственный, стековый способы адресации. Внешняя память данных допускает применение только косвенной и индексной адресации. При работе с памятью команд возможно применение косвенного, индексного и относительного способов адресации.
Система команд МК51 содержит 111 базовых команд, которые удобно разделить по функциональному признаку на пять групп: команды передачи данных, арифметических операций, логических операций, передачи управления, операций с битами. Система команд приведена в приложении , где используются следующие обозначения:
#d ‑ непосредственный операнд;
ad ‑ адрес РПД;
аd16 ‑ адрес памяти команд или внешней памяти данных;
Rn ‑ регистр текущего банка;
Ri ‑ нулевой или первый регистр текущего банка
bit – прямой адрес бита,
rel ‑ 8-разрядное смещение в дополнительном коде для выполнения относительных переходов. Величина смещения позволяет передавать управление в пределах –128 - +127 байт относительно адреса следующей команды;
@ ‑ признак косвенной адресации;
Рассмотрим обобщенные характеристики основных команд.
К командам передачи данных (пересылок) относятся:
MOV – пересылка при работе с РПД;
MOVX – пересылка c внешней памятью данных (ВПД);
MOVC – пересылка c памятью команд;
MOV A, (Rn, ad, @Ri, #d);
MOV Rn, (A, ad, #d);
MOV ad, (Rn, А, @Ri, #d);
MOV (A, Rn, ad), #d;
MOV @Ri, (ad, Rn, #d);
MOV ad1, ad2;
MOV DPTR,#d16
Команды этой группы не модифицируют признаки результата за исключением команды загрузки PSW и пересылок, в которых приемником результата является аккумулятор А. В этом случае устанавливается бит паритета и аппаратно формируется признак равенства «0» – Z=1, который можно использовать для выполнения команд условного перехода JZ (JNZ).
XCH А, (Rn, ad, @Ri) ‑ обмен содержимым А и (Rn, @Ri, ad);
XCHD A, @Ri ‑ обмен содержимым младших тетрад байтовых операндов;
SWAP ‑ обмен содержимым тетрад в аккумуляторе;
PUSH ad – запись в стек;
POP ad – чтение из стека;
Недостатком этой группы является отсутствие команд типа MOV Rn1, Rn2 и MOV Rn, @Ri;
Обращение к внешней памяти команд ВПК и ВПД осуществляется через регистр-указатель DPTR. Обращение к регистру возможно с помощью команды MOV DPTR, #d16, старший (DPH) и младший (DPL) байты этого регистра доступны через зону РСФ.
MOVX A, @DPTR;
MOVX @DPTR, A;
MOVX @Ri, A;
MOVX A, @Ri ‑ странично-косвенный метод доступа: Смещение внутри страниц задает содержимое Ri, а номер страницы формируется на выходе порта P2. На основе этого способа можно организовать индексную адресацию.
Для чтения памяти команд используется:
MOVC A, @A+DPTR; (A):=@(A+DPTR), где в А находится целое без знаковое смещение.
Для верификации памяти команда предусмотрена:
MOVC A, @A+PC; {PC:=PC+1; (A):=((A+PC))}, где РС – программный счетчик.
Арифметические операции:
ADD A, (Rn, ad, @Ri, #d) – сложение;
ADDC A, (Rn, ad, @Ri, #d) ‑ сложение с переносом;
DA А ‑ команда двоично-десятичной коррекции при сложении;
SUBB A, (Rn, ad, @Ri, #d) ‑ вычитание с заёмом. Это единственная команда вычитания. Перед её использованием необходимо контролировать значение бита С.
Команды сложения, вычитания формируют флаги С, АС, OV, P.
INC(DEC) (A, Rn, @Ri, ad) ‑ инкремент (декремент);
INC DPTR.
Если необходим декремент, то его реализация возможна только с использованием команд декремента регистров DPL(младший байт DPTR), и DPH (старший байт DPTR).
Команды инкремента и декремента флаги не устанавливают.
MUL AB – беззнаковое умножение 8x8 (B)(A):=(A)*(B);
DIV AB – беззнаковое деление 8/8 (A)(B):=A/B.
При умножении старший байт результата записывается в регистр-расширитель В, а младший ‑ в А. Если содержимое А>256, то формируется флаг арифметического переполнения OV. Бит С всегда сбрасывается.
При делении частное записывается в А, а остаток ‑ в В. Флаги переноса C и арифметического переполнения OV сбрасываются. При делении на 0 устанавливается флаг OV.
Логические команды:
ANL A, (Rn, @Ri, #d, ad); ‑ конъюнкция;
ANL ad, (A, #d);
Структура команд ORL (дизъюнкция), XRL (сумма по модулю 2) аналогична предыдущей.
CLR A ‑ очистка аккумулятора;
CPL A ‑ инвертирование аккумулятора;
В этих логических командах признаки не формируются, за исключением бита паритета P, если результат операции записывается в аккумулятор.
RR(RL) A ‑ правый(левый) циклический сдвиг;
RRC(RLC) A ‑ правый(левый) циклический сдвиг через бит С;
При сдвигах формируются признаки P и C.
Битовые команды:
При выполнении битовых команд бит С выполняет функции аккумулятора.
Команды пересылки бит:
MOV C, bit;
MOV bit, C;
SETB bit(C) ‑ установка бита С (или прямоадресуемого бита);
CLR bit (C) ‑ очистка бита С (или прямоадресуемого бита);
CPL C(bit) ‑ инверсия бита С (или прямоадресуемого бита);
ANL C, bit ‑ конъюнкция;
ORL C, bit – дизъюнкция;
ANL C, /bit
ORL C, /bit
В последних двух командах знак «/» указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, однако сам бит источника при этом не изменяется.
При работе с битами используется только прямая адресация.
К командам передачи управления относятся команды, обеспечивающие условные и безусловные переходы, вызов подпрограмм и возврат из них, команда пустой операции NOP.
Переход по всему адресному пространству обеспечивает длинный безусловный переход LJMP ad16 и обращение к подпрограмме LCALL ad16.
Переход в пределах памяти программ размером 2048 байт выполняется с помощью безусловного абсолютного перехода AJMP ad11 и обращения к подпрограмме ACALL ad11. Такие команды содержат только 11 младших бит адреса перехода и имеют длину два байта.
Команда JMP @A+DPTR использует косвенную адресацию, при которой адрес перехода определяется суммированием содержимого DPTR и беззнакового смещения, находящегося в А. Эта команда позволяет выполнять множественное ветвление по адресу неизвестному в момент написания программы, модифицируя содержимое А или DPTR.
Команда SJMP rel выполняет безусловный, короткий, относительный переход.
При программировании на ассемблере достаточно указать только тип перехода JMP или CALL. В зависимости от длины перехода конкретная команда безусловного перехода выбирается компилятором автоматически.
RET ‑ возврат из подпрограммы;
RETI ‑ возврат из подпрограммы обработки прерывания.
Условные переходы представлены двумя группами команд байтовыми и битовыми. К байтовым командам относятся:
JZ(JNZ) rel – переход при нулевом (ненулевом) результате в А. Может быть реализован после любой операции, результат которой записывается в аккумулятор;
JC(JNC) rel – переход по значению бита С;
DJNZ Rn(ad), rel. Выполняется декремент содержимого регистра или ячейки РПД. Если результат операции не равен «0» ‑ выполняется переход, иначе ‑ следующая команда.
CJNE A, (ad, #d), rel;
CJNE (Rn, @Ri), #d, rel ‑ Выполняется вычитание из первого операнда второго; если результат операции не равен нулю ‑ выполняется переход, иначе ‑ следующая команда. Содержимое регистров, участвующих в операциях, не изменяется.
При сравнении формируется бит С = 0, если первый операнд больше второго и С = 1 при противоположном результате.
Битовые переходы выполняются по значению бита, адрес которого указан в формате команды JB(JNB) bit, rel.
В команде JBC bit, rel переход выполняется при единичном значении бита, адрес которого указан в команде, после чего бит сбрасывается в «0». Эта команда удобна при реализации семафоров.
Семафор представляет собой флаг, информирующий о состоянии связанного с ним ресурса: «1» – свободен, «0» – занят. Захват ресурса допускается только в том случае, если он свободен. Затем семафор должен быть переведен в состояние «Занято». Под ресурсом понимается всякий объект, распределяемый системой.
Например, данные от различных источников должны быть записаны в разделяемую память.
WAIT:
JBC bit, OK; Проверка флага
SJMP WAIT; Ресурс занят
OK:
;Ресурс свободен
При программировании в объектном коде адрес перехода вычисляется как:
rel := адрес перехода ‑ адрес команды перехода + длина команды перехода;
В ОМК отсутствуют команды ввода-вывода. Обращение к внешним устройствам осуществляется как к ячейкам внешней памяти данных. Возможные форматы команд приведены на рисунке 8.
