Программирование микропроцессорных систем в интегрированной среде программирования keil-c: Методические указания к лабораторным работам, страница 22

Символ

Позиция

Имя и назначение

SM0

SCON.7

Биты управления режимом работы приемопередатчика. Устанавливаются/сбрасываются программно см. примечание 1

SM0

SM1

Режим работы приемопередатчика

Сдвигающий регистр расширения ввода/вывода

0

1

8 битовый приемопередатчик, изменяемая скорость передачи

1

0

9 битовый приемопередатчик. Фиксированная скорость передачи

1

1

9 битовый приемопередатчик, изменяемая скорость передачи

SM1

SCON.6

SM2

SCON.5

Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятый бит имеет значение 0

REN

SCON.4

Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных

TB8

SCON. 3

Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика

RB8

SCON.2

Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме 9-битового приемника

TI

SCON. 1

Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания

RI

SCON.0

Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания

Для того, чтобы включить первый режим работы последовательного порта, достаточно выполнить следующую команду присваивания:

SCON=0x40|//выбрать 8-ми битный режим работы последовательного порта

          0x10|//разрешить работу приёмника

          0x02;// разрешить запись первого байта в передатчик

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

SCON=0x52;//8 bit UART, разрешение работы приёмника и передатчика

Скорость работы последовательного порта обычно задаётся таймером 1. На высоких скоростях обмена информации этот таймер используется в режиме с автоперезагрузкой (старшая тетрада TMOD = 0010В). При синхронизации последовательного порта от таймера 1 скорость обмена определяется выражением:

В следующей таблице приведена настройка таймера 1 для наиболее часто применяющихся скоростей обмена по  последовательному порту:

Частота приема/передачи

(BAUD RATE)

Частота резонатора МГц

Таймер/счетчик 1

SMOD

С/Т

Режим (MODE)

Перезагружаемое число

19,2 Кгц

11,059

1

0

2

0FDH

9,6 Кгц

11,059

0

0

2

0FDH

4,8 Кгц

11,059

0

0

2

0FAH

2,4 Кгц

11,059

0

0

2

0F4H

1,2 Кгц

11,059

0

0

2

0F4H

3.4. Описание примера программы работы с последовательным портом

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

В первой программе, построенной по одномодульному принципу, используется две подпрограммы. В главной подпрограмме с именем main выполняются все необходимые действия по выводу строки символов на экран персонального компьютера. Эта подпрограмма записана в строках от 25 по 48. Имя подпрограммы определяется языком программирования C, который после предварительной инициализации переменных всегда передаёт управление подпрограмме с именем main.