Порты ввода/вывода. Система управления МКЭВМ. Автономное использование МК-48. БИС расширителя ввода/вывода, страница 20

2.  Запрограммировать последовательный порт и обеспечить стандартную скорость приема-передачи;

3.  Организовать квитирование сигналов интерфейса.

Обычно для асинхронной передачи данных используют режим 1 или режим 3 работы УАПП: режим 1 – передача данных ведется 8-ю битами, 1 старт-бит и 1 стоп-бит (т.е.  каждая посылка содержит 10 бит); режим 3 – 8 бит данных, 1 контрольный бит, 1 старт-бит и 1 стоп-бит.

В этих режимах скорость приема/передачи определяется работой Т/С1.

Т/С1 – может работать как счетчик (поступление внеш. имп.) и как таймер (сам вырабатывает импульсы).

Т/С1 – в режиме 2 позволяет получить непрерывную последовательность импульсов.

 - частота переполнения Т/С1

В режиме 3.

fП – скорость последовательной передачи [бит/с] или [бод]

SMOD – коэффициент удвоения скорости передачи (находится в регистре PCON): если 0 – то обычная скорость передачи, если 1 – то удвоенная скорость передачи.

ТН1 – код в регистре ТН в десятичной системе.

Пример: Организовать последовательную передачу со скоростью 4800бит/с.

Допустим частота резонатора. Возьмем SMOD=0, тогда:

Затем необходимо определить реальную скорость fП. Отклонение не должно быть больше 10%.

Для управления последовательным портом необходим регистр SCON.

7

6

5

4

3

2

1

0

PCON

SM2

SM1

SM0

REN

TB8

RB8

TI

RI

Режим 1

0

1

0

0

0

0

1

0

=42H

RI – флаг приемника, устанавливается при приеме стоп-бита, т.е. последнего бита сообщения.

TI – флаг -«- передаче стоп-бита

Сбрасываются только программно

Регистр управления таймером-счетчиком.

7

6

5

4

3

2

1

0

TMOD

GATE

M1

M0

GATE

M1

M0

Т/С1

Т/С0

Режим 2:          0 0 1 0 0 0 0 0 = 20Н

Перед работой с последовательным портом необходимо осуществить инициализацию, т.е. определить режим работы таймера-счетчика и загрузить в него нужное число для определения скорости передачи.

Метки

Мнемокод

Комментарии

INIT

CLR

ES

Запретить прерывания от УАПП

MOV

SCON,#42H

Режим УАПП

CLR

TR1

Остановить Т/С1

MOV

TMOD,#20H

Режим Т/С1

MOV

TH1,#0FAH

SETB

TR1

Запуск Т/С1

Для передачи данных необходимо поместить их в регистр SBUF, после этого они автоматически начинают передаваться.

MOV SBUF,A

Во время передачи последовательных данных необходимо следить за состоянием флагов, поэтому удобно организовать передачу каждого байта в виде подпрограммы.

Метки

Мнемокод

Комментарии

;Входной параметр – регистр А – код символа

SPOUT

JNB

TI,SPOUT

Ожидание готовности передатчика

CLR

TI

Сброс TI

MOV

SBUF,A

Пересылка символа

RET

Если необходимо организовать и прием, и передачу, то

SCON 01010010 = 52H

Все остальное такое же (см. выше), но необходима подпрограмма приема данных.

Метки

Мнемокод

Комментарии

;Входной параметр – SBUF

;Выходной параметр рег. А – принятый символ

SPIN

JNB

RI,SPIN

Ожидание готовности приемника

CLR

RI

Сброс RI

MOV

A,SBUF

RET