Радио-86РК/Радио 06-89/Контроллер последовательного интерфейса/Таблица 4

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: А. ДОЛГИЙ

Источник: http://retro.h1.ru/RK86/RS232/RS232s.asm

;
;*** ПОДПРОГРАММЫ ОБСЛУЖИВАНИЯ КОНТРОЛЛЕРА *'
;******* ПОСЛЕДОВАТЕЛЬНОГО ИНТЕРФЕЙСА, *****1
;******** ПОДКЛЮЧЕННОГО К СИСТ. ШИНАМ *****
;	*ASD* 18/06/88
;АДРЕСА РЕГИСТРОВ УСАПП И ТАЙМЕРА:
DAT51: 	EQU 	0А800Н      	;РЕГИСТР ДАННЫХ ВВ51 
CW51:  	EQU 	0А801Н      	;РЕГИСТР КОМАНД ВВ51
СТ0:    	EQU 	0А400Н      	;СЧЕТЧИК 0 ВИ53 
СТ1:    	EQU	0А401Н      	;СЧЕТЧИК 1 ВИ53 
CT2:    	EQU 	0A40ZH      	; СЧЕТЧИК 2 ВИ53 
CW53:   	EQU 	0А403Н      	;РЕГИСТР КОМАНД ВИ53
;+++ УПРАВЛЯЮЩЕЕ СЛОВО ВИ53 +++ 
BCD:    	EQU 	1    	; ДВ. -ДЕСЯТИЧНЫЙ СЧЕТ
MODE0:   	EQU 	0
МОDЕ1:   	EQU 	2
MODE2:   	EQU 	4    	;ВЫБОР
MODE3:   	EQU 	6    	;РЕЖИМА
MODE4:   	EQU 	8
MODE5:   	EQU 	0AH
;
ROF:     	EQU 	0    	;ЧТЕНИЕ НА ЛЕТУ 
RLL:     	EQU 	10Н 	;ЧТЕНИЕ/ЗАПИСЬ МЛ. БАЙТА 
RLH:    	EQU 	20Н 	;ЧТЕНИЕ/ЗАПИСЬ СТ. БАЙТА 
RLW:     	EQU 	30Н 	;ЧТЕНИЕ/ЗАПИСЬ СЛОВА
SCO:     	EQU 	0
SC1:     	EQU 	40H 	;ВЫБОР СЧЕТЧИКА
SC2:     	EQU 	80H
;
;+++ ИНСТРУКЦИЯ РЕЖИМА ВВ51 +++
X1:     	EQU 	1
Х16:    	EQU 	2    	;МНОЖИТЕЛЬ СКОРОСТИ
Х64:    	EQU 	3
L5:    	EQU	0
L6:     	EQU 	4    	;ДЛИНА ИНФОРМАЦИОННОГО 
L7:     	EQU 	8    	;СЛОВА 
L8:     	EQU 	0CH
PEN:    	EQU 	10Н 	;РАЗРЕШЕНИЕ КОНТРОЛЯ 
ЕР:     	EQU 	20Н 	;КОНТРОЛЬ ЧЕТНОСТИ
S1:     	EQU 	40H
S15    	EQU 	80H 	;ДЛИНА СТОП-БИТА 
S2:     	EQU 	0C0H
;+++ ИНСТРУКЦИЯ КОНАНДЫ ВВ51 +++
TXEN:   	EQU 	1   	;ПЕРЕДАТЧИК ВКЛЮЧЕН 
DTR:    	EQU 	2   	;УСТРОЙСТВО ГОТОВО 
RXE:    	EQU 	4   	;ПРИЕМНИК ВКЛЮЧЕН 
SBRK:   	EQU 	8   	;ПРЕРЫВАНИЕ ПЕРЕДАЧИ 
ER:     	EQU 	10Н 	;СБРОС ОШИБОК ПРИЕМА 
RTS:    	EQU 	20Н 	;ПЕРЕДАЧА РАЗРЕШЕНА 
IR:     	EQU 	40H 	;ПРОГР. СБРОС УСАПП 
ЕН:     	EQU 	80H 	; РАЗРЕШЕНИЕ ПОИСКА ; СИНХРОСИМВОЛА
;**** РЕГИСТР СОСТОЯНИЯ ВB51 ****
TXRDY: 	EQU 	1    	;ПЕРЕДАТЧИК ГОТОВ 
RXRDY: 	EQU 	2    	;ПРИЕМНИК ГОТОВ 
ТХЕ:    	EQU 	4    	;ПЕРЕДАЧА ЗАКОНЧЕНА 
РЕ:     	EQU 	8    	;ОШИБКА ЧЕТНОСТИ 
ОЕ:     	EQU 	10Н 	;ПЕРЕПОЛНЕНИЕ ПРИЕМНИКА 
FE:     	EQU 	20Н 	;ОШИБКА ФОРМАТА 
SYNDET: 	EQU 	40H 	;СИНХРОСИМВОЛ НАЙДЕН 
DSR:    	EQU 	80H 	;ПЕРЕДАТЧИК ДАННЫХ ГОТОВ
;*** ПОДПРОГРАММА НАСТРОЙКИ КОНТРОЛЛЕРА **** 
;СКОРОСТЬ И РЕЖИМ УСАПП ПО УМОЛЧАНИЮ
KDIV:   	EQU 	23 	;4800 Бод (F0=1,78 МГГЦ)
MI:     	EQU 	X16+L8+S2 ;
INIT:   	LXI 	Н, KDIV
	MVI 	A, MI 
