Порядок составления программ для микропроцессора УМК тот же, что изучался в курсе "Вычислительная техника и программирование":
- на основе анализа производится выбор решения поставленной задачи;
- составляется алгоритм решения;
- в соответствии с алгоритмом записывается программа да языке ассемблера;
- производится перевод программы в машинные коды (в шестнадцатеричной системе счисления);
- выполняется ввод программы в УМК и производится её отладка;
- программа запускается на выполнение.
Элементарное действие, выполняемое микропроцессором называется командой. Команда, записанная в строке программы, называется оператором. Микропроцессор, K580ВМ80А работает в двоичной системе счисления, шина данных у него является восьмиразрядной (один байт), поэтому максимальное число команд МП составит 28 = 256 команд. Человеку трудно запомнить такое число двоичных чисел, вместо этого каждой комбинации нулей и единиц (двоичному числу) поставлено в соответствие сокращение английских слов, которое называется мнемоническим кодом.
|
|
Например, чтобы переслать содержимое регистра А в регистр
В нужно выполнить команду- 01000111. В мнемоническом коде эта команда будет выглядеть так MOV А,В (от англ. глагола move- двигать).
Все команды микропроцессора можно разделить на 3 основные группы:
- команды пересылок;
- арифметические и логические команды;
- команды управления.
Назначение каждой команды приведено в приложении А, более подробно о них узнать в 14.11. Команды могут быть однобайтные, двухбайтные и трехбайтные. т.е. занимать в ОЗУ одну, две или три ячейки памяти.
В любой команде сначала записывается код операции, который всегда занимает один байт. Если в команде задаются данные, то для записи восьмиразрядных данных требуется один байт, а для шестнадцатиразрядных - два байта. Так как нумерация адресов шестнадцатиразрядная, то команды управления занимают три байта, причем при записи адреса сначала записывается младший байт адреса, а затем старший байт адреса.
Для полного использования возможностей микропроцессора все программы пишутся, как правило, на языке ассемблера (используется мнемонический код). Для этого в каждой строке программы пишут один оператор. а вся программа разбивается на 4 поля:
поле метки, поле мнемокода, поле операнда и поле комментария.
Метка - условное обозначение адреса перехода в программе. Меткой может быть последовательность пяти буквенно-цифровых символов, причем первым символом может быть только буква. Метка отделяется от поля мнемокода символом двоеточие, например:
МI:, М34:, S210:, и т.д.
Поле мнемокода - содержит код операции, например MOV, LDA и т.д.
|
|
Поле операндов - содержит дополнительную информацию, необходимую для выполнения команды. Например, указатель регистра или регистровой пары, адрес памяти, данные и т.д.
Существует четыре типа операндов:
- регистр;
- регистровая пара;
- непоcредственные данные (одно- или двухбайтовые);
- адрес памяти (двухбайтовый).
Поле комментария - отделяется от поля операнда символом точка с запятой. Комментарий служит для пояснения работы программы, он помогает выявить ошибки в программе. Первоначально нужно указать по какому адресу будет располагаться программа. Для этого служит директива ORG. В УМК пользователю для программ отведена область ОЗУ с адресами 0800н…0ВFFн. Приводим пример программы на языке ассемблера
OBFFн
Поле метки | Поле мнемокода | Поле операнда | Поле комментария |
ORG | ; начальный адрес программы | ||
MI: | MVI | A,80 | ; настройка УВВ |
OUT | ; настройка УВВ | ||
MVI | A,AA | ; запись числа в регистр А | |
OUT | ; вывод в порт светодиодов | ||
JMP | MI | ; возврат на начало программы |
Как правило, последним оператором программы является команда остановки HLT, После написания программы ее нужно перевести в машинные коды. Для УМК эта операция делается вручную, а для сложных и длинных программ нужно использовать персональную ЭВМ со специальной программой, которая называется кросс- ассемблер.
Она позволяет производить отладку и перевод программы в шестнадцатеричные коды с использованием дисплея персональной ЭВМ.
При ручном переводе необходимо из приложения А выписать двоичные коды команд на мнемонике, подставив в них коды регистров, регистровых пар, проверок условий и т.д. Затем двоичные числа переводят в шестнадцатеричные и заносят их по ячейкам памяти, Этот перевод необходим, чтобы ускорить ввод программы. Приведенная ранее программа будет иметь вид:
Адрес | Код | При переводе следует помнить, что нумерация адресов ячеек памяти - шестнадцатеричная, а при записи адресов перехода вначале указывается младший байт адреса, а затем старший байт адреса. Поэтому, после команды JMP-СЗ в ячейку с адресом 0809 записан вначале младший байт адреса 00 метки MI с адресом 0800 а в ячейку с адресом 080А записан старший байт метки MI-08. |
3Е | ||
D3 | ||
3Е | ||
АА | ||
D3 | ||
C3 | ||
080A |
В любой реальной программе для управления каким-либо технологическим процессом всегда осуществляется ввод и вывод информации (например, ввод информации от датчиков, обработка полученных -сигналов и вывод информации). Поток информации поступает через порты ввода и вывода микросхемы К560ВВ55А с помощью команд IN и OUT. Она имеет три восьмиразрядных порта А,В,С, которые могут работать как на ввод, так и на вывод информации в различных режимах и регистр управляющего слова (РУС). Восьмиразрядный порт С можно использовать как два четырехразрядных: С старший (D4 … D7) и порт С младший (D0 … D3). Для того, чтобы настроить микросхему на требуемый режим необходимо записать определенное восьмиразрядное число в шестнадцатеричной форме в так называемый регистр управляющего слова (РУС).
Для этого число нужно составить, перевести его в шестнадцатиричную форму, записать в аккумулятор (регистр А микропроцессора) с помощью команды MVI и вывести в РУС с помощью команды OUT. В УМК тумблеры и светодиоды макетной панели подключены к портам в соответствии с таблицей 11.1.
Таблица 11.1
Нагрузка | Порт | Адрес |
Светодиоды | А | 90Н |
Тумблеры | В | 91Н |
Свободный | С | 92Н |
- | РУС | 93Н |
Само число имеет восемь разрядов (D7…D0). Чтобы составить число, которое нужно загрузить в РУС, нужно воспользоваться следующей информацией:
D7 D6 D5 D4 D3 D2 D1 D0
Порт С младший:
|
|
1 – ввод
0 – вывод
Порт В:
1 – ввод
0 – вывод
Режим работы портов В и С мл.:
0 – режим 0;
1 – режим 1.
Порт С старший:
1 – ввод,
0 – вывод.
Порт А:
1 – ввод, 0 – вывод.
Режим работы портов А и С старшего:
00 - режим 0,
01- режим 1,
1* - режим 2.
В этом разряде всегда должна быть «1»
В УМК мы будем пользоваться режимом работы портов А,В,С, - 0, что означает простой ввод-вывод.
Если какой-либо порт не используется, то в соответствующие разряды вписывают нули.
Знак * означает, что число может быть любое (0 или 1).
Например, нужно настроить порт А на ввод, а порт В на вывод. В этом случае число, записанное в РУС будет иметь вид:
В шестнадцатеричной форме число будет 90Н. Чтобы настроить микросхему К580ВВ55А нужно выполнить две команды:
MVI A,90H; запись составленного числа в аккумулятор
OUT 93H; вывод числа в РУС.