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

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

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

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

Источник: 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