INIT1: 	PUSH 	PSW 	
;НАСТРАИВАЕМ ТАЙМЕР
	MVI 	A, SCO+RLW+MODE3
	STA 	CW53
	MOV 	A, L
	STA 	СТО
	MOV 	А, И
	STA 	СТО
;УСТАНАВЛИВАЕМ УСАПП В ИСХ. СОСТОЯНИЕ
	MVI 	А, 1
	STA 	CW51
	STA 	CW51
	MVI 	A, IR
	STA 	CW51 
; ЗАПИСЫВАЕМ ИНСТРУКЦИЮ РЕЖИМА
	POP 	PSW
	STA 	CW51
; УСТАНАВЛИВАЕМ ФЛАГZ, ЕСЛИ ЗАДАНА 
;РАБОТА С ТЕЛЕТАЙПОМ
	ANI 	0FCH               	;#
	CPI 	80Н                	;#
; ЗАПИСЫВАЕМ ИНСТРУКЦИЮ КОМАНДЫ
	MVI 	A, TXEN+DTR+RXE+RTS
	STA 	CW51
	RNZ                     	;# 
;ЕСЛИ ЗАДАНА РАБОТА С ТЕЛЕТАЙПОМ, 
;ТО 5 РАЗ ПЕРЕДАЕМ КОД УСТАНОВКИ 
; ЛАТИНСКОГО РЕГИСТРА
	LXI 	B, 51FH              	;#
LAT:    	CALL 	TX                 	;#
	DCR 	В                  	;#
	JNZ 	LAT                 	;# 
;И ЗАПИСЫВАЕМ ПРИЗНАК ЛАТ. РЕГИСТРА
	MVI 	А, 20H              	;#
	STA 	REG                	;#
	RET
;*** ПОДПРОГРАММА ПЕРЕДАЧИ *** 
;***... БАЙТА ИЗ РЕГИСТРА С ***
TX:     	PUSH 	PSW 	
;ЖДЕМ ГОТОВНОСТИ 
ТХ1:    	LDA 	CW51
	ANI 	TXRDY+DSR
	CPI 	TXRDY+DSR
	JNZ 	ТХ1 
;ПЕРЕДАЕМ БАЙТ
	MOV 	А, С
	STA 	DAT51
	POP 	PSW
	RET
;*** ПОДПРОГРAMMA ПРИЕМА БАЙТА В АККУМУЛЯТОР ��*
PX:
;ПРОВЕРЯЕМ ГОТОВНОСТЬ 
	LDA 	CW51 
	ANI 	RXRRY
;ВОЗВРАТ С ФЛАГОМ ПЕРЕНОСА, 
;ЕСЛИ ПРИЕМНИК НЕ  ГОТОВ 
	STC 	RZ
;ЧИТАЕМ ПРИНЯТЫЙ БАЙТ 
	LDA 	DAT51 
	CMC 
	RET 	
;
;ЯЧЕЙКА ОЗУ ДЛЯ ХРАНЕНИЯ ПРИЗНАКА 
;РЕГИСТРА ТЕЛЕТАЙПА:
;
REG:    	EQU 	7653H 	;АДРЕС НУЖНО УКАЗАТЬ ТОТ ЖE, 
			;ЧТО В TTYOUT, TTYIN
	END
;*** ПОДПРОГРАММЫ РАБОТЫ С ТЕЛЕТАЙПОМ
;	*ASD* 01/07/88
;ИСПОЛЬЗУЮТ ПОДПРОГРАММЫ ТХ,PХ. 
;В ПОДПРОГРАММЕ INIT ЗАДАТЬ ИНСТРУКЦИИ
;РЕЖИМА 82H ИЛИ 83Н
;ЯЧЕЙКА ОЗУ ДЛЯ ХРАНЕНИЯ ПРИЗНАКА 
;РЕГИСТРА ТЕЛЕТАЙПА:
REG:    	EQU 	7653H   	;ДЛЯ ОЗУ 32K