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

Таблица переходов (табл.1) занесена в массив памяти с адреса­ми 2202...220D. Каждая ячейка соответствует клетке таблицы, и в ней записывается содержимое клетки в разрядах D1,...,D3 (D3-стар­ший разряд, остальные разряды равны 0). Тогда содержимое адресов карты памяти, показанной на рис.9, можно представить следующим образом:

Рис.10

(2202(Н))= 02(Н); (2203(Н))= 04(Н);(2204(Н))= 06(Н);

(2205(Н))= 04(Н);(2206(Н))= 05(Н); (2207(Н))= 08(Н);

(2208(Н))= ОА(Н); (2209(Н))= ОВ(Н);(220А(Н))= ОА(Н);

(220В(Н))= ОС (Н); (220С(Н))=02(Н); (220D(Н))= ОС (Н).

В ячейке 21FD хранится код текущего состояния автомата Si, а в ячейках 21FE(H) и 21FF(Н) хранится двухбайтовый базовый адрес 2200(Н) массива памяти, относительно которого рассчитываются ад­реса соответствующих клеток таблицы переходов. В табл.5 в клетках: проставлена сквозная адресация ячеек памяти, в которых хранится их содержимое (в случае, если в ТП имеются пустые клетки, то для них также выделяются ячейки памяти, являющиеся частью сквозной нумерации ТП, однако, обращение к ним при реализации программы не происходит).

Рассмотрим работу подпрограммы SI при поступлении входного набора Х=1, который переводит автомат из состояния 1 в состояние 2 (см. табл.1). Перед обращением к подпрограмме SI во время ини­циализации (см. программу TABLE) в ячейку 21FD(Н) записывается код начального состояния 1 (00000010). После вызова подпрограммы CALL SI осуществляется пересылка содержимого регистров В,С,Н,N,PSW в стек для их сохранения и вводится входной набор Х=1. При этом значение X записывается в разряд D0, в результате чего в регистре В формируется байт 00000001. Затем производится логическое сложение байта входного набора и байта внутреннего состояния автомата Si (ОООЬООО! V V 00000010=00000011=03(Н)).

В регистровой паре HL формируется адрес 2203(Н) ячейки памя­ти, откуда считывается код 00000100 нового состояния автомата -код состояния 2 (см. рис.10 и табл.5). Этот код записывается в ячейку 21FD, производится восстановление регистров В,С,Н,L, PSW и возврат в программу TABLE.

S\X

0

1

1

2 2 0 2

2 2 0 3

2

2 2 0 4

2 2 0 5

3

2 2 0 6

2 2 0 7

4

2 2 0 8

2 2 0 9

5

2 2 0 A

2 2 0 B

6

2 2 0 C

2 2 0 D

Таблица 5

Подпрограмма VF по коду текущего внутреннего состояния авто­мата Si и входного набора определяет значение его выхода. На рис.11 показана блок-схема подпрограммы с номерами команд в поле комментария, а на рис.12 , - текст программы на ассемблере, на рис.13 представлена карта памяти констант, используемых в ней. Таблица выходов (табл.2) занесена в массив памяти с адресами .яче­ек 2222(Н),...,222D(Н). Значение выходов записывается в разряд D0, остальные разряды равны 0. В ячейках 21FB и 21FС хранится двухбайтовый адрес 2220(Н), относительно которого рассчитываются адреса соответствующих клеток таблицы выходов.

Метка

Команды

Комментарии

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

PUSH B

PUSH H

PUSH PSW

IN F5

CMA

ANI 01 (H)

MOV B,A

LDA 21FD (H)

ORA B

MOV B,A

LHL D 21FE(H)

MOV L,B

MOV A,M

STA 21FD (H)

POP PSW

POP H

POP B

RET

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

         L, PSW в сетке

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

Инверсия А

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

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

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

Логическое сложение Si и X(Si v X)

Сохранение (Si v X) в регистре В

Запись базового адреса

Формирование младшего байта адреса состояния Si

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

Присвоение состоянию Si состояния

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

         H, L, PSW

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

Рис. 11

Рис. 12