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

Метка

Команды

Комментарии

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

PUSH B

PUSH H

PUSH PSW

IN F5

CMA

ANI 01 (H)

MOV B,A

LDA 21FD (H)

ORA B

LHL D 21FB

ORA L

MOV L,A

MOV A,M

MOV B,A

LDA 21FD (H)

ORA B

CMA

OUT F4

POP PSW

POP H

POP B

RET

         Сохранение регистров B, C, H, L,

         PSW в стеке

Ввод X→D0 аккумулятора А

Инверсия А

Выделение разряда D0

Сохранение Х в регистре В

Чтение текущего состояния автомата Si

Логическое сложение Si и Х

20(H)→L; 22h→H

 


         Формирование младшего байта      адреса выходной функции Z

Чтение выходной функции Z

Сохранение Z в регистре В

Чтение состояния Si

Логическое сложение Z и Si

Инверсия выходного вектора

Вывод выходного вектора в порт А

 


         Восстановление регистром B, C, H,

         L, PSW

Возврат в программу TABLE

Рис. 13

Рис. 14

S\X

0

1

1

2 2 2 2

2 2 2 3

2

2 2 2 4

2 2 2 5

3

2 2 2 6

2 2 2 7

4

2 2 2 8

2 2 2 9

5

2 2 2 A

2 2 2 B

6

2 2 2 C

2 2 2 D

Таблица 6

В табл.6 в клетках проставлены адреса ячеек памяти, в кото­рых содержится значение выходной функции 2.

Рассмотрим работу подпрограммы VF после выполнения подпрог­раммы SI, когда автомат переходит в состояние 2 и в ячейки 21FD (Н) записан байт 00000100.

После вызова подпрограммы СА11 VF осуществляется пересылка содержимого регистров Н, I, PSW в стек и вводится входной набор х = 1. При этом в регистре В формируется байт 00000001. Затем производится логическое сложение байта входного набора и байта внутреннего состояния автомата Si (00000001 v 00000010 = 00000011 = 03(Н)). В регистровой паре HL формируется адрес 2223(Н) (см.рис.13 и табл.6 ) ячейки памяти, откуда считывается код выхо­дной функции Z(00000000) и сохраняется в регистре В. Затем логи­чески складывается байт состояния автомата Z(00000100) и байт выходной функции Z(00000000). Результатом сложения будет выход­ной вектор (00000100), в разряде D0 которого находится выходная функция автомата Z = 0 , а в разрядах D3,D2,D1 код 010 - двоичное представление состояния Si=2. Далее выходной вектор выводится в канал А ППА, производится восстановление регистров и возврат в программу TABLE.

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

Недостатком данного способа, по сравнению со способом прог­раммной реализации автомата по графу переходов, является снижение быстродействия программы.

4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТА ПУТЕМ ВЫЧИСЛЕНИЯ БУЛЕВЫХ ФУНКЦИЙ

Программная реализация автомата по булевым функциям предпо­лагает, что построение блок-схемы программы происходит по структурной схеме автомата Мили 1 рода (рис. 14). Только структурная схема показывает, почему не происходит мгновенной передачи значе­ний Y1(t),Y2(t)Y3(t) на вход логического преобразователя (ЛП) и, следовательно, исключаются критические состязания. Очевидно, что эта особенность должна быть учтена на блок-схеме алгоритма авто­мата.

Рис. 15

На рис.15 показана блок-схема алгоритма программы автомата, использующая вычисление булевых функций, а на рис.16 приведена соответствующая ей программа BF на ассемблере. Следует отметить, что при построении табл.3 не решалась задача исключения критичес­ких состязаний, т.к. предполагалось, что блок-схема алгоритма ав­томата по методу вычисления булевых функций будет реализована, как синхронный автомат. На структурной схеме автомата (см. рис.14) задачи исключения критических состязаний решаются следую­щим образом: вычисленные в ЛП новые значения Y1(t),Y2(t),Y3(t) по линиям обратных связей поступают на вход ЛП не сразу, а задержи­ваются в блоке памяти (БП), тем самым снимая проблему критических состязаний [C].