используется для вывода информации на пульт оператора:
порт А – для вывода N1 (РИ1);
порт В – для вывода значения Y4 (РИ4);
порт С – для вывода X1-X4 (РИ2) и Y1-Y3 (РИ3).
ППА-3:
порт А – для ввода 8-разрядного кода уставки К, поступающего с тумблерного регистра пульта управления;
порт С – для ввода сигнала останова (младшая тетрада, одна линия) и запуска генератора аварийной световой сигнализации (старшая тетрада, одна линия).
Для выполнения различных временных функций в МПС используются два программируемых интервальных таймера КР580ВИ53.
Первый программируемый интервальный таймер КР580ВИ53 в данной системе решает задачу генерирования точных временных интервалов для вывода управляющих сигналов Y1-Y3 заданной длительности под программным контролем. В состав БИС входят три 16-разрядных вычитающих счетчика с частотой по входу CLK 2 МГц, каждый из которых программно настраивается и работает независимо от других.
Второй таймер используется для выработки сигналов тактирования приемника и передатчика ПСА, а также сигнала Y5.
Запросы на прерывание обслуживаются при помощи программируемого контроллера прерываний (ПКП) КР580ВН59. Возникающие прерывания вызывают соответствующие подпрограммы их обработки в соответствии с таблицей прерываний. Система обслуживает следующие четыре прерывания:
IRQ0 - запрос на прерывание по сигналу отказа источника питания;
IRQ1 - запрос на прерывание по сигналу аварийного датчика;
IRQ2 - запрос на прерывание от терминала внешней ЭВМ;
IRQ3 - запрос на прерывание от пульта управления .
Запрос на прерывание IRQ2 осуществляется при выработке сигнала RxRDY ПСА, сигнализирующего о приеме информации с внешней ЭВМ.
В соответствии с заданием в программах МПС обращение к регистрам периферийных БИС производится по командам ввода/вывода (IN/OUT). Карта портов устройств ввода-вывода отражена в таблице 4.
Таблица 4. Карта портов устройств ввода.-вывода
Порт |
Устройство |
E0h – E3h |
Периферийный параллельный адаптер 1 КР580ВВ55А |
E4h – E7h |
Периферийный параллельный адаптер 2 КР580ВВ55А |
E8h – E9h |
Программируемый связной адаптер КР580ВВ51А |
ECh – EFh |
Программируемый интервальный таймер 1 КР580ВИ53 |
F0h – F3h |
Программируемый интервальный таймер 2 КР580ВИ53 |
F4h – F5h |
Контроллер приоритетов прерываний КР580ВН59 |
F6h – F9h |
Периферийный параллельный адаптер 3 КР580ВВ55А |
Дешифрацию адресов устройств ввода-вывода будем производить по линиям шины адреса ADR4, АDR3 и АDR2. При этом необходимо учитывать, что обращение к микросхеме должно проиcxодить при надлежащей комбинации сигналов на адресных линиях и активных сигналах I/O R или I/O W, ADR15=1. Дешифрация будет происходить согласно таблице 5. Схема подключения дешифратора адресов устройств ввода-вывода изображена на рисунке 8.
Для дешифрации адресов будет использована микросхема дешифратора К155ИД7.
Таблица 5. Дешифрация устройств ввода-вывода
Входы микросхемы К155ИД7 |
Выбранная микросхема |
|||||
A0 (ADR4) |
A1 (ADR3) |
A2 (ADR2) |
__ E1 _____ ______ (MEMRÚMEMW) |
__ E2 |
E3 (ADR15) |
|
0 |
0 |
0 |
0 |
0 |
1 |
ППА-1 |
0 |
0 |
1 |
0 |
0 |
1 |
ППА-2 |
0 |
1 |
0 |
0 |
0 |
1 |
ПСА |
0 |
1 |
1 |
0 |
0 |
1 |
ПИТ-1 |
1 |
0 |
0 |
0 |
0 |
1 |
ПИТ-2 |
1 |
0 |
1 |
0 |
0 |
1 |
ПКП |
1 |
1 |
0 |
0 |
0 |
1 |
ППА-3 |
Рисунок 8. Схема подключения дешифратора устройств ввода-вывода
Принципиальная схема подсистемы ввода-вывода изображена на рисунке 9. Здесь входные разъемы ХТ1 соответствуют выходным разъемам блока центрального процессора, разъемы ХТ2,XT3 – соответствуют входам пульта управления (цифровые значения Х1-Х4, аналоговые сигналы V1-V3, разряды кода уставки К0 – К7 (Р5)),ХТ4 – разъемы канала связи с внешней ЭВМ, ХТ5 – выходы на три регистра пульта управления для вывода разрядов сигналов N1 (РИ1) и Y4 (РИ4) , битов Y1-Y3 (РИ3), Х1-Х4 (РИ2). Выходные разъемы ХТ6 – для вывода сигналов управления на ОУ (Y1-Y3, V4, Y5). ХТ7 – разъемы соответствующих прерываний. Выходные разъемы ХТ8 предусмотрены для выработки сигналов готовности последовательного канала DTR и RTS и для анализа сигналов готовности терминала к связи DSR, CTS.
.
Спецификация выполнена в таблице 6.
Таблица 6. Спецификация подсистемы ввода-вывода
Обозначение |
Тип |
Кол-во |
Примечание |
Резисторы |
|||
R3 |
МЛТ-0,25-430Ом ±10% |
1 |
|
R1,R2,R4 |
МЛТ-0,25-1кОм ±10% |
3 |
|
Конденсаторы |
|||
C1 |
К10-17-1Б-М47-20пФ |
1 |
|
C2 |
К10-7В-0,47мкФ±10% |
1 |
|
C3 |
К50-6 20мкФ ±20% |
1 |
|
Микросхемы |
|||
DD1,DD6,DD13 |
КР580ВВ55А |
3 |
ППА |
DD2 |
К1108ПА1А |
1 |
ЦАП |
DD3 |
К140УД23 |
1 |
ОУ |
DD4,DD8 |
КР580ВИ53 |
2 |
ПИТ |
DD5 |
КР580ВВ51А |
1 |
ПСА |
DD7 |
К155ИД7 |
1 |
Дешифратор |
DD9 |
КР580ВН59 |
1 |
ПКП |
DD10 |
КР564ПУ6 |
1 |
Преобр. уровня |
DD11 |
КР590КН6 |
1 |
Коммутатор |
DD12 |
К1108ПВ1 |
1 |
АЦП |
DD14,DD16 |
К155ЛИ1 |
1 |
4 элемента 2-И |
DD15 |
К155ЛН1 |
1 |
6 элементов НЕ |
Рисунок 9.Схема подсистемы ввода-вывода
Адрес Код Метка Мнемокод Комментарий
E0 PPI1
E4 PPP2
E8 PCI
EC PIT1
F0 PIT2
F4 PIC
F8 PPI3
0000 F3 INIT: DI ; запрет прерываний
0001 31 00 0C LXI SP,0C00H ; инициализация стека
0004 3E 98 MVI A,10011000B ; ППА1:А-ввод,В-вывод(0реж.)
0006 D3 E3 OUT PPI1+3 ; СL-ввод,СН-вывод
0008 3E 80 MVI A,10000000B ; ППА2:А,В,С-вывод в режиме 0
000A D3 E7 OUT PPI2+3 ;
000C 3E 98 MVI A,10011000B ; ППА3:А-ввод(0реж),CL-ввод,
000E D3 FB OUT PPI3+3 ; СН-вывод
0010 3E 9E MVI A,10011110B ; ПСА:MI-асинхр.реж.,1:16,
0012 D3 E9 OUT PCI+1 ; стоп-бит 1,5,слово 8 бит
0014 3E 05 MVI A,00000101B ; CI-разрешение передачи и 0016 D3 E9 OUT PCI+1 ; приема
0018 3E 16 MVI A,00010110b ; ПКП:ICW1-4 байтный формат
001A D3 F4 OUT PIC ; адреса
001C 3E 10 MVI A,10H ; OSW1-разрешение первых
001E D3 F5 OUT PIC+1 ; 4-хпрерываний
;
0020 3E 56 MVI A,01010110B ; канал 1 ПИТ2 в режим 3
0022 D3 F3 OUT PIT2+3 ;
0024 3E 38 MVI A,38H ; константа 60
0026 D3 F1 OUT PIT2+1 ;
;Ввод и обработка цифровой информации
0028 DB E2 MAIN: IN PPI1+2 ; чтение порта С ППА1
002A E6 0F ANI 00001111B ; выделение значений Х1-Х4
002C D3 E6 OUT PPI2+2 ;
002E 32 00 08 STA 0800H ; сохранение Х1-Х4 в ОЗУ
0031 47 MOV B,A ; вычисление функции
0032 2F CMA ; Х1×Х2ÚХ3×Х4
0033 4F MOV C,A ;
0034 17 RAL ;
0035 A1 ANA C ;
0036 4F MOV C,A ;
0037 78 MOV A,B ;
0038 17 RAL ;
0039 A0 ANA B ;
003A 17 RAL ;
003B 17 RAL ;
003C B1 ORA С ;
003D 17 RAL ;
003E E6 10 ANI 10H ; выделение в 4-м бите У1
0040 32 01 08 STA 0801H ; сохранение У1 в ОЗУ
0043 C2 52 00 JNZ INF_AN ; если У1=0,то переход
0046 3E 30 OUT_Y1: MVI A,00110000B ; ПИТ1:0-й канал в режиме 0
0048 D3 EF OUT PIT1+3 ; константа 400
004A 3E 90 MVI A,90H ;
004C D3 EC OUT PIT1 ;
004E 3E 01 MVI A,01H ;
0050 D3 EC OUT PIT1 ;
;Ввод и обработка аналоговой информации
0052 3E 00 INF_AN: MVI A,00000000B ; коммутация V1
0054 CD C3 00 CALL OBRAB ; аналогово-цифровое
; преобразование
0057 32 02 08 STA 0802H ; сохранение N1 в ОЗУ
005A 47 MOV B,A ; сохранение N1 в регистре В
005B 3E 20 MVI A,00100000B ; коммутация V2
005D CD C3 00 CALL OBRAB ;
0060 4F MOV C,A ; сохранение N2 в регистре С
0061 DB F8 IN PPI3 ; чтение кода К с пульта
; оператора
0063 80 ADD B ; К+N1
0064 DA 72 00 JC OUT_Y3 ; если переполнение,то N>Q
0067 81 ADD C ; K+N1+N2
0068 DA 72 00 JC OUT_Y3 ; если переполнение,то N>Q
006B 21 00 06 LXI H,0600H ; чтение из ПЗУ Q
006E BE CMP M ;
006F DA 7F 00 JC OUT_Y2 ; если переполнение,то N<Q
0072 3E D0 OUT_Y3: MVI A,11010000B ; ПИТ1:канал 3,0режим
0074 D3 EF OUT PIT1+3 ;
0076 3E 28 MVI A,28H ; константа 40
0078 D3 EE OUT PIT1+2 ;
007A 3E 40 MVI A,01000000B ; сохранение У3,У2 в ОЗУ
007C 32 03 0B STA 0B03H ; в виде 0У3У200000
007F 3E 90 OUT_Y2: MVI A,10010000B ; ПИТ1:канал 2,0режим
0081 D3 EF OUT PIT1+3 ;
0083 3E 28 MVI A,28H ; константа 40
0085 D3 ED OUT PIT1+1 ;
0087 3E 20 MVI A,00100000B ; сохранение У3,У2 в ОЗУ
0089 32 03 08 STA 0803H ; в виде 0У3У200000
008C 3E 30 OUT_Y4: MVI A,00110000B ; коммутация V3
008E CD C3 00 CALL OBRAB ;
0091 4F MOV C,A ; сохранение N3 в регистре С
0092 3A 01 06 LDA 0601H ; чтение а1 из ПЗУ
0095 47 MOV B,A ; сохранение а1 в регистре В
0096 CD A9 01 CALL MULT ; а1×N3
0099 7C MOV A,H ;
009A 21 02 06 LXI H,0602H ;
009D 86 ADD M ; а0+а1×N3
009E 47 MOV B,A ; сохранение У4 в регистре В
009F 32 04 08 STA 0804H ; сохранение У4 в ОЗУ
00A2 D3 E1 OUT PPI1+1 ; вывод У4 в порт В ППА1(ЦАП)
00A4 3A 02 08 PULT: LDA 0802H ; индикация N1 на РИ1
00A7 D3 E4 OUT PPI2 ;
00A9 3A 04 08 LDA 0804H ; индикация У4 на РИ4
00AC D3 E5 OUT PPI2+1 ;
00AE 3A 00 08 LDA 0800H ;
00B1 21 03 08 LXI H,0803H ;
00B4 86 ADD M ;
00B5 21 03 08 LXI H,0803H ; индикация Х1-Х4 и У1-У3 на
00B8 86 ADD M ; РИ2 и РИ3 в виде
00B9 D3 E6 OUT PPI2+2 ; 0 У3 У2 У1 Х4 Х3 Х2 Х1
;
00BB DB FA IN PPI3+2 ; проверка останова
00BD E6 01 ANI 01H ;
00BF CA 28 00 JZ MAIN ; зацикливание
00C2 76 HLT ; останов
;аналогово-цифровое преобразование
00C3 D3 E2 OBRAB: OUT PPI1+2 ;
00C5 3E 20 MVI A,00100000B ; запуск АЦП
00C7 D3 E2 OUT PPI1+2 ;
00C9 DB E0 IN PPI1 ; сохранение кода в
00CB C9 RET ; аккумуляторе
;таблица векторов прерываний
0100 ORG 0100H ;
0100 C3 0F 01 JMP IRQ0 ;
0103 00 DB 00H ;
0104 C3 2B 01 JMP IRQ1 ;
0107 00 DB 00H ;
0108 C3 3A 01 JMP IRQ2 ;
010B 00 DB 00H ;
010C C3 6D 01 JMP IRQ3 ;
010F DB E9 IRQ0: IN PCI+1 ; проверка готовности
0111 1F RAR ; передатчика:С=1,если
0112 D2 19 01 JNC OUT_Y5 ; TxRDY=1,то
0115 3E 21 MVI A,'!' ; вывод ‘!’
0117 D3 E8 OUT PCI ;
0119 3E 16 OUT_Y5: MVI A,00010110B ; ПИТ2:0 канал в 3-й режим
011B D3 F3 OUT PIT2+3 ;
011D 3E 78 MVI A,78H ; константа 60
011F D3 F0 OUT PIT2 ;
0121 06 09 MVI B,09H ;
0123 05 MEANDR: DCR B ; програмная остановка таймера
0124 00 NOP ; через 90 мкс
0125 C2 23 01 JNZ MEANDR ;
0128 3E 12 MVI A,00010010B ;
012A 76 HLT ; останов
012B 3E 80 IRQ1: MVI A,80H ; запуск световой сигнализации
012D D3 E2 OUT PPI1+2 ;
012F 3A 02 08 LDA 0802H ; вывод на РИ1 значение N1
0132 D3 E4 OUT PPI2 ;
0134 3A 00 08 LDA 0800H ;
0137 D3 E6 OUT PPI2+2 ; вывод сигналов Х1-Х4
0139 76 HLT ; останов
013A F5 IRQ2: PUSH PSW ; сохранение аккумулятора и
; флагов в стеке
013B DB E9 IN PCI+1 ; чтение слова состояния
013D E6 00 ANI 00011000H ; проверка ошибки кадра и
013F C2 A2 01 JNZ REPEAT ; переполнения
0142 DB E8 IN PCI ; чтение пришедшего символа
0144 F5 PUSH PSW ; сохранение его в стеке
0145 FE 44 CPI 'D' ; сравнение символа с ‘D’
0147 C2 55 01 JNZ GO_A ; если нет,топереход
014A DB E9 READY1: IN PCI+1 ; проверка готовности
014C 1F RAR ; передатчика:C=1,если TxRDY=1
014D D2 4A 01 JNC READY1 ;
0150 3A 01 08 LDA 0801H ; выдача значения У1
0153 D3 E8 OUT PCI ;
0155 F1 GO_A: POP PSW ; восстановление принятого
0156 FE 41 CPI 'A' ; символа
0158 C2 66 01 JNZ GO_OUT ; если не ‘A’,то переход
015B DB E9 READY2: IN PCI+1 ; проверка готовности
015D 1F RAR ; передатчика:C=1,если TxRDY=1
015E D2 5B 01 JNC READY2 ;
0161 3A 04 08 LDA 0804H ; выдача значения У4
0164 D3 E8 OUT PCI ;
0166 3E 20 GO_OUT: MVI A,20H ; завершение прерывания и
0168 D3 F4 OUT PIC ; возврат
016A FB EI ;
016B F1 POP PSW ;
016C C9 RET ;
016D F5 IRQ3: PUSH PSW ; сохранение аккумулятора, 016E C5 PUSH B ; флагов,рег.пары ВС в стеке
016F 3A 00 08 LDA 0800H ; чтение Х1-Х4 из ОЗУ
0172 47 MOV B,A ;
0173 1F RAR ;
0174 B0 ORA B ;
0175 1F RAR ;
0176 B0 ORA B ;
0177 1F RAR ;
0178 B0 ORA B ; f1=Х1ÚХ2ÚХ3ÚХ4
0179 E6 01 ANI 01H ; результат в 0-м бите
017B 4F MOV C,A ;
017C 78 MOV A,B ;
017D 1F RAR ;
017E A0 ANA B ;
017F 1F RAR ;
0180 A0 ANA B ;
0181 1F RAR ;
0182 A0 ANA B ;
0183 17 RAL ; f2=Х1×Х2×Х3×Х4
0184 E6 02 ANI 02H ; результат в 1-м бите
0186 B1 ORA C ;
0187 3A 03 08 LDA 0803H ; чтение У3
018A 1F RAR ; и сдвиг на 2-й бит
018B 1F RAR ;
018C 1F RAR ;
018D 1F RAR ;
018E B1 ORA C ;
018F 3A 01 08 LDA 0801H ; чтение У1
0192 1F RAR ; сдвиг на 3-й бит
0193 B1 ORA C ; вывод в РИ1 в виде
0194 D3 E4 OUT PPI2 ; 0 0 0 0 У1 У3 f2 f1
0196 3A 00 06 LDA 0600H ; чтение из ПЗУ Q
0199 D3 E5 OUT PPI2+1 ; вывод в РИ4
019B 3E 20 MVI A,20H ; завершение прерывания и
019D D3 F4 OUT PIC ; возврат
019F C1 POP B ;
01A0 F1 POP PSW ;
01A1 C9 RET ;
01A2 3E 52 REPEAT: MVI A,'R' ; вывод в последовательный
01A4 D3 E8 OUT PCI ; канал связи символа
01A6 C3 66 01 JMP GO_OUT ; повтора передачи
;
01A9-01D9 MULT: ; подпрограмма умножения
;константы ПЗУ ;
0600 ORG 0600H ;
0600 1B DB 1BH ;Q
0601 85 DB 85H ;a1
0602 65 DB 65H ;a0
;данные ОЗУ
0800 00 DB 00H ;Х1-Х4
0801 00 DB 00H ;У1
0802 00 DB 00H ;N1
0803 00 DB 00H ;Y2,Y3
0804 00 DB 00H ;Y4
Затраты памяти. Для реализации заданного алгоритма требуется:
- ПЗУ емкостью 476 байт (программа вместе с подпрограммами: 457 байт, таблица векторов прерываний: 16 байт, константы: 3 байта);
- ОЗУ емкостью 9 байт (переменные – 5 байт, стек – 4 байта).
Затраты времени программы. При условии, что в течение выполнения программы не будут происходить прерывания, время выполнения одного цикла программы составляет 203*1,75=356мкс, где 203 байт – длина основного цикла программы, 1.75 мкс –средняя длительность выполнения одного байта программы (3,5 такта).
Оценка аппаратурных затрат производится по количеству условных корпусов. За единицу сложности аппаратурных затрат принимается один 16-выводной корпус. Если корпус имеет большее число выводов, то его сложность берётся в соответствии с таблице 7.
Таблица 7. Сложности корпусов микросхем
Число выводов в корпусе |
16 |
18 |
20 |
24 |
28 |
40 |
48 |
Коэффициент перевода |
1 |
1,2 |
1,4 |
2,8 |
3,2 |
4,5 |
7,5 |
Рассчитанное число аппаратурных затрат содержится в таблица
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.