Программная реализация последовательных схем на микроконтроллере К1-20: Методические указания к лабораторной работе № 4 по дисциплине “Микропроцессорные информационно-управляющие системы на железнодорожном транспорте”, страница 3

Рис.6

Команды 1 и 2 настраивают ППА D58 в режим "0" для вывода но­мера состояния автомата (Si) (в канал А выводится код цифры; в канал С номер индикатора дисплея ПУ). Команды 3 и 4 настраивают ППА 58 в режим "0" для ввода входной переменной X в канал В и вы­вода выходной функции Zв канал А. Команды 10,13,21,24,32,35,43,46,54,57,65,68 инвертируют входную перемен­ную и выходную функцию. Известно (это является особенностью мик­роконтроллера К1-20), что все, каналы ППА D58 и D59 на своих вхо­дах: и выходах имеют инверторы. Поэтому, для того чтобы опериро­вать с истинными значениями входных (выходных)  переменных после приема сданных в аккумулятор (перед выдачей выходных данных в канал), необходимо произвести их инверсию. Команды 5,...„8, 16, ...,19, 27,...,30, 38,...,41, 49,...,51, 60,... ,63 осуществля­ют вывод на ПУ микроконтроллера текущее состояние автомата Si. Команды 9,...,11, 20,...,22, 31,...,33, 42,...,44, 53,...,55, 64, ...,66 решают задачу вывода выходной функции Z. Команды 12,...,15, 23,...,26, 34,...,37, 45,...,48, 56,...,59, 67,...,71, анализируют значение входной переменной X и обеспечивают переход к соответствующему состоянию автомата. Очевидно, что команды, обеспечивающие индикацию текущего состояния автомата Si, следует сохранить только на момент отладки программы.

Анализ работы программы GRAF показывает, что основная часть времени при реализации программы затрачивается на анализ входной переменной и только при соответствующем ее изменении осуществля­ется переход к другому состоянию автомата. Достоинствами данного способа программной реализации являются его наглядность, простота составления блок-схемы программы по графу переходов, высокое быстродействие. Последнее качество определяется быстродействием процесса анализа входной (входных) переменной. Недостаток вытека­ет из того, что программа является компиляционной. Поэтому, если в памяти микропроцессорной системы находится несколько разных программ автоматов, то переход от одной программы к другим возмо­жен только по внешним сигналам прерывания. Это приводит к услож­нению технических средств и программного обеспечения системы.

3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТА ПО ТАБЛИЦАМ ПЕРЕХОДОВ И ВЫХОДОВ

Данный подход предполагает использование двух типов подпрог­рамм: подпрограмм определения следующего состояния автомата по таблице переходов (Si) и подпрограмм определения значения выходов по таблице выходов (VF). На рис.6 показана блок-схема программы TABLE, построенной по таблицам переходов и выходов, а на рис.7 приведена соответствующая ей программа на ассемблере.

Подключение входной переменной X, выходной функции Z, и наст­ройка ППА D58 производится так же, как и в предыдущем примере (см.рис.3). Кроме того, в выходной порт А ППА D58 в разрядах D1,D2,D3 выводится код текущего состояния автомата Si (разряд D3 является старшим в двоичном представлении состояния Si). Очевид­но, что так же, как и в предыдущем случае, информация о состояни­ях автомата Si полезна на момент отладки программы. Вывод состоя­ния Si в порт А D58 включен в состав подпрограммы VF.

Рис. 7

Метка

Команды

Комментарии

1

2

3

4

5

6

7

M1:

MVI A, 8A

OUT F7

MVI A, O2

STA 21FD

CALL S1

CALL VF

JMP M1

Настройка D58 в режим “0”, канала А на вывод, канал В на ввод

Присвоение автомату Si состояния

Si=0

Вызов подпрограммы определения следующего состояния автомата

Вызов подпрограммы определения состояния выхода автомата

Переход к метке М1

Рис. 8

Рис. 9

Подпрограмма SI с помощью кода текущего внутреннего состояния и кода входного набора определяет новое состояние автомата. На рис.8 показана блок-схема подпрограммы SI; на рис.9 - карта памя­ти, констант и переменных, используемых в ней; на рис.10 приведена подпрограмма SI на языке ассемблер К580. Цифры в поле комментария блок-схемы программы указывают номера команд текста программы, с помощью которых реализуется соответствующий блок алгоритма.