Автор работы: Пользователь скрыл имя, 03 Марта 2013 в 19:10, лабораторная работа
Цель работы:
научиться программировать последовательный порт IBM PC;
изучить временные диаграммы последовательных посылок кодов ASCII – литер;
изучить структуру коммуникационной процедуры.
5. Определение длинны одного бита посылки.
На экране осциллографа длинна одного бита посылки составляет 5мм, что эквивалентно 5 мс.
6. Изменение формата данных.
Уберем бит четности и оставим один стоповый бит, т.е. регистр LCR содержит следующие биты: 00010011. Осуществим вывод буквы «A». Результат работы представлен ниже:
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
Вывод: в опыте изменен формат данных, т.е. изменено содержимое регистра LCR. Результат совпал с ожидаемым.
Вывод по лабораторной работе:
В результате выполнения лабораторной работы №2 «Интерфейс последовательной связи RS-222C» выполнено задание представленной на выполнение лабораторной работы. Задание, взято из настоящего методического пособия по лабораторному практикуму. Работа проводилась в учебно-лабораторном классе за IBM PC.
При выполнении лабораторной
работы изучена структура
Контрольные вопросы
1. Предположим, что промежутков между символами нет, символы содержат 7 информационных бит, имеется бит паритета и 2 стоповых бита, а скорость передачи составляет 600 бит/с. Сколько символов передается в секунду? Сравните ее со скорость синхронной линии с той же двоичной скоростью 600 бит/с, при отсутствии холостых символов, если сообщение состоит из двух символов синхронизации и последующих 200 7-битных информационных символов.
2. Каков будет формат передаваемого символа, если регистр LCR содержит код 00011111?
2. Определите форматы символа и сообщения последовательной передачи, если в регистре LCR содержится код 00111111?
Приложение 1. Программа ввода данных с клавиатуры и вывода в последовательный порт 2: UART 8250
title uart8250
stack SEGMENT para stack ;определение сегмента стека
DB 8 dup (‘stack ’)
stack ENDS
data SEGMENT para ;определение сегмента данных
lit DB ‘a’
per DB 12,10,’$’
data ENDS
code SEGMENT
ASSUME cs:code, ss:stack, ds:data
port PROC far
push ds ; занесение в стек начальных значений для возврата управления
push ax
mov bx,data
mov ds,bx
mov ax,40h ;получение базового адреса порта COM2
mov es,ax
mov dx,es:[2]
add dx,2 ;установка скорости обмена
mov al,80h ;адресация к LCR
out dx,al ;DLAB = 1, установка скорости обмена
dec dx ;адресация к старшему байту регистра делителя скорости обмена
dec dx
mov al,01h ;скорость обмена = 200 бод
out dx,al
dec dx ;адресация к младшему байту
mov al,80h ;установка младшего байта регистра делителя для скорости 200 бод
out dx,al
mov al,1Bh ;инициализация регистра управления линией LCR (уст. 8 инф, 1ст.бит, проверка на чет.)
add dx,2 ;адресация к LCR
out dx,al ;посыл значения в порт
;Инициализация регистра разрешения прерываний (IER)
dec dx ;адресуемся к регистру
dec dx ;разрешение прерывания IER
mov al,0 ;запрещение прерываний
out dx,al ;посылаем в порт
mov ah,9 ;перевод строки
lea dx,per
int 21h
next: mov dl, lit ;вывод на экран содержимого
mov ah,2 ;ячейки lit
int 21h
;установка связи с модемом
mov ax,40h ;определение базового адреса порта COM2
mov es,ax
mov dx,es:[2]
add dx,4 ;адресация к регистру MCR назнач. 0-й, 1-й разряды = 1 посылаем в порт
mov al,2h
out dx,al
add dx,1 ;адресация к LSR
g: in al,dx ;чтение из порта в al
test al,20h ;проверка готовности порта
jz g ;переход на метку g, если не готов
mov ah,7 ;ввод с клавиатуры в регистр al с ожиданием
int 21h ;без отображения
cmp al,’=’ ;выход из программы по клавише ‘=’
je con
cmp al,0
je met
mov lit,al
met: mov ax,40h ;определение базового адреса порта COM2
mov es,ax
mov dx,es:[2]
mov al,lit ;вывод в порт содержимого ячейки lit
out dx,al
jmp next
con: ret
port ENDP
code ENDP
END port