Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) ( 47 ) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (47)

налов DSR(D7), SYNDET(D6), TxE(D2), RxRDY(Di) и TxRDY(Do) слово состояния содержит следующие три бита, или флажка, ошибок, формируемых в процессе приема данных:

D5(FE - ошибка кадра) устанавливается в асинхр;;-ном режиме, если в конце любого символа не с5:;спу: стоповый. бит.

D4(0E - ошибка переполнения) устанавливасl любом режиме, когда процессор вовремя не считс: с; :.:вол (этот символ теряется).

Оз(РЕ - ошибка паритета) устанавливается при обнаружении в принятом символе нарушения паритета.

Все флажки ошибок сбрасываются, когда бит D4 слова приказа установлен в единицу. Следует специально подчеркнуть, что возникновение любого ошибочного условия не останавливает работу адаптера.

Остановимся несколько подробнее на работе прибора в обоих режимах. В асинхронном режиме, когда процессор загружает (Символ, адаптер автоматически вводит стартовый бит, заданное число стоповых бит и бит паритета, если он запрограммирован. Затем символ в последовательном формате выводится на контакт TxD. Битовые посылки выдвигаются по спаду сигнала ТхС со скоростью, определенной множителем 1, 16 или 64 в слове режима. До тех пор пока в адаптер не загружен символ, на выходе TxD действует высокий уровень, если не был установлен бит D3 слова приказа.

При приеме нормально на входе RxD действует высокий уровень. Спад считается началом стартового бита. Достоверность его проверяется повторным опросом (стробированием) сигнала RxD в центре битовой посылки. Если здесь снова фиксируется низкий уровень, то посылка считается достоверным стартовым битом и в адаптере запускается специальный счетчик, обеспечивающий опрос сигнала на линии RxD в центрах битовых посылок. Когда же второй опрос линии RxD фиксирует высокий уровень, это означает появление на линии связи импульса помехи либо разрешение приема данных в середине символа. В любом случае приемник прекращает свои действия и готовится к восприятию нового символа.

При обнаружении ошибки паритета или низкого уровня на месте стопового бита устанавливаются соответствующие флажки ошибок. После приема всего символа он загружается в параллельный буфер и формируется высокий уровень сигнала RxRDY готовности приемника. Если процес-



сор не считал из буфера предыдущий символ, он замещается принятым символом и устанавливается флажок ошибки переполнения.

В синхронном режиме до загрузки в адаптер первого символа, которым обычно является символ SYN, на выходе TxD действует высокий уровень. Передача битовых посылок инициируется по спаду сигнала ТхС, а скорость передачи соответствует частоте этого сигнала. После начала передачи на выходе TxD должен формироваться непрерывный поток данных. Если же процессор не успел вовремя записать символ в адаптер, на выходе автоматически появляются символы SYN (один или два), а на выходе ТхЕ устанавливается высокий уровень.

Синхронизация символов при приеме в синхронном режиме может быть внутренней или внешней. Если словом режима запрограммирована внутренняя синхронизация (линия SYNDET -выход), приемник начинает работу в режиме поиска. Содержимое буфера приемника непрерывно сравнивается с символом SYN до достижения соответствия. Если же адаптер запрограммирован на два символа SYN, то сравнивается и следующий принимаемый символ. После обнаружения одного или двух символов SYN адаптер заканчивает режим поиска, входит в синхронизм и принимает собственно данные. Момент достижения синхронизации фиксируется установкой высокого уровня на линии SYNDET, который автоматически сбрасывается при считывании состояния.

Внешняя синхронизация (линия SYNDET - вход) достигается подачей высокого уровня на вход SYNDET. Его можно снять спустя один период сигнала RxC.

Ошибки паритета и переполнения контролируются так же, как в асинхронном режиме. Если синхронизация потеряна, процессор специальным словом приказа (D7=l) может ввести режим поиска.

В заключение приведем простые подпрограммы инициализации адаптера, записи и считывания символов, которые составлены при следующих предположениях:

символический адрес CMD обеспечивает загрузку в адаптер управляющих слов (CS = 0, C/D = l), адрес CNTRL -считывание из адаптера слова состояния (CS = ==0, C/D = 1), адрес DATIN - считывание принятых данных (CS=0, C/D = 0) и адрес DOUT -запись передаваемых данных (CS=0, C/D=0);



используется дуплексный асинхронный режим со следующим форматом: 8 бит кода символа, бит нечетного паритета, два стоповых бита и множитель 16Х; эту конфигурацию определяет слово режима 11011110 (DE);

реагируя на прерывание, процессор вводит состояние адаптера и проверяет необходимость ввода или вывода символа; если идентифицируется прерывание от другого устройства, осуществляется переход к программе опроса с начальным адресом POLL;

при обнаружении ошибок вызывается подпрограмма ERIOR;

принятый символ передается в буферную область памяти, текущий адрес которой хранится в двух смежных ячейках с адресом RBUF;

очередной передаваемый символ берется из буферной области памяти с указателем в ячейках TBUF. Метка Код Операнд Коыментарий

; Подпрограмма инициализации адаптера

Запрещение прерываний Сброс аккумулятора

Вывод три раза для надежного сброса адаптера

Вывод слова приказа внутреннего сброса адаптера Вывод слова режима - программирование адаптера Вывод слова приказа

Разрешение прерываний Возврат

Подпрограмма обслуживания прерываний адаптера

PUSH PSW ; Запоминание модифицируемых регист-

PUSH Н ; ров процессора

IN CNTRL ; Ввод состояния адаптера

RRC ; Бит переноса фиксирует готовность

RRC ; приемника

JC RECV ; Переход к обслуживанию приема

RLC ; Бит переноса фиксирует готовность пе-

RLC ; редатчика

JNC POLL ; Прерывание не от адаптера

LHLD TBUF ; Указатель области передачи

MOV А, М ; Очередной передаваемый символ

OUT DOUT ; Загрузка символа в адаптер

INX Н ; Продвиженне и запоминание указателя

JHLD TBUF

JMP EXIT ; Конец передачи

RECV: LHLD RBUF ; Указатель области приема

ODEH



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) ( 47 ) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)