Смекни!
smekni.com

Программное обеспечение встроенных систем управления на базе однокристальных микропроцессоров (МП) (стр. 2 из 4)

Рисунок 1.3 – Структурная схема микрокомпьютерной системы

Из наличия у системы входов и выходов можно сделать заключение о том, что микрокомпьютер должен иметь возможность проверять значение каждого входа, а также устанавливать каждый из выходов в определенные значения.

На языке проектирования в операциях проверки и установки используются простые конструкции.

Проверить Вх.1 и запомнить его значение.

Установить значение Вых.1, равное 6.

Рисунок 1.4 – Функция преобразования

Необходимо также иметь возможность проверять условия, которым удовлетворяют хранимые значения каждого из входов для установки выходных значений. С этой целью используется условная конструкция, которая в общем виде может быть представлена как: ЕСЛИ (условия проверки – истина). ТО (выполнить что-либо). ИНАЧЕ (выполнить что-либо другое). Таким образом, для данного примера описание на языке проектирования вначале будет иметь вид:

1. Проверить Вх1 и хранить его значения.

2. Проверить Вх2 и хранить его значения.

3. Если 4 ≤ Вх1 ≤ 8, установить Вых1 = 6.

1. Иначе Вых1 установить = 0.

5. Если 2 ≤ Вх2 ≤ 6, установить Вых2 = 1.

6. Иначе Вых2 установить = 0.

Когда система функционирует, микрокомпьютер выполняет запрограммированные операции шаг за шагом. После того, как входы проверены, нет уверенности, что затем при повторной проверке один из них не окажется измененным. Поэтому необходима такая операция, которая позволяла бы выполнять другие операции языка проектирования бесконечное число раз.

Для этой цели используется конструкция:

«ВЫПОЛНЯТЬ НЕПРЕРЫВНО» . . . . . «КОНЕЦ»

В этой конструкции набор операций, расположенный между ВЫПОЛНЯТЬ НЕПРЕРЫВНО и КОНЕЦ, должен повториться без конца.

В этом случае, однажды начавшись, операция проверки значений входов будет повторяться столько времени, сколько система остается в действии.

Из вышеприведенного примера можно сделать следующие выводы:

микрокомпьютер является последовательным устройством и в каждый момент времени выполняет только одну операцию;

во многих случаях, чтобы изменить функциональное поведение микрокомпьютерной системы, необходимо изменить лишь некоторые операции в описании программы на языке проектирования;

МКП манипулирует только цифровыми данными. Если в системе имеются аналоговые сигналы, для преобразования входных сигналов в цифровую форму необходим АЦП, а для преобразования выходных сигналов в аналоговую форму – ЦАП.

3 Составление схем алгоритмов

Реализация любой функции с помощью микрокомпьютера всегда требует проектирования необходимой последовательности действий, получившей название алгоритма. Наиболее удобная и наглядная форма представления алгоритма решения задачи – графическая, в виде схемы. Она состоит из упорядоченной совокупности условных геометрических фигур, несущих информацию об определенном характере операций, накладываемом условии, принятых обозначениях. Основные формы, которые согласно действующим стандартам представлены в приложении А.

Рассмотрим в качестве примера задачу формирования двух наборов целых чисел, лежащих в диапазоне от -5 до +5. Путем сортировки организуется два набора, один из которых включает в себя положительные числа, а другой – отрицательные.

Схема алгоритма решения этой задачи показана на рис. 1.5.

Рисунок 1.5 – Схема алгоритма с ветвлением

4 Подпрограммы

Подпрограмма – это часть программы, используемая обычно несколько раз в процессе выполнения программы. Однако текст подпрограммы записывается программистом только один раз. Когда же программисту необходимо воспользоваться подпрограммой, достаточно указать в программе соответствующую команду вызова (обращения к подпрограмме), адресующуюся к области памяти, в которой расположена подпрограмма. С этой целью в языке программирования для большинства МП существует команда CALL (вызвать). В этой команде после кода операции (CALL) указывается имя подпрограммы, которое присвоено физическому адресу в области памяти, где расположена данная подпрограмма.

Кроме того, по команде выполняются действия, необходимые для возвращения к основной программе после выполнения подпрограммы:

а) в счетчике команд фиксируется адрес команды в основной программе, которая следует за командой вызова;

б) содержимое счетчика команд (адрес возврата) загружается в стек, содержимое указателя стека модифицируется;

в) в счетчик команд загружается адрес, задаваемый командой вызова. После этого может начаться исполнение подпрограммы.

