Не секрет, что для подключения последовательного порта к таким компьютерам как Специалист, Радио-86РК, Микро-80 и т.п. нужно лезть в схему (иногда даже менять ее), выдумывать новые порты и т.д... Но есть вариант проще, думаю, что, еще проще не получится.
Итак. Практически в каждом компьютере есть порт на ВВ55 и им пользуются обычно только в одном режиме, так называемом Mode 0, когда порты настраиваются на запись или чтение, т.е. как регистры или буферы. Но есть еще два режима, которыми практически никто не пользуется - Mode 1 и Mode 2. Они очень похожи в работе, за исключением того, что в Mode 1 порты А и В используются отдельно на ввод или вывод, а порт С - управляющий, а в Mode 2 используется только порт А как двунаправленный, порт В - свободен, часть порта С занята управляющими сигналами. В кратце опишу работу в Mode 2.
В Mode 2 порт А настраивается, как уже сказал, в режим двунаправленной передачи и его выходы находятся в Z-состоянии. Порт В свободен и его можно использовать по своему усмотрению, например в Mode 0 на вывод или ввод. Порт С делится на две части:
РС0-2 - свободны для пользователя;
РС3 - INTR A, прерывание, может быть настроено на запись как во входной так и выходной регистр или их комбинацию;
РС4 - /STB, сигнал по которому происходит запись данных во входной регистр порта А внешним устройством, устанавливает флаг IBF в "1";
РС5 - IBF, флаг наличия данных во входном регистре порта А, устанавливается в "1" в момент записи данных из внешнего устройства в порт А и сбрасывается в момент считывания данных процессором;
РС6 - /ACK, сигнал по которому происходит считывание данных из выходного регистра порта А внешним устройством, сбрасывается флаг OBF в "1";
РС7 - /OBF, флаг наличия данных в выходном регистре порта А, устанавливается в "0" в момент записи данных процессором и сбрасывается в момент чтения данных внешним устройством.
Внешнее устройство контролирует состояние флагов непосредственно на выводах порта С, чтение же флагов и управление прерываниями процессором происходит из внутреннего регистра порта С, где D7- OBF, D6 - INTE1, D5 - /IBF, D4 - INTE2, D3 - INTR A.
Т.о. есть порт, который флагами может показывать наличие или отсутствие новых данных в регистрах порта А. Остается записывать или считывать данные из этого порта и передавать их каким-либо способом на РС. В качестве преобразователя параллельных данных в последовательные использован микроконтроллер Mega8, можно использовать и поменьше - программа занимает около 400 байт. Схема подключения к ВВ55:
Исходники для Меги:
https://drive.google.com/file/d/1i91...usp=drive_link
Фьюзы: L:0xE4, H:0xD9
Ну и примеры работы (порты ВВ55 занимают адреса от 010Н до 013Н):
Вывод слова "TEST"
Загрузка файла:Код:ORG 0 ;PORTA ;MODE 2 ;PORTB ;MODE 0 ;OUTPUT ;PC2-0 ;OUTPUT MVI A,0C0H OUT 013H LXI H,STR LOOP: IN 012H ;CHECK OBF ANI 080H JZ LOOP MOV A,M ORA A RZ OUT 010H INX H JMP LOOP STR: DB 'TEST',0 END
Код:ORG 0 ;HL=START ADDR ;DE=END ADDR ;PORTA ;MODE 2 ;PORTB ;MODE 0 ;OUTPUT ;PC2-0 ;OUTPUT MVI A,0C0H OUT 013H LOOP: IN 012H ;CHECK IBF ANI 020H JZ LOOP IN 010H MOV M,A INX H ;HL<>DE CALL 0C01BH JNZ LOOP RET END



Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
