- •Алгебра логики, алгебра Буля. Основные аксиомы.
- •Законы алгебры Буля. Дистрибутивный, коммутативный, ассоциативный.
- •Законы алгебры Буля. Поглощения, двойного отрицания, исключения.
- •Законы алгебры Буля. Де Моргана, идемпотентности.
- •Условное графическое обозначение логических элементов (стандарты).
- •Способы минимизации логических функций. Правило составления карты Карно.
- •Карта Карно для:
- •Для каждого контура выделяем области:
- •Способы минимизации логических функций. Правило составления диаграммы Вейча.
- •Комбинационная схема. Функция дешифратора.
- •Комбинационная схема. Функция шифратора.
- •Комбинационная схема. Функция мультиплексора.
- •Комбинационная схема. Функция демультиплексора.
- •Триггеры. Типы триггеров. Классификация Триггеров.
- •Регистры. Счетчики. Разновидность.
- •Архитектура Микроконтроллера. Структура типовой эвм.
- •Тактовая частота микроконтроллера. Изменения тактовой частоты.
- •Регистры общего назначения (рон) в микроконтроллерах.
- •Регистр признаков. Распиновка битов.
- •Регистры специального назначения. Регистр Программный счетчик.
- •Регистры специального назначения. Регистр указатель Стека.
- •Регистры специального назначения. Таймеры.
- •Регистры специального назначения. Ацп и цап.
- •Виды памяти в микроконтроллерах.
- •Преобразование последовательного кода в параллельный.
- •Преобразование параллельного кода в последовательный.
- •Язык Ассемблера. Синтаксис. Мнемокод.
- •Арифметические команды. Принцип работы.
- •Imul операнд_1[,операнд_2,операнд_3].
- •Логические команды. Принцип работы.
- •Команды вызова подпрограммы, особенности.
- •Команды переходов в программе, особенности.
- •Доказать следующие законы: дистрибутивный, поглощения.
- •1) Доказательство дистрибутивного закона
- •Доказательство закона поглощения
- •Доказать следующие законы: идемпотентности, двойного отрицания.
- •Доказательство закона идемпотентности
- •Доказательство закона двойного отрицания
- •Доказать следующий законы: исключения, коммутативный.
- •Минимизировать произвольную логическую функцию с помощью диаграмм Вейча. Каскадное подключение дешифраторов, увеличение разряда дешифратора на n.
- •Каскадное подключение демультиплексора, увеличение разряда демультиплексора на n.
- •Реализовать rs триггер на элементах или-не.
- •Реализовать rs триггер на элементах и-не.
- •Основные команды по работе с триггерами общего назначения. Основные команды по работе с триггером признаков. Назначение регистра pc. И принцип работы с ним.
- •Назначения регистра sp. И принцип работы с ним.
- •Назначения регистра watchdog. И принцип работы с ним.
- •Работа с Flash-памятью микроконтроллера.
- •Работа с eeprom памятью микроконтроллера. (https://cxem.Net/mc/book.Php )
Регистры специального назначения. Регистр Программный счетчик.
Счетчик команд — один из наиболее главных регистров микропроцессора. Программа — это последовательность команд, которые хранятся в памяти микропроцессорной системы и которые предназначены для инструктирования микропроцессора, что необходимо делать для решения поставленной задачи. Счетчик команд (программный счетчик) следит за тем, какая команда выполняется в данный момент, а какая команда будет выполняться в следующей. Разрядность счетчика команд определяется разрядностью шины адреса. Чтобы обратиться к любому из этих адресов, счетчик команд должен располагать 16 двоичными разрядами. Где бы команды не располагались, они следуют друг за другом в определенном порядке.
Счетчик команд – представляет собой регистр, в котором содержится адрес следующей исполняемой команды.
Размер счетчика команд может быть от нескольких разрядов до шестнадцати (двухбайтовый). Размерность счетчика зависит от объема памяти программ. Счетчик команд не доступен для программиста, в него мы не можем ничего записать и не можем из него ничего считать. Работой счетчика команд руководит единолично МК.
При включении питания устройства или сброса микроконтроллера, счетчик команд устанавливается в ноль, т.е. указывает на нулевой адрес памяти программ. По этому адресу начинается наша программа (если мы не используем прерывания) или адрес, по которому начинается наша программа (если мы используем прерывания). При нормальном ходе программы содержимое счетчика команд автоматически увеличивается на 1 или 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Т.е., после выполнения команды, счетчик будет указывать адрес следующей команды. Этот порядок будет нарушен, если на пути МК при выполнении программы встретится команда перехода, команда вызова подпрограммы (или возврата из подпрограммы), а также при возникновении прерывания. В этом случае содержимое счетчика – адрес следующей команды, записывается в стек, а в счетчик записывается адрес по которому надо перейти по команде перехода или по прерыванию. По команде возвращения из подпрограммы, в счетчик записывается адрес команды сохраненный в стеке, программа продолжается дальше. Все это проделывается автоматически, без нашего участия.
Регистры специального назначения. Регистр указатель Стека.
Указатель стека — регистр-счетчик, содержимым которого всегда является адрес. Назначение стека в том, чтобы сохранять текущее содержание всех регистров, если происходит прерывание основной программы. Образно стек можно представить в виде записи значений на отдельных листах бумаги и складывании их стопкой. Извлечение всегда происходит в обратном порядке, т.е. только с верхушки стека. Иными словами, соблюдается принцип «последним вошел — первым вышел» (ЕО). В любой момент времени в стек можно включить дополнительную информацию, но при извлечении первой будет та, которая включена последней. С помощью стека можно организовать вложенные подпрограммы. При этом основная программа вызывает подпрограмму, которая может вызвать новую подпрограмму и т.д. При вызове первой подпрограммы адрес возврата к основной программе заносится в стек. При обращении ко второй подпрограмме адрес возврата к первой снова заносится в стек и т.д. По мере выполнения подпрограмм адреса возврата постепенно извлекаются из стека до тех пор, пока не произойдет возврат к основной программе.
Стек, или указатель стека – это специальный регистр, который предназначен для организации стековой памяти.
Стек состоит из двух частей: указатель стека и стековая память. Можно сказать, что стековая память – это туннель с тупиком в конце, состоящий из ячеек памяти. По мере заполнения ячеек памяти первые данные уходят в глубь стека, и добраться до них можно, только вытащив сначала последние введенные данные. Допустим, если мы запишем в стек последовательно три числа: 10,20 и 30, то для того, чтобы затем извлечь из стековой памяти число 10, предварительно придется извлечь числа 30 и 20. Т.е., значение записанное последним всегда будет прочитано первым.
Стек широко используются не только МК в своих целях, но и программистами.
К примеру, при выполнении команды перехода к подпрограмме, МК самостоятельно записывает в стек адрес следующей команды, с которой будет продолжено выполнение основной программы после возвращения из подпрограммы. Возвращаясь из подпрограммы, МК извлекает этот адрес и загружает в счетчик команд, в результате чего выполнение программы продолжается с прерванного места.
Для нас тоже очень удобно сохранять в стеке данные при входе в подпрограмму, а затем извлекать их по возвращению из подпрограммы. Также удобно в стеке сохранять промежуточные результаты вычислений, а затем, по мере необходимости, извлекать их.
Для организации процесса записи данных в стек и их чтения предназначен указатель стека.
В указателе стека содержится адрес ячейки памяти, в которую будут записаны или считаны данные.
Для программиста в системе команд МК есть две специальные команды:
– PUSH – команда записи в стек
– POP – команда чтения из стека
Давайте рассмотрим как происходит запись в стек и чтение из него.
Запись данных в стек:
Для того, чтобы записать данные в стек, их предварительно необходимо загрузить в любой РОН (Регистр общего назначения).
По команде PUSH МК записывает данные из указанного нами РОН в память данных по адресу, на который указывает указатель стека, а затем уменьшает содержимое стека на 1 (если указатель восьмиразрядный) или на 2 (если указатель шестнадцатиразрядный). Новая команда PUSH запишет данные в следующую ячейку ОЗУ и опять уменьшит содержимое указателя стека. И так, далее.
Чтение данных из стека:
По команде POP, МК сначала увеличивает содержимое указателя стека на 1 или 2, а затем считывает данные с ячейки ОЗУ, на которую указывает указатель стека. И так, далее.