Режим 0 – режим программной задержки;
Режим 1 – одновибраторный;
Режим 2 – режим генератора частоты;
Режим 3 – генератор прямоугольных импульсов;
Режим 4 – режим программного строба;
Режим 5 – режим аппаратного строба.
Аппаратно прерывания обслуживаются специализированными ИС, простейшими из которых являются блоки приоритетного прерывания (Intel 8214, К589ИК14 и др.). Эти блоки решают несложные задачи обработки нескольких векторных прерываний при фиксированных приоритетах запросов.
Более сложные задачи решаются программируемыми контроллерами прерываний (ПКП), в частности ИС Intel 8259А, К1810ВН59.
Эти контроллеры непосредственно реализуют прерывания с обработкой 8 запросов. С помощью нескольких ПКП легко организуются устройства обработки до 64 запросов. Контроллеры обеспечивают различные виды прерываний.
Система прерываний должна выдать команду перехода к той подпрограмме обслуживания, которая соответствует признанному запросу.
Контроллер ВН59 обеспечивает различные виды прерываний.
ПИТ: работает в режиме 0 – режим программной задержки.
После загрузки константы на линии OUT устанавливается логический 0. По каждому срезу CLK счетчик декрементируется. Когда на линии GATE 0 – счет останавливается. Когда на линии GATE 1 – счет продолжается до нуля. Когда CE достигнет нуля, на линии OUT устанавливается единица.
ПКП: работает в режиме строгой вложенности. Имеются 8 входов запроса прерывания IR7…IR0. Высший приоритет имеет вход IR0, низший – у входа IR7. Вложенность – возможность прерывания подпрограммы обслуживания запроса другой подпрограммой с более высоким приоритетом, которая, в свою очередь, также может быть прервана более приоритетной программой и т.д. Возможность вложенных прерываний обеспечивается введением команды EI в подпрограммы обслуживания прерываний. Прерывания с фиксированными приоритетами реализуются просто, но запросы неравноправные и при интенсивном поступлении запросов с высокими приоритетами запросы с низкими приоритетами могут вообще не получить обслуживания, т.е. возможно их «грубое оттеснение» более приоритетными запросами.
ПККД: Режимы работы дисплея:
1) 8-разрядный 8-символьный дисплей и ввод слева;
2) 8-разрядный 8-символьный дисплей и ввод справа со сдвигом.
Клавиатура работает в следующем режиме: кодированное сканирование клавиатуры с обнаружением 2-клавишных сцеплений.
0000 PIC EQU FCH
0000 PKKD EQU E4H
0000 PIT EQU E3H
0000 PIT0 EQU E0H
1940 ORG 1940H
1940 F3 DI ; запрет прерываний
1941 3E 16 MVI A,16H ; установка ПКП в режим строгой вложенности.
1943 D3 FC OUT PIC ; ПКП - один. таблица прерываний с адреса 1900h
1945 3E 00 MVI A,00H ;
1947 D3 FD OUT PIC+1 ;
1949 3E FD MVI A,FDH ; маска на прерывания 2-7
194B D3 FD OUT PIC+1 ;
194D 3E 20 LEFT: MVI A,20H ; снимаем запрос на прерывание (EOI 000)
194F D3 FC OUT PIC ;
1951 3E 00 MVI A,00H ; переводим ПККД в режим 8 знаков, вывод слева
1953 D3 E5 OUT PKKD+1 ;
1955 FB PRE: EI ; разрешаем прерывания
1956 1E 09 COUNT: MVI E,09H ; счетчик отображаемых цифр
1958 0E FF M2: MVI C,FFH ; С - признак отработавшиго прерывания, FF-не отработало
195A CD 9D 19 CALL DISP ; отображаем регистр E
195D CD 85 19 CALL SEC ; задержка на 1 с
1960 79 M1: MOV A,C ; проверка признака отраб. прерывания, F5 - отработало
1961 FE F5 CPI F5H ;
1963 C2 60 19 JNZ M1 ; ожидание (работает таймер)
1966 1D DCR E ; уменьшаем счетчик отображаемых цифр
1967 C2 58 19 JNZ M2 ; повторяем вывод
196A C3 56 19 JMP COUNT ; зацикливаем
196D 3E 20 RIGHT: MVI A,20H ; снимаем запрос на прерывание (EOI 000)
196F D3 FC OUT PIC ;
1971 3E 10 MVI A,10H ; переводим ПККД в режим 8 знаков, вывод справа
1973 D3 E5 OUT PKKD+1 ;
1975 C3 55 19 JMP PRE ; переход к отображению
1978 F5 TIME: PUSH PSW ; сохраняем состояние системы
1979 3E 30 MVI A,30H ; канал 0 режим 0 константа FFFFh, режим шестнадцати197B D3 E3 OUT PIT ; ричный
197D 3E FF MVI A,FFH ;
197F D3 E0 OUT PIT0 ; это около 0.03 с
1981 D3 E0 OUT PIT0 ;
1983 F1 POP PSW ; восстанавливаем состояние
1984 C9 RET ; возврат
1985 F5 SEC: PUSH PSW ; сохраняем состояние системы
1986 3E 64 MVI A,64H ; повтор около 100 раз для увеличения задержки
1988 CD 78 19 T1: CALL TIME ;
198B 3D DCR A ; это около 1 с
198C C2 88 19 JNZ T1 ;
198F F1 POP PSW ; восстанавливаем состояние
1990 C9 RET ; возврат
1991 F5 SEC15: PUSH PSW ; сохраняем состояние
1992 3E 0F MVI A,0FH ; 15 раз повторяем односекундную задержку
1994 CD 78 19 T2: CALL TIME ;
1997 3D DCR A ; это около 15с
1998 C2 94 19 JNZ T2 ;
199B F1 POP PSW ; востанавливаем сотояние
199C C9 RET ; возврат
199D 21 79 0E DISP: LXI H,0E79H; получение кода цифры из таблицы
19A0 16 00 MVI D,00H ; перекодировки и выжача на дисплей
19A2 19 DAD D ;
19A3 7E MOV A,M ;
19A4 E6 0F ANI 0FH ;
19A6 D3 E4 OUT PKKD ;
19A8 C9 RET ;
1900 ORG 1900H ; обработчик прерывания от ПККД
1900 F3 INT_K: DI ; запрет прерываний
1901 C3 10 19 JMP KLAVA ; переход к обслуживающей части
1904 ORG 1904H ; обработчик прерывания от таймера
1904 F3 INT_T: DI ; запрет прерываний
1905 0E F5 MVI C,F5H ; заносим с С - признак окончания прерывания F5h
1907 3E 21 MVI A,21H ; снимаем запрос на прерывание (EOI 001)
1909 D3 FC OUT PIC ;
190B C9 RET ; возврат
1910 ORG 1910H
1910 DB E4 KLAVA: IN PKKD ; читаем слово состояния ПККД
1912 5F MOV E,A ; сохраняем его
1913 E6 01 ANI 01H ; проверяем: первый ли столбец клавиш?
1915 FE 01 CPI 01H ;
1917 C2 1D 19 JNZ STLB2 ; если нет - возможно второй
191A C3 6D 19 STLB1: JMP RIGHT ; если да - смена направления отображения
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.