Скачиваний:
25
Добавлен:
03.06.2014
Размер:
2.3 Mб
Скачать

1.5.5. Регистр статуса последовательного порта.

Serial Port Status Register

Аббревиатура - SP_STAT.

Размер - 1 байт.

Находится по адресу 11h.

Использовать для записи в окне HWindow 15.

Использовать для чтения в окне HWindow 0.

SP_STAT

адрес 11h ,

запись HWindow 15

чтение HWindow 0)

7

6

5

4

3

2

1

0

RPE/RB8

RI

TI

FE

TXE

OE

R

R

R - зарезервированные биты, всегда должны быть очищены.

OE - (Overrun Error, ошибка наложения) - этот бит устанавливается, если данные из сдвигающего регистра приёмника загружаются в SBUF(RX) до того, как будет прочитан предыдущий принятый байт. Чтение SP_STAT очищает этот бит.

TXE - (SBUF(TX) Empty, передатчик пуст) - этот бит =1, если буфер передатчика пуст и готов принять до двух . Он очищается, когда байт записывается в SBUF(TX).

FE - (Framing Error, ошибка кадра) - этот бит =1, если внутри принятого кадра не найден стоп-бит. Чтение SP_STAT очищает этот бит.

TI - (Transmit Interrupt, флажок прерывания передатчика) - этот бит устанавливается в начале передачи стоп-бита. Чтение SP_STAT очищает этот бит.

RI - (Receive Interrupt, флажок прерывания приёмника) - этот бит устанавливается при приёме последнего бита данных. Чтение SP_STAT очищает этот бит.

Обратите внимание, что события приёма/передачи устанавливают флажки RI и TI и соответствующие биты в регистрах захвата прерывания (INT_PEND), в то время как установка битов RI и TI программным способом не воздействует на биты регистра захвата прерывания и не вызывает прерывания. Аналогично, чтение регистра SP_STAT очищает биты RI и TI, но не очищает соответствующие биты регистра захвата прерывания .

RPE/RB8 (Received Parity Error, ошибка четности при приёме/Received Bit 8, девятый принятый бит):

- RPE=1, если проверка на четность PEN разрешена (SP_CON.2=1) и произошла ошибка четности.

- RB8=1, если проверка на четность PEN запрещена (SP_CON.2=0) и девятый принятый бит =1;

Чтение SP_STAT очищает этот бит.

По сбросу состояние регистра SP_STAT следующее:

7

6

5

4

3

2

1

0

0

0

0

1

0

0

1

1

Обратите Внимание, что чтение регистра SP_STAT очищает все флажки, за исключением TXE. По этой причине, мы рекомендуем, чтобы Вы копировали содержимое регистра SP_STAT в промежуточный регистр и затем выполняли команды проверки разрядов типа JBC и JBS только на этом промежуточном регистре. Иначе, если выполнится больше одной команды проверки разрядов, могут быть возвращены неправильные значения битов.

1.6. Прерывания последовательного порта

Последовательный порт может быть сконфигурирован для того, чтобы генерировать или одно прерывание последовательного порта (Serial Port Interrupt) или раздельные прерывания - и по передаче (Transmit Interrupt) и по приёму (Receive Interrupt).

Если прерывание последовательного порта замаскировано, а прерывания по приёму и передаче разрешены, флажки RI и TI генерируют раздельные прерывания приёма и передачи.

Таблица 3.3. Регистры прерываний последовательного порта

Мнемоника

регистра

Название

Ад-рес

Описание

INT_MASK

Маска

прерывания

08H

Установка бита INT_MASK.6 разрешает прерывание последовательного порта

(INT06, 200CH).

Очистка бита INT_MASK.6 запрещает прерывание последовательного порта

INT_MASK1

Маска

прерывания 1

13H

Установка бита INT_MASK1.0

разрешает прерывание передатчика (INT08, 2030H).

Очистка бита INT_MASK1.0 запрещает прерывание передатчика.

Установка бита INT_MASK1.1

разрешает прерывание приёмника (INT09, 2032H).

Очистка бита INT_MASK.1 запрещает прерывание приёмника.

INT_PEND

Захват прерывания

09H

Установка бита INT_PEND.6

индицирует захват прерывания

последовательного порта (INT06). Бит сбрасывается при переходе к вектору по адресу 200CH.

INT_PEND1

Захват прерывания 1

12H

Установка бита INT_PEND1.0

индицирует захват прерывания

передатчика (INT08).

Бит сбрасывается при переходе к вектору по адресу 2030H.

Установка бита INT_PEND1.1

индицирует захват прерывания приёмника (INT09).

Бит сбрасывается при переходе к вектору по адресу 2032H.

Если прерывание последовательного порта разрешено, а прерывания по приёму и передаче запрещены, и флажок RI, и флажок TI генерируют одно и то же прерывание последовательного порта. Когда флажок TI генерирует прерывание, устанавливается бит 5 в регистре SP_STAT. Когда флажок RI генерирует прерывание, устанавливается бит 6 в регистре SP_STAT.

Чтобы разрешить индивидуальные прерывания по передаче и приёму, установите биты TI_MASK (INT_MASK1.0) и RI_MASK (INT_MASK1.1) в регистре INT_MASK1. Чтобы разрешить прерывание последовательного порта, установите бит SER_MASK в регистре INT_MASK (INT_MASK.6).

Соседние файлы в папке lab96