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 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.