В разработанном контроллере в качестве микропроцессора используется 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:
;проверка второго байта
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.