- •Функциональные узлы логических и цифровых устройств
- •5.1 Основные логические функции
- •Логическое умножение (конъюнкция), операция "и"
- •Логическое сложение (дизъюнкция), операция "или"
- •Логическое отрицание (инверсия), (операция "не")
- •Основные положения и теоремы алгебры логики
- •Виды логики
- •5.2 Схемная реализация логических элементов
- •5.2.1 Диодно-резисторные схемы
- •5.2.2 Диод-транзисторные схемы
- •5.2.3 Транзисторно-транзисторные схемы
- •5.2.4 Логические элементы на полевых мдп транзисторах
- •5.2.5 Основные параметры логических элементов
- •Контрольные вопросы к разделу 5.1 - 5.2
- •5.3 Триггеры в интегральном исполнении
- •5.3.1 Асинхронный r-s триггер на логических элементах
- •5.3.2 Синхронный r-s триггер
- •Контрольные вопросы к разделу 5.3
- •5.4 Счетчики
- •5.4.1 Двоичный счетчик с последовательным переносом
- •5.4.2 Счетчик с последовательным переносом на вычитание
- •5.4.3 Двоичный счетчик с параллельным переносом
- •5.4.4 Реверсивный счетчик с параллельным переносом
- •5.4.5 Счетчики с произвольным коэффициентом пересчета
- •5.4.6 Двоично-десятичные счетчики
- •Контрольные вопросы к разделу 5.4
- •5.5 Регистры
- •5.5.1 Регистр параллельного типа
- •5.5.2 Последовательный регистр
- •5.5.3 Реверсивный сдвигающий регистр
- •5.6 Дешифратор и шифратор
- •5.6.1 Дешифратор
- •5.6.2 Шифратор
- •5.6.3 Преобразователи кодов
- •5.7 Распределитель (демультиплексор) и мультиплексор
- •5.7.1 Демультиплексор
- •5.7.2 Мультиплексор
- •5.8.2 Операция вычитания
- •5.8.3 Операция умножения цифровых сигналов
- •Контрольные вопросы к разделу 5.8
- •5.9 Устройства для хранения информации (Запоминающие устройства)
- •5.9.2 Оперативные запоминающие устройства (озу)
- •Контрольные вопросы к разделу 5.9
- •5.10 Микропроцессор
- •5.10.1 Общие сведения
- •5.10.2 Микропроцессор к580вм80а
- •Обозначение и функциональное назначение выводов мс.
- •Система команд микропроцессора
- •Команды пересылок
- •Арифметические и логические команды
- •Команды управления
- •5.11 Микропроцессорный комплект (мк)
- •5.11.1 Общие сведения
- •5.11.2 Программируемый параллельный интерфейс кр580вв55а
- •5.11.3. Универсальный программируемый таймер кр580ви53 (ppi)
- •5.11.4 Программирование мк
- •Контрольные вопросы к разделам 5.10 - 5.11
- •Преобразователи сигналов
- •6.1. Ограничители сигнала
- •6.2 Устройства сравнения (нуль-органы)
- •6.3 Выполнение простейших математических операций с сигналами в аналоговой форме Сложение и вычитание
- •Контрольные вопросы к разделам 6.1 - 6.3
- •6.4 Амплитудная модуляция
- •6.5 Амплитудное детектирование
- •6.6 Фазовая и частотная модуляция
- •6.7. Фазовое детектирование
- •6.8 Частотное детектирование
- •Контрольные вопросы к разделам 6.4 - 6.8
- •6.9 Цифро-аналоговые и аналого-цифровые преобразователи
- •6.10 Широтно-импульсный и частотно-импульсный модулятор
5.11.4 Программирование мк
Порядок составления программ для микропроцесссорного комплекта тот же, что изучался в курсе "информатика":
- на основе анализа производится выбор решения поставленной задачи;
- составляется алгоритм решения;
- в соответствии с алгоритмом записывается программа на языке ассемблера;
- производится перевод программы в машинные коды (в шестнадцатиричной системе счисления);
- выполняется ввод программы в микропроцессорный комплект и производится ее отладка;
- программа запускается на выполнение.
Команды могут быть однобайтные, двубайтные и трехбайтные, то есть занимать в ОЗУ одну, две или три ячейки памяти.
В любой команде сначала записывается код операции, который всегда занимает один байт. Если в команде задаются данные, то для записи восьмиразрядных данных требуется один байт, а для шестнадцатиразрядных – два байта. Так как нумерация адресов шестнадцатиразрядная, то при записи команды управления занимают три байта, причем при записи адреса сначала записывается младший байт адреса, а затем старший байт адреса.
Для полного использования возможностей микропроцессора все программы пишутся, как правило, на языке ассемблера (используется мнемонический код). Для этого в каждой строке программы пишут один оператор, а вся программа разбивается на 4 поля: поле метки, поле мнемокода, поле операнда и поле комментария.
Метка – условное обозначение адреса перехода в программе. Меткой может быть последовательность пяти буквенно-цифровых символов, причем первым символом может быть только буква. Метка отделяется от поля мнемокода символом двоеточие, например:
M1:, M34:, S210: и так далее.
Поле мнемокода – содержит код операции, например MOV, LDA и так далее.
Поле операнда – содержит дополнительную информацию, необходимую для выполнения команды. Например, указатель регистра или регистровой пары, адрес памяти, данные и так далее.
Существует четыре типа операндов:
- регистр;
- регистровая пара;
- непосредственные данные (одно- или двухбайтовые);
- адрес памяти (двухбайтовый).
Поле комментария – отделяется от поля операнда символом точка с запятой. Комментарий служит для пояснения работы программы, он помогает выяснить ошибки в программе.
Рассмотрим порядок разработки программы на следующем примере.
Вывести в порт А, расположенный по адресу (90)н, число (АА)н. Режим работы порта простой (0). Регистр управляющего слова работы портов расположен по адресу (93)н. Для решения задачи необходимо настроить порты на заданный режим работы и вывести заданное число в порт А. Для настройки портов составляется управляющее слово работы портов и выводится в регистр управляющего слова. По условию задан только режим работы порта А, в связи с этим, произвольно задаются условиями режим работы остальных портов. Положим, что порт В, Сст, Смл работают на вывод и режим их работы нулевой. Тогда код управляющего слова будет иметь вид
10000000 = (80)н
Так как все операции в МП КР580ВМ80А осуществляются через аккумулятор, то первой командой необходимо переслать данные (управляющее слово) в регистр А. Для этого воспользуемся командой MVI r, data 8. В данном примере команда будет иметь вид MVI A, 80. Код команды MVI A – 00DDD110 → 00111110 = (3E)н. Команда MVI A, 80 занимает два байта. Следующий этап – это пересылка управляющего слова в регистр управляющего слова. Для пересылки воспользуемся командой OUT, port. Код команды OUT – 11010011 = (D3)н. Во втором байте команды указывается адрес (в данном случае РУС – (93)н). После выполнения этой команды настройка портов осуществлена. Аналогично осуществляется пересылка заданного числа в порт А с той лишь разницей, что в команде OUT порт указывается адрес порта А (90)н. Остановить выполнение программы можно командой HLT или осуществить безусловный переход на метку (команда пересылки заданного числа в аккумулятор) с помощью команды JMP adr. При этом выполнение программы, начиная с метки, будет повторяться.
При написании программы первоначально указывается адрес первой ячейки памяти, с которой начнется запись программы. Для этого служит директива ORG. В таблице 5.8 приведена программа решения задачи.
Таблица 5.8 – Программа вывода числа в порт А
|
OGR |
0800 |
|
|
MVI |
А, 80 |
; настройка УВВ: пересылка управляющего слова работы портов в аккумулятор |
|
OUT |
93 |
; настройка УВВ: пересылка управляющего слова в РУС |
М1: |
MVI |
А, АА |
; запись исходного числа в регистр-аккумулятор (регистр А) |
|
OUT |
90 |
; вывод исходного числа в порт светодиода (порт А) |
|
JMP |
М1 |
; возврат на начало программы |
поле метки |
поле мнемокода |
поле операнда |
поле комментария |
После написания программы ее нужно перевести в машинные коды. Обычно эта операция делается вручную, а для сложных и длинных программ нужно использовать персональную ЭВМ со специальной программой, которая называется росс-ассемблер. Она позволяет производить отладку и перевод программы в шестнадцатиричные коды с использованием дисплея персональной ЭВМ.
При ручном переводе необходимо из таблицы команд выписать двоичные коды команд на мнемонике, подставив в них коды регистров, регистровых пар, проверок условий и так далее. Затем двоичные числа переводят в шестнадцатиричные и заносят их по ячейкам памяти. Этот перевод необходим, чтобы ускорить ввод программы. Приведенная ранее программа представлена в таблице 5.9.При переводе следует помнить, что нумерация адресов ячеек памяти – шестнадцатиричная, а при записи адресов перехода в начале указывается младший байт адреса, а затем старший байт адреса. Поэтому после кода команды JMP – С3 в ячейку с адресом 0809 записан вначале младший байт адреса 04 метки М1 с адресом 0804, а в ячейку с адресом 080А записан старший байт метки М1 - 08.
Таблица 5.9 – Программа вывода заданного числа в порт А в кодах
Адрес |
Код |
Назначение кодов |
0800 |
3Е |
код команды MVI A |
0801 |
80 |
управляющее слово работы портов |
0802 |
D3 |
код команды OUT |
0803 |
93 |
адрес регистра управляющего слова |
0804 |
3E |
код команды MVI A |
0805 |
AA |
код исходной информации, которая выводится в порт А |
0806 |
D3 |
код команды OUT |
0807 |
90 |
адрес порта А |
0808 |
C3 |
код команды JMP |
0809 |
04 |
младший байт адреса метки |
080А |
08 |
старший байт адреса метки |
