MCS-51 (1031646), страница 11
Текст из файла (страница 11)
Она постоянна и составляет:Fn0=fBQ/12.При необходимости работать с переменной скоростью используется режим 2 последовательного порта. В этом режиме скорость последовательной передачи зависит отсостояния бита SMOD регистра SCON:Fn2=(2SMOD/64)*fBQ.Т.е. при SMOD=0 Fn2=fBQ/64, а при SMOD=1 Fn2=fBQ/32. По сигналу сброс битSMOD устанавливается в ноль. Для задания бита SMOD используются команды с байтовой адресацией, например, команда MOV 87H, #80Н.В режимах 1, 3 также имеется возможность изменить скорость последовательнойпередачиFnl=Fn3=(2SMOD/32)*fOV,где fov — частота переполнений Т/С1Для использования Т/С1 в качестве источника для задания частот Fnl и Fn3 необходимо: 1) запретить прерывания от Т/С1;2) запрограммировать работу Т/С1 в качестве таймера или в качествесчетчика, установив при этом для него один из режимов 0, 1 или 2;3) запустить Т/С1 на счет.51Обычно для синхронизации последовательного порта таймер Т/С1 включается врежим автозагрузки (режим 2).
В этом случае скорость последовательного обмена определяетса по формуле:Fnl=Fn3=(2SMOD*fBQ)/(32*12*[256-(TH)]),где (ТН) — десятичный код содержимого ТН1 Если необходим последовательныйобмен с очень низкой скоростью, то можно использовать Т/С1 в режиме 16-разрядноготаймера (режим 1), разрешив при этом прерывание от Т/С1 с целью перезагрузки TL1/TH1в подпрограмме обслуживания прерывания.В табл 2 17 приведен ряд стандартных скоростей последовательного обмена и то,как они могут быть реализованы с помощью Т/С 1 в режимах 1, 3Таблица 2.17.Режимы работы последовательного портаРежим 0Режим 2Режим 1, 3СкоростьfBQ,SMТН1Разряды TMODприема/МГцODпередачи,С/Т М1 М0КбодМакс: 1000 12ХХХХХМакс: 375121ХХХХ62,5121010FFH19,211,059 1010FDH9,611,059 0010FDH4,811,059 0010FAH2,411,059 0010E4H1,211,059 0010E8H0,137511,986 001018H0,1106001072H0,110120001FEHВ табл 2 18 приведена сводная информация по всем четыремследовательного порта ОМЭВМ семейства МК51.ПримечаниеTL1=EBHрежимам работы по-Таблица 2.18.РежимобменаВидобмена0ПРДПРМCM0SM100ПРДПРМ10ПРМ001ПРД2Разряды регистра SCONSM2RENTB8RB81-101--Стоп-бит1-9-й битданных013ПРМ11-011109-й битданныхf BQT1R12SMOD ⋅ fOV129-й битданныхR1--T19-й битданныхR1ПримечаниеДля инициализации установить RI=132Принятыйбайт теряетсяT110СкоростьпередачиT1R1-101ПРД-Флаг2SMOD ⋅ f BQ64Принятыйбайт теряется2SMOD ⋅ fOV32-Принятыйбайт теряется52Ниже приведен пример программы инициализации последовательного порта дляработы на частоте тактового сигнала fBQ=6 МГц; инициализация последовательного порта; для работы со скоростью 110 бод на; частоте тактового сигнала 6 МГц,INT1 CLR TR1; oстанов таймера,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 регистра SCON установлен в 1 , то после приема посылки флаг прерывания приемника RI будет установлен только в том случае, если RB8=1.Эту особенность работы последовательного порта в режимах 2 и 3 можно использовать для организации межконтроллерного обмена следующим образом.Когда ведущая ОМЭВМ хочет передать блок данных одной из ведомых ОМЭВМ,она выдает в моноканал посылку с адресом ведомой, которой будет передан блок данных.Адресная посылка отличается от посылки с данными тем, что в адресной посылке 9-й битданных равен "1", а в посылке с данными "0".Таким образом, при SM2=1 ни одна ведомая ОМЭВМ не будет реагировать на посылку с данными, но все ведомые среагируют на адресную посылку.
Проанализировав полученный адрес, адресуемая ОМЭВМ сбрасывает свой бит SM2, а остальные оставляютего без изменения и вновь переходят к выполнению прерванной программы. После этоговедущая ОМЭВМ может начинать выдачу в моноканал блока данных, на посылки которого будет реагировать только ОМЭВМ у которой SM2=0.Бит SM2 никак не участвует в работе последовательного порта в режиме 0. В режиме 1 бит SM2 может использоваться для контроля правильности принятого стоп-бита: врежиме 1, если SM2=1, флаг прерывания приемника RI не будет установлен, если принятый стоп-бит не равен "1".2.3.4.
Структура прерыванийМеханизм прерываний в ОМЭВМ позволяет автоматически реагировать на внешние и на внутренние события (переполнение таймеров/счетчиков; завершение последовательного обмена). Алгоритм обработки прерывания при обнаружении запроса прерыванияпредставлен на рис.
2.21. На рис. 2.22 изображены все возможные источники прерывания.53нет запросаВыполнение программыесть запросУстановка флага прерыванияЗавершение текущей командыСохранение SP и PSWДаНетПрерываниене маскируется вIEНетЕстьобщее разрешениеEА=1?ДаНетПриоритетвыше текущего прерыванияВыполнение п/п прерыванияПродолжение текущей программыРис. 2.21. Алгоритм обработки прерывания.Каждое из внешних прерываний INT0, INT1 может быть активизировано по уровню("0") или по фронту (переход из "1" в "0") сигналов на выводах ОМЭВМ РЗ .2, РЗ. 3, чтоопределяется состоянием битов IT0 и IT1 регистра TCON.
При поступлении запросавнешнего прерывания INTx устанавливается флаг 1Ех регистра TCON. Установка флагов1Ех в регистре TCON вызывает соответствующее прерывание. Очистка флага 1Ех производится следующим образом: при прерывании по фронту 1Ех сбрасывается аппаратно (автоматически внутренними средствами ОМЭВМ) при обращении к соответствующей подпрограмме обработки прерывания; при прерывании по уровню флаг очищается при снятии запроса внешнего прерывания, то есть в 1Ех отслеживается состояние вывода INTx.Чтобы внешнее прерывание по уровню было распознано, необходимо, чтобы низкий уровень на выводе INTx удерживался в течение не менее 12 периодов сигнала тактовой частоты ОМЭВМ. Это объясняется тем, что проверка выводов ОМЭВМ INT0, INT1выполняется внутренними аппаратными средствами ОМЭВМ один раз в каждом машинном цикле.
В случае внешнего прерывания по фронту флаг 1Ех будет установлен, если двепоследовательные проверки входа INTx покажут в одном машинном цикле "1", а в следующем "0". Поэтому, если внешнее прерывание активизируется по переходу из состояния высокого уровня в состояние низкого уровня, то минимум одному машинному циклунизкого уровня должен предшествовать минимум один машинный цикл высокого уровняна выводе INTx. Если внешнее прерывание активизируется по уровню, запрос долженудерживаться до начала обслуживающей подпрограммы и сниматься до завершения этойподпрограммы для предотвращения повторного обслуживания.54Примечания.
1Т0, 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, IEl, TF0, TF1, RI, TI), могут бытьпрограммно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. Т. е. прерывания могут программно вызываться или ожидающие обслуживания прерывания могут программно ликвидироваться.
Кроме того, прерывания по INT0, INT1 могут вызываться программной установкой Р3.2=0 и РЗ.З=О, как показано в приведенном ниже примере:MAIN: MOV IE, #00000101B; разрешение прерывания от INT0, INT1.MOV IP, #04H; присвоение INT1 старшего приоритета.SET ЕА;общее разрешение прерывания.MOV РЗ; #11110011В; имитация внешних прерываний.SUBR: ORG013H; переход к подпрограмме обслуживания INT1.В предложенном примере запросы прерывания INT0 и INT1, имеющие различныйприоритет, поступают одновременно.
При этом обслуживается прерывание с высшимприоритетом.В случае, когда прерывание по INTx (x=0,l) вызывается уровнем сигнала на соответствующем входе ОМЭВМ, флаг IЕх (х=0,1) при переходе к подпрограмме обработкипрерывания автоматически сбрасывается, а затем, если соответствующий вывод ОМЭВМРЗ.2 или РЗ.3 все еще находится в состоянии логического "0", вновь устанавливается. По-55этому, в случае, когда прерывание по входам INT0, INT1 вызывается уровнем, программная установка в "1" флагов IE0, IE1 вызовет прерывание, после чего соответствующийфлаг 1Ех (х=0,1) будет автоматически сброшен при переходе к подпрограмме обработкипрерывания.Флаги IE0, IEl, TF0, TF1, RI, TI устанавливаются независимо от того разрешено илинет соответствующее прерывание в регистре IE.Структура приоритетов прерываний является двухступенчатой.