Проектирование одного из блоков имитатора сигналов РНС, предназначенного для выполнения испытаний судовой приемоиндикаторной аппаратуры, страница 3

В разработанном контроллере в качестве микропроцессора используется i8085, выполненный по КМОП-технологии. Он использует лишь один источник питания +5В и имеет ТТЛ-совместимые сигналы. Для реализации сигналов управляющей шины используется мультиплексор 1533КП11. Он формирует сигналы I/OR и I/OW, используя известные соотношения:

Таблица 2. Карта памяти

Модуль

Адреса

Микросхема

ROM

0000h–07FFh

DD2

RAM

0800h–08FFh

DD3

Таблица 3. Карта пространства ввода/вывода

Модуль

Адреса

Микросхема

ROM

00h–07h

DD2

RAM

08h–0Fh

DD3

Рис. 4. Демультиплексор 1533ИД7

CPU при работе обращается к:

1.  Микросхеме 8755 - памяти ROM объемом 2 KByte, используемой для хранения программного обеспечения и таблицы данных.

2.  Микросхеме 8155 – памяти RAM объемом 256 Byte, используемой для стека, хранения данных и индикации (применяются порты этой МС).

3.  Микросхеме 1533ИР22 - буферу входных данных (Input Buffer).

4.  Микросхеме 1533ИР22 – буфера выходных данных (Output Buffer).

Для создания сигналов выбора (Chip Select) указанных микросхем, используется микросхема 1533ИД7.Назначение выходных сигналов представлено в таблице 4.

Таблица 4

№ выхода

port

Устройство

0

0

0

0

0

0

00h÷07h

ROM

0

0

0

0

1

1

08h

RAM

0

0

0

1

0

2

10h

Input Buffer 1533ИР23

0

0

0

1

1

3

18h

Output Buffer 1533ИР23

0

0

1

0

0

4

20h

1533АП5

0

0

1

0

1

5

28h

Unused

0

0

1

1

0

6

30h

Unused

0

0

1

1

1

7

38h

Unused



Раздел 3

ПРОГРАММНЫЙ МОДУЛЬ

;программный модуль состоит из четырех основных частей:

;инициализации контроллера

;приема управляющего пакета

;обработки пакета управления – счета ошибок

;вывода информации на индикаторы.

;кроме основного текста программы, должен также использоваться

;дополнительный файл, в котором будут описаны все константы и

;символические имена.

МОДУЛИ ИНИЦИАЛИЗАЦИИ И ПРИЕМА УПРАВЛЯЮЩЕГО ПАКЕТА.

DEFSEG DATA1, CLASS=DATA, START=RAM

SEG DATA1

BUF      DS   5

POINT    DS   2

COUNT    DS   1

FLAG_RDY DS   1    ;

DEFSEG BEGIN, CLASS=CODE, START=0

SEG BEGIN

STRT:

JMP PROG

SEG CODE

PROG:

LXI SP, STPOINT    ;

MVI A, 00111010B   ;

OUT CS8755         ;

IN PA8755          ;

MVI A, 0H          ;

SETTINGS:

LXI H, BUF         ;

SHLD POINT         ;

MVI A, 5H          ;

STA COUNT          ;

Cin: IN 94H ;

ANI 1 ;

JZ Cin ;

IN 80H ;

MOV M,A

CALL OBR_PAK ; вызов подпрограммы обработки пакетов

JMP SETTINGS

; Подпрограмма обработки пакетов

;пакеты находятся в памяти по адресу BUF, в качестве счетчиков

;используются ячейки памяти.

MIST1    DS   1

MIST2    DS   1

MIST3    DS   1

MIST4    DS   1

MIST5    DS   1

F_FLAG   DS   1

MVI A, 0H

STA D_FLAG           ;специальный флаг для D

;проверка первого байта

LXI H, BUF           ;загружаем адрес буфера данных

MVI A, 44H           ;код символа ‘D’

ORA M                ;устанавливает флаг Z=1 если равенство

JZ F_KONTROL

MVI A, 46H           ;код символа ‘F’

ORA M                ;устанавливаем флаг Z=1 если равенство

JZ NO_MISTAKE1

MVI A, 4EH           ;код символа ‘N’

ORA M

JZ NO_MISTAKE1

LDA MIST1            ;если в первом байте содержится что-то иное, то

INR A                ;увеличиваем счетчик ошибок

CALL CRUSH           ;вызываем подпрограмму проверки переполнения

STA MIST1

JMP NO_MISTAKE1

D_CONTROL:

MOV A, 1

STA D_FLAG           ;=1, если первый байт равен D

NO_MISTAKE1:

;проверка второго байта