
- •Цифровые устройства
- •Введение.
- •1. Основные принципы цифровой электроники.
- •1.1. Аналоговые и цифровые сигналы
- •1.2. Модели и уровни представления цифровых устройств
- •1.3. Входы и выходы цифровых микросхем
- •1.4. Основные обозначения на схемах
- •1.5. Серии цифровых микросхем
- •1.6. Корпуса цифровых микросхем
- •2.1. Системы счисления.
- •2.2 Арифметические операции над двоичными числами.
- •2.3. Машинное представление информации
- •2.3.1 Формы представления чисел.
- •2.3.2. Буквенно-цифровой код
- •2.3.3 Восьмисегментный код
- •3. Логические основы цифровой техники
- •3.1 Основные законы алгебры логики
- •3.2 Формы описания логических функций и их использование для синтеза логических схем
- •3.3. Синтез комбинационных схем с несколькими выходами
- •3.4. Понятие логического базиса
- •4. Логические элементы цифровых устройств
- •4.1 Общие характеристики элементов цифровых устройств
- •4.2. Переходные процессы в логических схемах
- •4.3. Описание основных схемотехнических решений базовых логических элементов.
- •4.3.1. Интегральные схемы ттл и ттлш
- •4.3.2. Интегральные микросхемы на моп-структурах
- •4.3.3. Микросхемы эмиттерно-связанной транзисторной логики
- •4.3.4. Инжекционные интегральные логические схемы (и2л)
- •4.3.5. Схемные особенности логических элементов
- •4.4. Сложные комбинационные цифровые автоматы
- •4.4.1. Сумматор по модулю два
- •4.4.2. Мультиплексоры и демультиплексоры
- •4.4.3. Дешифраторы, дешифраторы-демультиплексоры, шифраторы
- •4.4.4. Преобразователи кодов
- •4.4.5. Сумматоры
- •4.5. Последовательностные схемы цифровых автоматов
- •4.5.1. Асинхронный r-s триггер
- •4.5.2. Синхронный r-s триггер
- •4.5.3. Синхронный d - триггер со статическим управлением
- •4.5.3. Синхронный d - триггер с динамическим управлением
- •4.5.4. Универсальный j-k триггер
- •4.5.6. Регистры
- •4.5.7. Счетчики
- •Полупроводниковые запоминающие устройства
- •5.1. Статические озу
- •5.2. Динамические озу
- •5.3. Однократно программируемые постоянные запоминающие устройства
- •5.4. Перепрограммируемые постоянные запоминающие устройства
- •Специальные элементы цифровых устройств
- •6.1. Автоколебательные генераторы на логических элементах
- •6.2. Формирователи сигналов
- •6.2.1. Укорачивающие формирователи
- •6.2.2. Расширяющие одновибраторы
- •6.2.3. Триггер Шмитта
- •6.2.4. Аналоговый компаратор
- •Преобразователи сигналов
- •7.1. Цифроаналоговые преобразователи
- •7.1.1. Цап с матрицей r-2r
- •7.1.2. Цап с матрицей звездообразного типа
- •7.2. Аналого-цифровые преобразователи
- •Ацп двойного интегрирования (интегрирующий ацп).
- •Сигма-дельта ацп.
- •Преобразователи напряжение-частота
- •8. Элементы цифровой индикации
- •Малогабаритные лампочки накаливания
- •Светодиодные индикаторы.
- •Жидкокристаллические индикаторы
- •Дисплеи на основе органических пленок (oled)
- •Динамическая индикация
- •Микропроцессоры Введение
- •1. Классификация микропроцессоров
- •2. Архитектура микроконтроллера
- •2.1 Основные характеристики микроконтроллера
- •2.2. Архитектура микроконтроллеров
- •2.2.1. Архитектура микроконтроллеров mcs-51
- •Альтернативные функции порта p3
- •2.2.2. Архитектура avr микроконтроллеров
- •3. Программирование микроконтроллеров
- •3.1 Языки программирования для микроконтроллеров
- •3.2. Виды компиляторов
- •3.3.1 Форматы и способы адресации данных
- •3.3.2. Форматы и способы адресации команд
- •3.3.3. Команды пересылки информации
- •3.3.4. Команды поразрядной обработки информации
- •3.3.5. Команды арифметических операций
- •3.3.6. Управляющие команды
- •3.3.7. Порядок выполнения прерываний в микроконтроллерах семейства mcs51.
- •3.3.8. Применение подпрограмм при программировании.
- •3.3.9. Директивы ассемблера для микроконтроллеров семейства mcs-51
- •3.3.10. Применение комментариев
- •3.3.11. Многофайловые программы.
- •3.3.12. Отладка программ.
- •3.3.13. Способы отладки программ.
- •Программируемые логические матрицы, программируемая матричная логика, базовые матричные кристаллы
- •4.1. Программируемые логические матрицы и программируема матричная логика
- •4.3. Базовые матричные кристаллы
- •4.4. Бис/сбис с программируемыми структурами (cpld, fpga, смешанные структуры)
- •Список использованной литературы
3.3.5. Команды арифметических операций
В ранее рассмотренных командах обработки информации кодирование содержимого отдельных битов байта не имело значения. В арифметических операциях нужно придерживаться строго определенных правил записи данных в соответствии с порядковыми номерами разрядов двоичного кода. В связи с ограниченными ресурсами микроконтроллера в нем используются только четыре арифметических операции с целыми числами. Отступления от правил кодирования приводят к неправильному выполнению арифметических операций.
В одном байте может быть закодировано 256 значений целого числа. При работе с положительными числами это соответствует значениям от 0 до 255, Все команды арифметических операций предназначены для работы с положительными целыми числами байтового формата, хотя команды сложения и вычитания в случае отсутствия переполнения обеспечивают получение корректного результата при специальном способе кодирования отрицательных чисел. Кодирование чисел более подробно рассмотрено в главе о программировании арифметических операций. При необходимости работы с числами, которые не могут быть представлены в байтовом формате, необходимо разрабатывать соответствующие подпрограммы. Выполнение операций умножения и деления с числами, имеющими произвольный знак, возможно при их представлении через знак и модуль и использовании соответствующих подпрограмм, Это могут быть собственные разработки или заимствования из хорошо проверенных библиотек других разработчиков.
Команда сложения работает с данными байтового формата, притом в качестве приемника всегда используется только накопитель:
ADD A, #src
ADD A, Rn
ADD A, @Ri
ADD A, src
Мнемоника этой команды соответствует слову ADDition (сложение).
Для работы с числами, которые не могут быть представлены одним байтом, используется команда сложения, учитывающая перенос, полученный при сложении предыдущей пары байтов:
ADDC A, #src
ADDC A, Ri
ADDC A, @Ri
ADDC А, src
Добавление буквы С к обозначению команды указывает на использование бита переноса (ADDition with Carrier).
Существует также команда сложения, при помощи которой производится увеличение заданного операнда на единицу (INCrement):
INC А
INC Rn
INC @Ri INC src
Такая же команда есть и для работы с двумя байтами содержимого регистра указателя данных:
INC DPTR
При помощи этой команды можно изменять содержимое указателя для чтения последовательности байтов из ПЗУ.
При сложении чисел, представленных двоично-десятичными кодами, после операции сложения нужно использовать команду десятичной коррекции суммы
DA A
Двоично-десятичное кодирование имеет весьма ограниченное применение и потому далее не рассматривается.
Набор команд для вычитания гораздо уже. Команда вычисления разности существует только в варианте с вычитанием содержимого бита переноса (не хватило кодов команд!):
SUBB A, #src
SUBB А, Rn
SUBB A, @Ri
SUBB A, src
Мнемоника этой команды соответствует словам SUBtracuon with Borrow (т. е. вычитание с учетом займа, так как при вычитании образуется заём, а не перенос). По этой причине перед вычислением разности младших байтов нужно обязательно очищать бит переноса, если нет уверенности в его содержимом. При вычислении разности старших байтов этого делать не нужно.
Существует также команда вычитания, при помощи которой производится уменьшение заданного операнда на единицу (DECrement):
DEC A
DEC Rn
DEC src
DEC @Ri
Команды уменьшения для работы с двухбайтовым форматом данных нет.
Результаты выполнения команд сложения и вычитания влияют на содержимое битов переноса, дополнительного переноса и переполнения в слове состояния программы. Результаты выполнения команд увеличения и уменьшения не влияют на содержимое слова состояния программы.
Команда умножения (MULtiplication) и деления (DIVision) работают при записи операндов в накопитель и регистр В. Для команды умножения порядок записи сомножителей в эти регистры не важен,
MUL AB
Произведение имеет двухбайтовый формат. Младший байт произведения записывается в накопитель, а старший — в регистр В.
Для команды деления делимое должно быть записано в накопитель, а делитель — в регистр В:
DIV AB
После выполнения команды в накопителе находится частное, а в регистре В — остаток. После выполнения команд умножения и деления в бит переноса заносится 0. Если старший байт произведения неравен нулю, то в байт переполнения заносится «1». При делении на 0 в байт переполнения также заносится «1».