
- •БАЗОВАЯ СТРУКТУРА МИКРОКОНТРОЛЛЕРОВ MCS-51
- •МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА MCS-51
- •ОСНОВНЫЕ ЭЛЕКТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ КОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-51
- •ПЕРЕЧЕНЬ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ КОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-51
- •СОСТАВ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ МИКРОКОНТРОЛЛЕРОВ РАЗЛИЧНЫХ ПОДСЕМЕЙСТВ
- •НАЗНАЧЕНИЕ ВЫВОДОВ БИС 8051
- •СХЕМА ВНУТРЕННЕГО ТАКТОВОГО ГЕНЕРАТОРА
- •ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ВНЕШНЕГО ТАКТОВОГО ГЕНЕРАТОРА
- •а) ТАКТОВЫЕ ИМПУЛЬСЫ, СОСТОЯНИЯ И МАШИННЫЕ ЦИКЛЫ
- •ПОСЛЕДОВАТЕЛЬНОСТИ ВЫБОРКИ КОМАНД В MCS-51:
- •РАСПРЕДЕЛЕНИЕ АДРЕСНОГО ПРОСТРАНСТВА RDM
- •Адрес
- •Адрес
- •КАРТА АДРЕСУЕМЫХ БИТОВ В БЛОКЕ РЕГИСТРОВ СПЕЦИАЛЬНЫХ ФУНКЦИЙ
- •ФОРМАТ СЛОВА СОСТОЯНИЯ ПРОГРАММЫ PSW
- •СХЕМА ВКЛЮЧЕНИЯ ВНЕШНИХ МИКРОСХЕМ
- •FFFF
- •ФОРМИРОВАНИЕ 16-РАЗРЯДНОЙ ШИНЫ АДРЕСА
- •СХЕМА СОВМЕЩЕНИЯ АДРЕСНОГО ПРОСТРАНСТВА EPM И EDM
- •ТИПЫ КОМАНД MCS51
- •Обозначения, используемые при описании команд:
- •РЕГИСТРОВАЯ АДРЕСАЦИЯ (ФОРМАТ КОМАНДЫ
- •ПРЯМАЯ АДРЕСАЦИЯ (ФОРМАТ КОМАНДЫ
- •КОМАНДЫ, МОДИФИЦИРУЮЩИЕ ФЛАГИ РЕЗУЛЬТАТА
- •ГРАФ ПУТЕЙ ПЕРЕДАЧИ ДАННЫХ
- •Обращение к внешней памяти данных
- •Обращение к внешней памяти данных
- •Обращение к памяти программ
- •Обращение к стеку
- •Обращение к стеку
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Арифметические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Логические операции
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Операции с битами
- •Операции с битами
- •Типовая схема подключения внешнего вывода
- •Схема подключения вывода с открытым коллектором
- •Разряд порта Р0 MCS-51
- •Использование линий порта Р0 для ввода/вывода
- •Разряд порта Р2 MCS-51
- •Альтернативные функции порта Р3 MCS-51
- •Команды, реализующие режим «чтение-модификация-запись»
- •Временные параметры обновления данных в портах
- •Структура таймера в микроконтроллерах
- •Реализация тахометра
- •Сигнал с широтно-импульсной модуляцией PWM
- •Схема генератора PWM-сигнала
- •Схема измерения длительности импульса
- •Регистр режима работы таймера/счетчика TMOD
- •Регистр управления/статуса таймера TCON
- •Функциональная схема таймера/счетчика в режиме 0
- •Функциональная схема таймера/счетчика в режиме 1
- •Функциональная схема таймера/счетчика в режиме 2
- •Функциональная схема таймера/счетчика в режиме 3
- •Асинхронная последовательная передача данных
- •Чтение данных при асинхронном последовательном обмене
- •Последовательный обмен с манчестерским кодированием
- •Форма сигналов при синхронной передаче данных
- •Синхронная последовательная шина
- •Схема синхронного вывода данных
- •Чтение данных в протоколе Microwire
- •Подключение входа «Din» и выхода «Dout» к одной линии
- •Пример I2C сети
- •Форма сигналов на шине I2С
- •Передача байта по шине I2С
- •Временная диаграмма сигналов на шине I2С
- •Формат передачи данных по шине I2С: R/W – вид обмена (прием или передача);
- •Регистр управления/статуса UART
- •Скорость приема/передачи информации через последовательный порт
- •Скорость приема/передачи информации через последовательный порт
- •Передача
- •Передача
- •Передача
- •Логическая схема системы прерываний
- •Регистр масок прерывания IE
- •Регистр приоритетов прерываний IP
- •Распределение приоритетов вторичного арбитража
- •Вызов процедуры обслуживания прерывания
Команды передачи управления
LCALL <ad 16>
(длинный вызов подпрограммы)
(PC): = (PC) + 3;
(SP): = (SP) + 1; ((SP)): = (PC[7÷0]); (SP): = (SP) + 1; ((SP)):= (PC[15÷8]); (PC): = ad[15÷0]
Пример: SP = 07h; адрес PRN = 1234h; адрес LCALL = 0126h
LCALL PRN → SP = 09h; PC = 1234h; (ОЗУ [08h]) = 29h; (ОЗУ [09h]) = 01h
LJMP <ad 16>
(длинный переход)
(PC): = ad[15÷0]
Команды передачи управления
SJMP <rel>
(короткий переход ±127 байт) (PC): = (PC) + 2;
(PC): = (PC) + (rel)
JMP @A + DPTR
(PC): = (A)[7÷0] + (DPTR[15÷0])
Пример: PC = 034Eh; A = 86h; DPTR = 0329h
JMP @A+ DPTR → PC = 03AFh
Команды передачи управления
Условные переходы
JNB <bit>, <rel>
(переход, если бит не установлен)
JNB P1.3, LAB
JNC <rel>
(переход, если бит С не установлен)
JNC LAB
JNZ <rel>
(переход, если A ≠ 0)
JNZ LAB
JZ <rel>
(переход, если A = 0)
JZ LAB
Команды передачи управления
Условные переходы
JB <bit>, <rel> (переход, если установлен в 1)
(PC): = (PC) + 3
if (bit) = 1 then (PC) = (PC) + (rel)
Пример: JB ACC.2, LAB
JBC <bit>, <rel>
(переход, если бит С установлен в 1 и сброс этого бита в 0) Пример: JBC ACC.3, LAB3
JBC ACC.2, LAB2
Команды передачи управления
Условные переходы
JC <rel>
(переход, если перенос установлен) Пример: JC LAB
DJNZ <байт>, <rel>
(декремент и переход, если не равно нулю)
(PC): = (PC) + 2 (Rn): = (Rn) – 1 n = 0, …, 7
if ((Rn) > 0 OR (Rn) < 0) then (PC) = (PC) + (rel)
Пример: R2 = 08h, P1 = FFh
LAB: CPL P1.7; 8 раз переключается 7 бит порта 1
DJNZ R2, LAB
Команды передачи управления
Условные переходы
(PC): = (PC) + 3 (direct): = (direct) – 1
if ((direct) > 0 OR (direct) < 0) then (PC) = (PC) + (rel)
Пример: ОЗУ[40h] = 01h; ОЗУ[50h] = 80h; ОЗУ[60h] = 25h DJNZ 040h, LAB1; переход на LAB2
DJNZ 050h, LAB2
DJNZ 060h, LAB3
…
LAB1: CLR A
LAB2: DEC R1
Команды передачи управления
Условные переходы
CJNE <байт_назначения>, <байт_источника>, <rel>
(сравнение и переход, если не равно)
(PC): = (PC) + 3
if (direct) < (A) then (PC) = (PC) + (rel); (C) = 0 if (direct) > (A) then (PC) = (PC) + (rel); (C) = 1 (rel) – число со знаком
Пример: A = 97h; P2 = F0h; C = 0
CJNE A, P2, MT3
…
MT3: CLR A → A = 00h; P2 = F0h; C = 1; PC = PC + 3 + (rel)
Команды передачи управления
Условные переходы
CJNE <байт_назначения>, <байт_источника>, <rel>
(сравнение и переход, если не равно)
(PC): = (PC) + 3
if #data < (A) then (PC) = (PC) + (rel); (C) = 0 if #data > (A) then (PC) = (PC) + (rel); (C) = 1
Пример: A = FCh; C = 1
CJNE A, #0BFh, MT4
…
MT4: INC A → A = FDh; C=0; PC = PC + 3 + (rel)
Команды передачи управления
Условные переходы
CJNE <байт_назначения>, <байт_источника>, <rel>
(сравнение и переход, если не равно)
(PC): = (PC) + 3
if (Rn) < #data then (PC) = (PC) + (rel); (C) = 0 if (Rn) > #data then (PC) = (PC) + (rel); (C) = 1 n = 0, …, 7
Пример: R7 = 56h; C = 0
CJNE R7, #081h, MT5
…
MT5: NOP → C = 0; PC = PC + 3 + (rel)
Команды передачи управления
Условные переходы
CJNE <байт_назначения>, <байт_источника>, <rel>
(сравнение и переход, если не равно)
(PC): = (PC) + 3
if ((Ri)) < #data then (PC) = (PC) + (rel); (C) = 0 if ((Ri)) > #data then (PC) = (PC) + (rel); (C) = 1 i = 0, 1
Пример: R0 = 89h; ОЗУ[89h] = A7h; C = 0
CJNE @R0, #29h, MT6
…
MT6: DEC R0 → R0 = 88h; C = 1; PC = PC + 3 + (rel)