
- •Цифровые устройства
- •Введение.
- •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.8. Применение подпрограмм при программировании.
При написании программ часто при реализации алгоритма работы устройства приходится повторять одни и те же операторы (например, операторы, работающие с параллельным или последовательным портом). Было бы неплохо использовать один и тот же участок кода, вместо того, чтобы повторять одни и те же операторы несколько раз.
Участок программы, к которому можно обращаться из различных мест программы для выполнения некоторых действий называется подпрограммой.
Проблема, с которой приходится сталкиваться при многократном использовании участков кодов - это в какое место памяти программ возвращаться после завершения подпрограммы. Обращение к подпрограмме производится из нескольких мест основной программы:
Рис. 3.2. Иллюстрация состояния программного счетчика при работе с подпрограммами
Для того, чтобы получить возможность возвращаться на команду, следующую за командой вызова подпрограммы, требуется запомнить адрес этой команды. Адрес возврата хранится в особых ячейках памяти. После выполнения подпрограммы необходимо осуществить переход к адресу, который записан в этих ячейках.
Для обращения к подпрограмме и возврата из нее в систему команд микропроцессоров вводят специальные команды. В микроконтроллерах семейства MCS-51 это команды LCALL, ACALL для вызова подпрограммы и команда RET для возврата из подпрограммы.
Пример использования подпрограммы:
...
MOV A,#56
CALL PeredatByte
...
MOV A,#37
CALL PeredatByte
...
;********************************************
;Подпрограмма передачи байта
;через последовательный порт
;********************************************
PeredatByte:
JB TI,$ ;Если предыдущий байт передан
MOV SBUF,G_Per ;то передать очередной байт
RET
Внимание! Ни в коем случае нельзя попадать в подпрограмму любым способом кроме команды вызова подпрограммы CALL! В противном случае команда возврата из подпрограммы передаст управление случайному адресу! По этому адресу могут быть расположены данные, которые в этом случае будут интерпретированы как программа, или обратиться к внешней памяти, откуда будут считываться случайные числа.
Очень часто требуется из одной подпрограммы обращаться к другой подпрограмме. Такое обращение к подпрограмме называется вложенным. Количество вложенных подпрограмм называется уровнем вложенности подпрограмм. Максимально допустимый уровень вложенности подпрограмм определяется количеством ячеек памяти, предназначенных для хранения адресов возврата из подпрограмм.
Ячейки памяти, в которых хранятся адреса возврата из подпрограмм называются стеком. Логически эти ячейки памяти организованы так, чтобы считывание последнего записанного адреса производилось первым, а первого записанного адреса производилось последним. Такая логическая организация формируется специальным счетчиком. Этот счетчик называется указателем стека SP. Ячейка памяти, в которую в данный момент может быть записан адрес возврата из подпрограммы, называется вершиной стека. Количество ячеек памяти, предназначенных для организации стека, называется глубиной стека. Последняя ячейка памяти, в которую можно производить запись называется дном стека. Логическая организация стека приведена на следующем рис. 3.3.
Первоначально стек выполнялся аппаратно на отдельных ячейках памяти, затем его стали размещать в обычной памяти данных микропроцессоров. Это позволило в
каждом конкретном случае устанавливать необходимую для программы глубину
стека. Оставшуюся память можно использовать для размещения глобальных и
локальных переменных программы. Глубина стека устанавливается при помощи
Рис. 3.3. Логическая организация стека
записи начального адреса вершины стека в указатель стека. Глубина стека устанавливается один раз после включения питания в процедуре инициализации контроллера.
Глобальными называются переменные, используемые при выполнении всей программы, включая микропрограммы.
Локальными называются переменные, используемые только данной подпрограммой.
Например, в микроконтроллерах семейства MCS-51 при занесении информации в стек содержимое указателя стека увеличивается - стек растет вверх, поэтому стек размещается в самой верхней части памяти данных. Для того, чтобы установить глубину стека 28 байт, необходимо вычесть из адреса максимальной ячейки внутренней памяти микроконтроллера глубину стека и записать полученное значение в указатель стека SP:
Кроме содержимого программного счетчика часто требуется запоминать содержимое внутренних регистров и флагов процессора, локальных переменных подпрограммы. Стек оказался удобным средством и для этой задачи. Сохранение локальных переменных в стеке позволило осуществлять вызов подпрограммы самой из себя (реализовывать рекурсивные алгоритмы). Это привело к введению в систему команд специальных команд работы со стеком. В микроконтроллерах семейства MCS-51 это команды PUSH и POP. Использование этих команд показывается на следующем примере:
Подпрограммы предназначены для выполнения определенных действий над внутренними устройствами микроконтроллера, внешними устройствами, подключенными к выводам микроконтроллера или числами, хранящимися в памяти этой микросхемы. В любом случае, с точки зрения программы, операции производятся над переменными. Переменные могут быть локальными или глобальными.