Общая часть

Порядок составления программ для микропроцессора УМК тот же, что изучался в курсе "Вычислительная техника и программирование":

- на основе анализа производится выбор решения поставлен­ной задачи;

- составляется алгоритм решения;

- в соответствии с алгоритмом записывается программа да языке ассемблера;

- производится перевод программы в машинные коды (в шестнадцатеричной системе счисления);

- выполняется ввод программы в УМК и производится её отладка;

- программа запускается на выполнение.

Элементарное действие, выполняемое микропроцессором называ­ется командой. Команда, записанная в строке программы, называется оператором. Микропроцессор, 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.
 
   
  D3
   
 
  АА
  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; вывод числа в РУС.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: