ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.02.2020
Просмотров: 2350
Скачиваний: 5
В режимах 1, 3 также имеется возможность изменить скорости последовательной передачи: |
РпгРпз^2^00/32)*^
где fov — частота переполнении Т/С 1. ;
Для использования Т/С 1 в качестве источника для задания частот Рд^ и Рд^ необходимо: '
1) запретить прерывания от Т/С 1; |
2) запрограммировать работу Т/С 1 в качестве таймера или в качеств счетчика, установив при этом для него один из режимов 0, 1 или 2;
3) запустить Т/С 1 на счет. | Обычно для синхронизации последовательного порта таймер Т/С 1 включается! в режим автозагрузки (режим 2). | В этом случае скорость последовательного обмена определяется по формуле: !i.
^Г^З^2^00*^/^2*12* [25б-(ТН)]), '
где (ТН) — десятичный код содержимого ТН1. Если необходим последователь-5 ный обмен с очень низкой скоростью, то можно использовать Т/С 1 в режиме 16*1 разрядного таймера (режим 1), разрешив при этом прерывание от Т/С 1 с целью перезагрузки TL1/TH1 в подпрограмме обслуживания прерывания.
В табл. 2.17 приведен ряд стандартных скоростей последовательного обмена и то, как они могут быть реализованы с помощью Т/С 1 в режимах 1,3.
В табл. 2.18 приведена сводная информация по всем четырем режимам работы последовательного порта ОМЭВМ семейства МК51.
Ниже приведен пример программы инициализации последовательного порта дэд работы на частоте тактового сигнала Гво^б МГц:
; инициализация последовательного порта
; для работы со скоростью 110 бод на
; частоте тактового сигнала 6 МГц;
INT1: CLR TR1 ; останов таймера;
MOV ТН1,#72Н ; автозагружаемое значение для получени
; скорости 110 бод;
MOV SCON,#11011100В ; установка режима 9-разрядного УАПП;
MOV SCON,#00100000B ; установка режима автозагрузки
; таймера 1;
SET TR1 ; запуск таймера 1;
; прием символа от внешнего устройства ввода;
CIN: INB BI,CIN ; ожидание завершения приема;
MOV A,SBUF ; чтение полученного символа;
CLR RI ; очистка флага приема;
; выдача принятого символа на внешнее
; устройство ввода;
COUT: INB TI.COUT ; ожидание окончания передачи;
CLR TI ; очистка флага передачи;
MOV SBUF.A ; выдача символа.
Режим 2 и'режим 3 последовательного порта позволяют организовать раб ОМЭВМ в многопроцессорных системах, использующих для обмена информаи между ОМЭВМ разделяемый моноканал (коаксиальный кабель, витая п< оптоволокно). В этих режимах принимается 9 бит данных и 9-й принятый записывается в бит RB8 регистра SCON. При этом, если бит SM2 регистра S установлен в "I", то после приема посылки флаг прерывания приемника RI б:
ОДНОКРИСТАЛЬНЫЕ МИКРОЭВМ СЕМЕЙСТВА МК51 159
установлен только в том случае, если RB8=1. Эту особенность работы последовательного порта в режимах 2 и 3 можно использовать для организации межконтроллерного обмена следующим образом.
Таблица 2.17
|
Режимы ра |
Скорость |
|
|
Разряды |
THI |
Приме |
||
|
боты после- JVf\VQVQTVLVf\— |
приема/ |
^Q» |
SMOD |
TMOD |
|
чание |
||
|
lUUcd1УЛЬНи |
передачи |
|
|
|
|
|
|
|
|
го порта |
Кбод |
МГц |
|
С/Т |
Ml |
М0 |
|
|
|
Режим 0 |
Макс: 1000 |
12 |
X |
X |
X |
X |
X |
|
|
Режим 2 |
Макс: 375 |
12 |
1 |
X |
X |
X |
X |
|
|
Режимы 1,3 |
62 5 |
12 |
1 |
0 |
1 |
0 |
FFH |
|
|
|
. 19 2 |
11 059 |
1 |
0 |
1 |
0 |
FDH |
|
|
|
9 6 |
11 059 |
0 |
0 |
1 |
0 |
FDH |
|
|
|
4 8 |
11 059 |
0 |
0 |
1 |
0 |
FAH |
|
|
|
2 4 |
11 059 |
0 |
0 |
1 |
0 |
Е4Н |
|
|
|
1 2 |
11 059 |
0 |
0 |
1 |
0 |
Е8Н |
|
|
|
0 1375 |
11 986 |
0 |
0 |
1 |
0 |
18Н |
|
|
|
0 110 |
6 |
0 |
0 |
1 |
0 |
72Н |
|
|
|
0 110 |
12 |
0 |
0 |
0 |
1 |
FEH |
TL1=EBH |
Таблица 2.18
|
Режим обмена |
Вид обмена |
Разряды регистра SCON |
Скорость передачи |
Примечание |
||||||
|
SM0 |
SM1 |
SM2 |
REN |
ТВ8 |
RB8 |
ФЛАГ |
||||
|
0 |
ПРД |
0 |
0 |
0 |
- |
- |
- |
TI |
W2 |
|
|
ПРМ |
1 |
RI |
Для инициализации приема установить: RI=0 |
|||||||
|
1 |
ПРД |
0 |
1 |
- |
- |
|
- |
TI |
2SMOD . ^ |
|
|
ПРМ |
0 |
1 |
стоп-бит |
RI |
||||||
|
32 |
||||||||||
|
1 |
1 |
|||||||||
|
0 |
— |
Принятый байт теряется |
||||||||
|
2 |
ПРД |
1 |
0 |
— |
~ |
9-й бит данных |
- |
TI |
2^ . fBQ |
|
|
ПРМ |
0 |
1 |
—' |
|
RI |
|||||
|
данных |
64 |
|||||||||
|
1 |
1 |
|||||||||
|
0 |
- |
Принятый байт теряется |
||||||||
|
3 |
ПРД |
1 |
1 |
- |
- |
9-й бит данных |
- |
TI |
^SMOD . ^ |
|
|
ПРМ |
0 |
1 |
~ |
9-й бит данных |
RI |
|||||
|
1 |
1 |
|||||||||
|
32 |
||||||||||
|
0 |
- |
Принятый байт теряется |
||||||||
Когда ведущая ОМЭВМ хочет передать блок данных одной из ведомых ОМЭВМ, она выдает в моноканал посылку с адресом ведомой, которой будет передан блок данных. Адресная посылка отличается от посылки с данными тем, что в адресной посылке 9-й бит данных равен "I", а в посылке с данными — "0". Таким образом, при SM2==1 ни одна ведомая ОМЭВМ не будет реагировать на посылку с данными, но все ведомые среагируют на адресную посылку. Проанализировав полученный адрес, адресуемая ОМЭВМ сбрасывает свой бит SM2, а остальные оставляют его без изменения и вновь переходят к выполнению прерванной программы. После этого ведущая ОМЭВМ может начинать выдачу в моноканал блока данных, на посылки которого будет реагировать только ОМЭВМ, у которой SM2=0.
Бит SM2 никак не участвует в работе последовательного порта в режиме 0. В режиме 1 бит SM2 может использоваться для контроля правильности принятого стоп-бита: в режиме 1, если SM2=1, флаг прерывания приемника RI не будет установлен, если принятый стоп-бит не равен "I".
2.3.4. Структура прерываний
Механизм прерываний в ОМЭВМ позволяет автоматически реагировать на внешние и на внутренние события (переполнение таймеров/счетчиков; завершение последовательного обмена). Алгоритм обработки прерывания при обнаружении запроса прерывания представлен на рис. 2.21. На рис. 2.22 изображены все возможные источники прерывания.
Рис. 2.21. Алгоритм обработки прерывания
Каждое из внешних прерываний INT0, INT1 может быть активизировано по уровню ("0") или по фронту (переход из "1" в "0") сигналов на выводах ОМЭВМ Р3.2, РЗ.З, что определяется состоянием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания INTx устанавливается флаг 1Ех регистра TCON. Установка флагов 1Ех в регистре TCON вызывает соответствующее прерывание. Очистка флага 1Ех производится следующим образом: при прерывании по фронту 1Ех сбрасывается аппаратно (автоматически внутренними средствами ОМЭВМ) при обращении к соответствующей подпрограмме обработки прерывания;
при прерывании по уровню флаг очищается при снятии запроса внешнего прерывания, то есть в 1Ех отслеживается состояние вывода INTx.
Чтобы внешнее прерывание по уровню было распознано, необходимо, чтобы низкий уровень на выводе INTx удерживался в течение не менее 12 периодов сигнала тактовой частоты ОМЭВМ. Это объясняется тем, что проверка выводов ОМЭВМ INT0, INT1 выполняется внутренними аппаратными средствами ОМЭВМ один раз в каждом машинном цикле. В случае внешнего прерывания по фронту флаг 1Ех будет установлен, если две последовательные проверки входа INTx покажут в одном машинном цикле "I", а в следующем "0м. Поэтому, если внешнее прерывание активизируется по переходу из состояния высокого уровня в состояние низкого уровня, то минимум одному машинному циклу низкого уровня должен предшествовать минимум один машинный цикл высокого уровня на выводе INTx. Если внешнее прерывание активизируется по уровню, запрос должен удерживаться до начала обслуживающей подпрограммы и сниматься до завершения этой подпрограммы для предотвращения повторного обслуживания.
Примечания. IT0, IT1 — биты управления регистра TCON
TF0, TF1, IE0, IE1 — флаги-признаки в регистре TCON • TI, RI — флаги-признаки в регистре SCON
Рис. 2.22. Возможные источники прерывания
Прерывания от таймеров/счетчиков вызываются установкой флагов TF0 и TF1 регистра TCON, которые устанавливаются при переполнении соответствующих регистров таймеров/счетчиков (за исключением режима 3, см. раздел 2.3.3). Очистка флагов TF0 и TF1 производится внутренней аппаратурой ОМЭВМ при-переходе к подпрограмме" обслуживания прерывания.
Прерывание от последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным
путем обычно в пределах подпрограммы обработки прерывания, где определяется, какому из флагов RI или TI соответствует прерывание.
Каждый из перечисленных источников прерываний может быть индивидуально разрешен или запрещен установкой или сбросом соответствующего бита в регистре разрешения прерываний IE. Регистр IE содержит также бит ЕА, сброс которого в "0" запрещает сразу все прерывания. Необходимым условием прерывания является его разрешение в регистре IE. Формат и описание регистра разрешения прерываний приведены в разделе 2.2.4.
Все биты, которые вызывают прерывания (IE0, IE1, TF0, TF1, RI, TI), могут быть программно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. Т. е. прерывания могут программно вызываться или ожидающие обслуживания прерывания могут программно ликвидироваться. Кроме того, прерывания по INT0, INT1 могут вызываться программной установкой Р3.2=0 и РЗ.З=Ю, как показано в приведенном ниже примере:
MAIN: MOV IE, #00000101В ; разрешение прерывания от INT0.INT1. ^ HOV IP, #04Н ; присвоение INT1 старшего приоритета. SET ЕА ; общее разрешение прерывания. MOV P3; #11110011В ; имитация внешних прерываний. __ |
SUBR: ORG013H ; переход к подпрограмме обслуживания INT1. ]
В предложенном примере запросы прерывания INT0 и INT1, имеющие | различный приоритет, поступают одновременно. При этом обслуживается I прерывание с высшим приоритетом. ___ |
В случае, когда прерывание по INTx (x=0,l) вызывается уровнем сигнала на | соответствующем входе ОМЭВМ, флаг 1Ех (х=0,1) при переходе к подпрограмме | обработки прерывания автоматически сбрасывается, а затем, если соответствующий | вывод ОМЭВМ Р3.2 или РЗ.З все еще находится в состоянии логического "0", | вновь устанавливается. Поэтому, в случае, когда прерывание по входам INT0, INT1 вызывается уровнем, программная установка в "1" флагов IE0, IE1 вызовет прерывание, после чего соответствующий флаг 1Ех (х=0,1) будет автоматически сброшен при переходе к подпрограмме обработки прерывания.
Флаги IE0, IE1, TF0, TF1, RI, TI устанавливаются независимо от того! разрешено или нет соответствующее прерывание в регистре IE.
Структура приоритетов прерываний является двухступенчатой. Каждому! источнику прерывания может быть индивидуально присвоен один из двух уровней^ приоритета: высокий или низкий. Выполняется это установкой (высокий уровень! приоритета) или сбросом (низкий уровень приоритета) соответствующего бита в| регистре приоритетов прерываний IP (описан в разделе 2.2.4). Программа обработки прерывания с низким уровнем приоритета может быть прервана запросов прерывания с высоким уровнем приоритета, но не может быть прервана другим| запросом прерывания с низким уровнем приоритета. Программа обработки! прерывания с высоким уровнем приоритета не может быть прервана никаким другим! запросом прерывания ни от одного из источников. Если два запроса с разным! уровнями приоритета приняты одновременно, сначала будет обслужен запрос d высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым] уровнем приоритета, обработка их будет производиться в порядке, задаваемом) последовательностью внутреннего опроса флагов прерываний. Таким образом, Я пределах одного приоритетного уровня существует еще одна структура приоритетов^