
- •Лабораторная работа № 3
- •1.2. Краткий обзор режима 0
- •1.3. Асинхронные режимы
- •1.3.1. Краткий обзор Режима 1
- •1.3.2. Краткий обзор Режима 2
- •1.3.3. Краткий обзор Режима 3
- •1.4. Многопроцессорная связь
- •1.5. Программирование последовательного порта
- •1.5.1. Регистр скорости передачи
- •1.5.2. Регистр буфера приемника последовательного порта
- •1.5.3. Регистр буфера передатчика последовательного порта
- •1.5.4. Регистр управления последовательным портом.
- •1.5.5. Регистр статуса последовательного порта.
- •1.6. Прерывания последовательного порта
- •1.6.1 Описание работы контроллера прерывания
- •1.6.2. Приоритеты прерывания
- •1.6.3. Изменение приоритетов прерывания
- •1.6.4. Программы обработки прерывания
- •Фрагмент программы
- •2. Порядок выполнения работы
- •3. Содержание отчета
1.4. Многопроцессорная связь
Режимы 2 и 3 предназначены для многопроцессорной связи. В Режиме 2, последовательный порт генерирует прерывание приёмника (RI) только когда установлен девятый информационный разряд. В Режиме 3, последовательный порт генерирует прерывание приёмника (RI) независимо от значения девятого бита. Девятый бит всегда установлен в кадрах адреса и всегда сброшен в кадрах данных. Один из способов использования этих режимов для многопроцессорной связи состoит в том, чтобы устанавливать главный процессор в Режим 3, а подчиненные процессоры в Режим 2. Когда главный процессор хочет передавать блок данных к одному из нескольких подчиненных, он посылает кадр адреса, который идентифицирует адрес подчиненного. Так как девятый бит установлен, кадр адреса будет прерывать все подчинённые процессоры. Каждый подчиненный может исследовать байт адреса и определить, не его ли адрес поступил?
Адресованный подчиненный процессор переключается в Режим 3, чтобы получить кадры (фреймы) данных, в то время как другие (не адресованные) процессоры остаются в Режиме 2 и не прерываются при приёме данных адресованным процессором.
1.5. Программирование последовательного порта
При программировании последовательного порта используются регистры, описанные ниже.
1.5.1. Регистр скорости передачи
Baud Rate Register
Аббревиатура - BAUD_RATE.
Размер - 2 байта.
Находится по адресу 0Eh.
Использовать для записи в окне HWindow 0.
Регистр скорости передачи (Baud Rate) устанавливает скорость передачи последовательного порта в бодах и источник тактовой частоты (clock source). Он содержит два байта, причем запись в регистр должна начинаться с записи младшего байта.
Старший бит регистра (CS) выбирает тактовый генератор. Младшие 15 бит представляют (BAUD_VALUE), целое без знака, которое определяет скорость передачи в бодах. BAUD_VALUE имеет максимальное значение равное 32,767 и может иметь минимальное значение, равное нулю только когда используется внутренняя синхронизация в асинхронных режимах 1, 2, и 3. В остальных случаях минимальное значение BAUD_VALUE = 1.
BAUD_RATE
адрес 0Eh
запись HWindow 0
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CS |
B14 |
B13 |
B12 |
B11 |
B10 |
B9 |
B8 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
CS (CLOCK_SRC, Serial Port Clock Source, источник синхронизации последовательного порта) - этот бит определяет внутренний (CS=1, контакт XTAL1) или внешний (CS=0, контакт T2CLK (P2.3)) источник синхронизации для последовательного порта.
B0...B14 (BAUD_VALUE) - эти биты составляют BAUD_VALUE. Младший байт загружается первым.
После сброса состояние регистра BAUD_RATE следующее:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
X |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
X |
Для определения скорости передачи используются следующие формулы (Fosc- частота на контакте XTAL1, в учебном стенде 8 МГц):
Синхронный режим 0:
BAUD_VALUE=(Fosc/(Baud Rate x 2))-1
или T2CLK/Baud Rate
Асинхронные режимы 1,2,3:
BAUD_VALUE=(Fosc/(Baud Rate x 16))-1
или T2CLK/(Baud Rate x 8)