
- •Вопросы:
- •Часть I.
- •Часть II.
- •Часть III.
- •Часть I.
- •1.1. Алгебра логики, алгебра Буля. Основные аксиомы.
- •1.2. Законы алгебры Буля. Дистрибутивный, коммутативный, ассоциативный.
- •1.3. Законы алгебры Буля. Поглощения, двойного отрицания, исключения.
- •1.4. Законы алгебры Буля. Де Моргана, идемпотентности.
- •1.5. Условное графическое обозначение логических элементов (стандарты).
- •1.6. Способы минимизации логических функций. Правило составления карты Карно.
- •1.7. Способы минимизации логических функций. Правило составления диаграммы Вейча.
- •1.8. Комбинационная схема. Функция дешифратора.
- •1.9. Комбинационная схема. Функция шифратора.
- •1.10. Комбинационная схема. Функция мультиплексора.
- •1.11. Комбинационная схема. Функция демультиплексора.
- •1.12. Триггеры. Типы триггеров. Классификация Триггеров.
- •1.13. Регистры. Счетчики. Разновидность.
- •1.14. Архитектура Микроконтроллера. Структура типовой эвм.
- •1.15. Тактовая частота микроконтроллера. Изменения тактовой частоты.
- •1.16. Регистры общего назначения в микроконтроллерах.
- •1.17. Регистр признаков. Распиновка битов.
- •1.18. Регистры специального назначения. Регистр Программный счетчик.
- •1.19. Регистры специального назначения. Регистр указатель Стека.
- •1.20. Регистры специального назначения. Таймеры.
- •1.22. Регистры специального назначения. Ацп и цап.
- •1.23. Виды памяти в микроконтроллерах.
- •1.24. Преобразование последовательного кода в параллельный.
- •1.25. Преобразование параллельного кода в последовательный.
- •1.26. Язык Ассемблера. Синтаксис. Мнемокод.
- •1.27. Арифметические команды. Принцип работы.
- •1.28. Логические команды. Принцип работы.
- •Xor получатель, источник
- •1.29. Команды вызова подпрограммы, особенности.
- •1.30. Команды переходов в программе, особенности.
- •Часть II.
- •2.1. Доказать следующие законы: дистрибутивный, поглощения.
- •2.14. Реализовать rs триггер на элементах и-не.
- •2.15. Реализовать синхронный rs триггер.
- •2.16. Реализовать d триггер через rs.
- •2.17. Реализовать т триггер через rs.
- •2.18. Реализовать j-k триггер через rs.
- •2.19. Счетчик на j-k триггерах.
1.18. Регистры специального назначения. Регистр Программный счетчик.
Счетчик команд – представляет собой регистр, в котором содержится адрес следующей исполняемой команды.
Размер счетчика команд может быть от нескольких разрядов до шестнадцати (двухбайтовый). Размерность счетчика зависит от объема памяти программ. Счетчик команд не доступен для программиста, в него мы не можем ничего записать и не можем из него ничего считать. Работой счетчика команд руководит единолично МК.
При включении питания устройства или сброса микроконтроллера, счетчик команд устанавливается в ноль, т.е. указывает на нулевой адрес памяти программ. По этому адресу начинается наша программа (если мы не используем прерывания) или адрес, по которому начинается наша программа (если мы используем прерывания). При нормальном ходе программы содержимое счетчика команд автоматически увеличивается на 1 или 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Т.е., после выполнения команды, счетчик будет указывать адрес следующей команды. Этот порядок будет нарушен, если на пути МК при выполнении программы встретится команда перехода, команда вызова подпрограммы (или возврата из подпрограммы), а также при возникновении прерывания. В этом случае содержимое счетчика – адрес следующей команды, записывается в стек, а в счетчик записывается адрес по которому надо перейти по команде перехода или по прерыванию. По команде возвращения из подпрограммы, в счетчик записывается адрес команды сохраненный в стеке, программа продолжается дальше. Все это проделывается автоматически, без нашего участия.
1.19. Регистры специального назначения. Регистр указатель Стека.
Стек, или указатель стека – это специальный регистр, который предназначен для организации стековой памяти.
Стек состоит из двух частей: указатель стека и стековая память. Можно сказать, что стековая память – это туннель с тупиком в конце, состоящий из ячеек памяти. По мере заполнения ячеек памяти первые данные уходят в глубь стека, и добраться до них можно, только вытащив сначала последние введенные данные. Допустим, если мы запишем в стек последовательно три числа: 10,20 и 30, то для того, чтобы затем извлечь из стековой памяти число 10, предварительно придется извлечь числа 30 и 20. Т.е., значение записанное последним всегда будет прочитано первым.
Стек широко используются не только МК в своих целях, но и программистами.
К примеру, при выполнении команды перехода к подпрограмме, МК самостоятельно записывает в стек адрес следующей команды, с которой будет продолжено выполнение основной программы после возвращения из подпрограммы. Возвращаясь из подпрограммы, МК извлекает этот адрес и загружает в счетчик команд, в результате чего выполнение программы продолжается с прерванного места.
Для нас тоже очень удобно сохранять в стеке данные при входе в подпрограмму, а затем извлекать их по возвращению из подпрограммы. Также удобно в стеке сохранять промежуточные результаты вычислений, а затем, по мере необходимости, извлекать их.
Для организации процесса записи данных в стек и их чтения предназначен указатель стека.
В указателе стека содержится адрес ячейки памяти, в которую будут записаны или считаны данные.
Для программиста в системе команд МК есть две специальные команды:
– PUSH – команда записи в стек
– POP – команда чтения из стека
Давайте рассмотрим как происходит запись в стек и чтение из него.
Запись данных в стек:
Для того, чтобы записать данные в стек, их предварительно необходимо загрузить в любой РОН (Регистр общего назначения).
По команде PUSH МК записывает данные из указанного нами РОН в память данных по адресу, на который указывает указатель стека, а затем уменьшает содержимое стека на 1 (если указатель восьмиразрядный) или на 2 (если указатель шестнадцатиразрядный). Новая команда PUSH запишет данные в следующую ячейку ОЗУ и опять уменьшит содержимое указателя стека. И так, далее.
Чтение данных из стека:
По команде POP, МК сначала увеличивает содержимое указателя стека на 1 или 2, а затем считывает данные с ячейки ОЗУ, на которую указывает указатель стека. И так, далее.