Последней выполняемой командой подпрограммы является команда RET (return – возврат). По этой команде выполняется возврат к основной программе, прерванной командой вызова. Команда возврата содержит только код операции. По этой команде происходит следующее: а) счетчик команд получает из стека адрес команды в основной программе, следующей за командой вызова; б) содержимое указателя стека соответственно модифицируется.

Основное достоинство подпрограмм заключается в том, что благодаря возможности их многократного использования, сокращается текст программы в целом. Вместо того, чтобы по мере необходимости повторять запись одного и того же фрагмента программы, достаточно оформить запись фрагмента как подпрограмму и обращаться к ней столько раз, сколько требуется в соответствии с алгоритмом решения задачи.

Из одной программы можно производить обращение к нескольким подпрограммам.

Одна подпрограмма может обращаться к другой. Такое построение подпрограмм называется ВЛОЖЕНИЕМ.

Глубина допустимого уровня вложения подпрограмм зависит от типа вычислительной машины и используемого языка программирования. Большинство современных МП и языков программирования допускает многоуровневое вложение. Как следует из вышеизложенного, использование подпрограмм – не слишком обременительная работа для программиста.


5 Программирование в машинных кодах

Реализация требуемого алгоритма вычисления достигается путем подготовки, отладки и записи в ПЗУ соответствующей программы. МП способен воспринимать лишь программы, состоящие из последовательности команд, представленных двоичными кодами. Программирование непосредственно в машинных кодах требует постоянного оперирования многоразрядными двоичными числами, представляющими как коды команд, так и коды операндов.

В качестве примера линейной программы в машинных двоичных кодах рассмотрим программу сложения двух чисел, одно из которых 01100100 находится в регистре общего назначения (РОН) В, а второе – 00010111 расположено в ячейке памяти с адресом 0000 0000 1000 1111. Напомним, что рассматриваемый МП имеет шестнадцатиразрядную шину адреса. Фрагмент программы приведен в табл. 1.1.

Таблица 1.1 – Программа сложения в машинных кодах

Адрес памяти Мнемокод
0000 0000 0000 0100 01111000
0000 0000 0000 0101 00100001
0000 0000 0000 0110 10001111
0000 0000 0000 0111 00000000
0000 0000 0000 1000 10000110
0000 0000 0000 1001 01110110
. . . . . . . . . . . . . . . . . . . . . . . . . .
0000 0000 0000 0100 00010111

Таблица 1.2 – Программа сложения в шестнадцатеричных кодах

Мнемокод Адрес Н - код Vt
MOV A,B 0004 78 5
LXI H 0005 21 16
0006 8F
0007 00
ADD M 0008 86 7
HLT 0009 76 7
. . . . . . . . . . . . . . . . . . . . . . . . .
008F 17

Первая команда – пересылка содержимого регистра В в аккумулятор – является однобайтовой, имеет код операции. Код операции расположен в ПЗУ по адресу 0000 0000 0000 0100, который для данной программы является начальным.

Следующая команда – трехбайтовая, имеет код операции 00100001, представляющий первый байт команды. Второй и третий байты, расположенные в очередных ячейках ПЗУ, содержат соответственно младшую и старшую части адреса 1000 1111 0000 0000, передаваемые по этой команде в регистровую пару H и L.

Микропроцессор при выполнении программы последовательно обращается к ячейкам памяти и выполняет поочередно все команды. Напомним, что коды операций и операнды хранятся в памяти в одинаковом виде и их различение осуществляется микропрограммами выполнения команд, заложенными в МП. Последняя команда имеет код 01110110 и является командой останова (HLT).

В результате выполнения программы в аккумуляторе окажется записанным число 01111011.

Даже рассмотрение такой простейшей программы показывает, насколько неудобным и недостаточно наглядным является представление чисел в машинных двоичных кодах. Поэтому принято запись машинных кодов производить в шестнадцатеричной системе.

В табл. 1.2 приведен фрагмент той же самой программы, записанной в шестнадцатеричных кодах. Рядом с кодом операции показаны его мнемоническое изображение и наименования операндов, принятые в системе команд данного МП. Например, шестнадцатеричный код команды 78, имеющей мнемоническое обозначение MOV A,B, соответствует операции пересылки содержимого регистра В в аккумулятор А. В табл. 1.2 также указано число тактов Vt, необходимое для выполнения каждой команды. Для выполнения всей программы требуется 35 машинных тактов.

Практически удобнее программировать непосредственно в мнемокодах, а затем представлять шестнадцатеричные коды адресов и операндов, получающиеся после распределения памяти.

6 Программирование в мнемокодах

Наиболее удобным методом написания программ является использование мнемонических кодов, состоящих из аббревиатуры полного названия инструкции. В этом случае мнемокод отражает содержательный смысл выполняемой операции.