Страница 3 из 27
7.1.2 Инициализация последовательного порта. При инициализации порта коммуникации ("открытии") устанавли- ваются все его параметры. Эти параметры длину слова, число стоп-битов, установку четности и скорость обмена. Длина слова это число битов, которое образует основную единицу данных. Если мы работаем с привычными порциями по 8 битов, то 7 битов достаточны для стандартных файлов ASCII (в которых все символы имеют коды, не превышающие ASCII 128), в то время как для передачи численных данных достаточно порций по 4 бита.
Высокий уровень.
Бейсик открывает коммуникационный канал как файл, и как тако- вому ему должен быть присвоен идентификационный номер:
OPEN "COM1: .........." AS #1
В кавычках должна быть помещена вся информация, необходимая для инициализации порта коммуникации, при этом каждый элемент отде- ляется от предыдущего запятой. Инициализационные данные всегда вводятся в следующем порядке:
Скорость обмена дается как целое число: 75, 100, 150, 300, 600, 1200, 1800, 2400, 4800 или 9600 бод. По умолча- нию берется скорость обмена 300 бод. Четность вводится как односимвольный код: O для нечетной E - для четной и N - при отсутствии контроля по четности. Могут быть также S - когда бит чет- ности всегда равен 0 и M - когда бит четности всегда равен 1. Если используются 8 бит данных, то надо указывать N; при использовании четырех бит не надо использовать N. По умолчанию - E. Биты данных дается как целое число 4, 5, 6, 7 или 8. По умолчанию берется 7. Стоп-биты дается как целое число 1 или 2, причем 2 - значение по умолчанию для 75 и 110 бод, а 1 - для остальных. Когда число битов данных равно 4 или 5, то 2 обозначает 1 1/2 стоп-бита. Такое значение возможно при коммуникации, так как в этом случае бит является единицей времени и поэтому делим.
Оператор OPEN "COM1:" AS #1 открывает COM1 для связи со скоростью 300 бод с четной четностью, используя 7 битов данных и 1 стоп-бит. OPEN "COM1:1200,O,8,1" устанавливает скорость 1200 бод, нечетную четность, 8 бит на символ и 1 стоп-бит. Отметим, что Вы можете завершить оператор OPEN выражением LEN = число, где число устанавливает максимальный размер блока, с которым операторы GET и PUT могут обрабатывать данные (по умолчанию 128 байтов). Имеет- ся также ряд команд управления модемом, которые также могут быть включены в эту спецификацию. (В [7.1.5] объясняется специальная терминология, используемая при этом):
RS Подавляет сигнал "Запрос на посылку" (Request to send). Если эта команда опущена, то OPEN "COM" включает RTS.
CS Вызывает проверку линии "Очистка посылки" (Clear to send). За этой командой может следовать значение (от 0 до 65535), дающее число миллисекунд которые будет ожи- даться сигнал перед тем как будет выдана ошибка таймау- та, например, CS500. Значение по умолчанию 1000, если указан параметр RS, в этом случае 0. DS Вызывает проверку линии "Готовность набора данных" (Data set ready). Допускается необязательный параметр, как и для CS. Значение по умолчанию 1000.
CD Вызывает проверку линии "Определение носителя" (Carrier detect). Допускается необязательный временной параметр, как и для CS. Значение по умолчанию 0. LF Вызывает автоматическую подачу кода перевода строки (ASCII 10) после каждого символа возврата каретки (AS- CII 13). Используется для последовательного вывода на принтер. PE Разрешает проверку четности, вызывая ошибку таймаута устройства при возникновении ошибки четности.
Эти специальные команды могут помещаться в любом месте опера- тора OPEN "COM" и в любом порядке. Отметим, что обычно сигналы CTS и DSR должны быть установлены, чтобы оператор OPEN выполнил- ся, а иначе будет выдана ошибка таймаута устройства. В заключение приводим оператор OPEN "COM", содержащий все параметры, кроме RS и LF:
OPEN "COM1:1200,O,7,1,CS2000,DS2000,CD,PE" AS #1 LEN = 256
Средний уровень. Функция 0 прерывания 14H BIOS инициализирует порт коммуника- ции. В DX должен даваться номер коммуникационного канала (COM1 = 0, COM2 = 1). В AL должен содержаться байт инициализационных данных, значение битов которого следующее:
биты 1-0 длина слова. 10 = 7 битов, 11 = 8 битов. 2 число стоп-битов. 0 = 1, 1 = 2. 4-3 четность. 00 или 10 = нет, 01 = нечет., 11 = чет. 7-5 скорость обмена. 000 = 110 бод 001 = 150 бод 010 = 300 бод 011 = 600 бод 100 = 1200 бод 101 = 2400 бод 110 = 4800 бод 111 = 9600 бод
В данном примере порт инициализируется со словом в 8 битов, одним стоп-битом и четной четностью. Скорость обмена 1200 бод.
;---присваиваем значения параметров переменным MOV WORDLENGTH,00000011B ;длина слова 8 битов MOV STOPBITS,00000000B ;1 стоп-бит MOV PARITY,00011000B ;четная четность MOV BAUDRATE,10000000B ;скорость 1200 бод
;---инициализируем COM1 MOV AL,0 ;чистим AL OR AL,WORDLENGTH ;устанавливаем нужные биты OR AL,STOPBITS ; OR AL,PARITY ; OR AL,BAUDRATE ;
MOV AH,0 ;функция инициализации порта MOV DX,0 ;выбираем COM1 INT 14H ;инициализируем порт
Низкий уровень. Независимо от того, занимаемся ли мы вводом или выводом, как минимум 4 регистра микросхемы 8250 должны быть инициализированы для операций обмена. Это регистры делителя скорости обмена, ре- гистр контроля линии и регистр разрешения прерывания.
|