Справочник программиста на персональном компьютере фирмы IBM. Ввод/вывод Страница 10. Инициализация и управление модемом. Часть 2
|
Страница 10 из 27
Высокий уровень. Поскольку телефонная связь очень медленная, то связь с модемом это одна из областей, где программирование связи на Бейсике ничем не хуже, чем на языке ассемблера. Вот грубая схема:
100 OUT BASEADDRESS+4,1 'устанавливаем бит DTR 110 '''теперь посылаем управляющую строку для вызова и установле- 120 '''ния связи - этот код меняется от модема к модему . . 200 X = INP(BASEADDRESS+2) 'получаем регистр статуса модема 210 IF X AND 2 <> 2 THEN 200 'ждем пока будет установлен бит 1 220 OUT BASEADDRESS+4,3 'устанавливаем бит RTS 230 X = INP(BASEADDRESS+2) 'получаем регистр статуса модема 240 IF X AND 1 <> 1 THEN 230 'ждем пока будет установлен бит 0 250 '''теперь посылаем данные
Низкий уровень. Вот та же самая схема на языке ассемблера:
;---устанавливаем сигнал DTR MOV DX,BASE_ADDRESS ;начинаем с базового адреса ADD DX,4 ;указываем на регистр контроля модема MOV AL,1 ;устанавливаем бит 1 OUT DX,AL ;посылаем в порт ;---посылаем управляющую строку модему для вызова . (этот код разный для разных модемов) . ;---ожидаем пока будет установлен сигнал DSR INC DX ;указываем на регистр статуса модема INC DX ; TRY_AGAIN: IN AL,DX ;получаем содержимое TEST AL,10B ;проверяем второй бит JZ TRY_AGAIN ;ждем пока он не будет равен 1
;---устанавливаем бит RTS DEC DX ;возвращаемся к регистру управления DEC DX ; MOV AL,3 ;устанавливаем сигнал RTS OUT DX,AL ;посылаем в порт ;---ожидаем сигнала CTS INC DX ;возвращаемся к регистру статуса INC DX ; ONCE_MORE: IN AL,DX ;получаем байт статуса TEST AL,1 ;проверяем бит CTS JZ ONCE_MORE ;не продолжаем пока он не установлен ;---теперь можно посылать данные
|