Радио-86РК/Радио 06-89/Контроллер последовательного интерфейса/Таблица 3
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: А. ДОЛГИЙ Источник: http://retro.h1.ru/RK86/RS232/RS232p.asm |
;***** ПОДПРОГРАММЫ ОБСЛУЖИВАНИЯ КОНТРОЛЛЕРА *** ;***** ПОСЛЕДОВАТЕЛЬНОГО ИНТЕРФЕЙСА, ******* ; ***** ПОДКЛЮЧЕННОГО ЧЕРЕЗ КР580ИК55 *** ; *ASD* 18/06/88 ;АДРЕСА ПОРТОВ ИК55 (D14) PA55: EQU 0А000Н РВ55: EQU 0A001H РС55: EQU 0A002H СW55: EQU 0A003H ;Адреса, ВЫВОДИМЫЕ В ПОРТ В: NIL: EQU 70H RES51: EQU 0F0H ;СБРОС ВВ51 DAT51: EQU З0Н ;РЕГИСТР ДАННЫХ ВВ51 CW51: EQU 31H ;РЕГИСТР КОМАНД ВВ51 ; СТ0: EQU 50H ;СЧЕТЧИК 0 ВИ53 СТ1: EQU 51H ;СЧЕТЧИК 1 ВИ53 СТ2: EQU 52Н ;СЧЕТЧИК 2 ВИ53 CW53: EQU 53H ;РЕГИСТР КОМАНД ВИ53 ;НАЗНАЧЕНИЕ РАЗРЯДОВ ПОРТА С TXRD: EQU 1 ;ПЕРЕДАТЧИК ГОТОВ CTSN: EQU 2 ; ПЕРЕДАЧА НЕ РАЗРЕШЕНА DSRN: EQU 4 ;ДАННЫЕ НЕ ГОТОВЫ RXRD: EQU 20Н ;ПРИЕМНИК ГОТОВ ;***** УПРАВЛЯЮЩЕЕ СЛОВО ВИ53 ***** ; BCD: EQU 1 ;ДВ.-ДЕСЯТИЧНЫЙ СЧЕТ MODE0: EQU 0 ; MОDЕ1: EQU 2 MОDЕ2: EQU 4 ;ВЫБОР MODE3: EQU 6 ;РЕЖИМА MODE4: EQU 8 ; МОDЕ5: EQU 0АН ; ; ROF: EQU 0 ;ЧТЕНИЕ НА ЛЕТУ RLL: EQU 10H ;ЧТЕНИЕ/ЗАПИСЬ МЛ. БАЙТ RLH: EQU 20H ;ЧТЕНИЕ/ЗАПИСЬ СТ. БАЙТ' RLW: EQU 30Н ;ЧТЕНИЕ/ЗАПИСЬ СЛОВА SCO: EQU 0 ; SC1: EQU 40H ;ВЫБОР СЧЕТЧИКА SC2: EQU 80H ; ;*** ИНСТРУКЦИЯ РЕЖИМА ВВ51 ** Х1: EQU 1 ; Х16: EQU 2 ;МНОЖИТЕЛЬ СКОРОСТИ Х64: EQU 3 ; L5: EQU 0 ; L6: EQU 4 ;ДЛИНА ИНФОРМАЦИОННОГО L7: EQU 8 ;СЛОВА L8: EQU 0СН ; PEN: EQU 10H ;РАЗРЕШЕНИЕ КОНТРОЛЯ ЕР: EQU 20H ;КОНТРОЛЬ ЧЕТНОСТИ S1: EQU 40H ; S15: EQU 80H ;ДЛИНА СТОП-БИТА S2: EQU 0С0Н ; ;**+ ИНСТРУКЦИЯ КОМАНДЫ ВВ51 ++* ; TXEN: EQU 1 ;ПЕРЕДАТЧИК ВКЛЮЧЕН DTR: EQU 2 ;УСТРОЙСТВО ГОТОВО RXE: EQU 4 ;ПРИЕМНИК ВКЛЮЧЕН SBRK: EQU 8 ;ПРЕРЫВАНИЕ ПЕРЕДАЧИ ER: EQU 10Н ;СБРОС ОШИБОК ПРИЕМА RTS: EQU 20H ;ПЕРЕДАЧА РАЗРЕШЕНА IR: EQU 40H ;ПРОГР. СБРОС УСАПП EH: EQU 80H ;РАЗРЕШЕНИЕ ПОИСКА СИНХРОСИМВОЛА ; ;*** ПОДПРОГРАММА НАСТРОЙКИ КОНТРОЛЛЕРА****' ;СКОРОСТЬ И РЕЖИМ УСАПП ПО УМОЛЧАНИЮ ; KDIV: EQU 23 ; 4800 Б0Д (F0=1,78 МГГЦ) MI: EQU X16+L8+S2 INIT: LXI Н, KDIV MVI A, MI INIT1: PUSH PSW ;Настраиваем D14 (А - ввод/вывод. ; В - вывод, C[0:2]-ввод) MVI A, 0C1H STA CW55 ;НАСТРАИВАЕМ ТАЙМЕР MVI A, CW53 STA PB55 MVI A, SCO+RLW+MODE3 STA PA55 MVI А, СТО STA PB55 MOV A, L STA PA55 MOV А, Н STA PA55 ;УСТАНАВЛИВАЕМ УСАПП В ИСХ. СОСТОЯНИЕ MVI A, RES51 STA PB55 ;ЗАПИСЫВАЕМ ИНСТРУКЦИИ РЕЖИМА MVI A, CW51 STA PB55 POP PSW STA PA55 ;ОСТАНАВЛИВАЕМ ФЛАГ Z, ЕСЛИ ЗАДАНА РАБОТА С ТЕЛЕТАЙПОМ ANI 0FCH ;# CPI 80H ;# ;ЗАПИСЫВАЕМ ИНСТРУКЦИЮ КОМАНДЫ MVI A, TXEN+DTR+RXE+RTS STA PA55 MVI A, NIL STA PB55 RNZ ;# ;ЕСЛИ ЗАДАНА РАБОТА С ТЕЛЕТАЙПОМ ;ТО 5 РАЗ ПЕРЕДАЕМ КОД УСТАНОВКИ ;ЛАТИНСКОГО РЕГИСТРА LXI B, 51fH ;# LAT: CALL ТХ ;# DCR В ;# JNZ LAT ;# ;И ЗАПИСЫВАЕМ ПРИЗНАК ЛАТ. РЕГИСТРА MVI A, 20H ;# STA REG ;# RET ;*** ПОДПРОГРАММА ПЕРЕДАЧИ **� ;**** БАЙТА ИЗ РЕГИСТРА С **** ТХ: PUSH PSW ;ЖДЕМ ГОТОВНОСТИ ТХ1: LDA PC55 ANI TXRD+DSRN CPI TXRD JNZ TX1 ;ПЕРЕЯАЕМ БАЙТ MVI A, DAT51 STA РB55 MOV А, С STA PA55 POP PSW RET ; ;*** ПОДПРОГРАММА ПРИЕМА БАЙТА В АККУМУЛЯТОР **� RX: MVI А, DАТ51 STA PB55 ;ПРОВЕРЯЕМ ГОТОВНОСТЬ LDA РС55 ANI RXRD ;ВОЗВРАТ С СЛАГОМ ПЕРЕНОСА, ;ЕСЛИ ПРИЕМНИК НЕ ГОТОВ STC RZ ;ЧИТАЕМ ПРИНЯТЫЙ БАЙТ LDA PA55 CMC RET ;ЯЧЕЙКА ОЗУ ДЛЯ ХРАНЕНИЯ ПРИЗНАКА ;РЕГИСТРА ТЕЛЕТАЙПА: REG: EQU 7653Н ;АДРЕС НУЖНО УКАЗАТЬ ТОТ ЖЕ, ;ЧТО В TTYOUT.TTYIN END