16 июля 2019 года    
Вторник | 16:42    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум



http://tuning-jeep.ru/toyota/fortuner/farkopy/ фаркоп на тойота фортунер.




Разделы / Всё о компьютерах / Контроллеры

Изучение таймера и последовательного порта.

Изучение таймера и последовательного порта.
 1.Краткие сведения

1.1.  Таймеры/счетчики микроконтроллера
 Микроконтроллер  I8051 Включает два независимых счетчика  TС0 и TС1.  Для
 управления режимом их работы служит регистр режима ТМОD
Содержимое счетчиков и регистра TMOD может быть в любой момент программно
изменено( н.п. командой  MOV TL0,data) или прочитано (н.п. командой  MOV 
А,TL0).Регистр режима  должен быть установлен до  фактического
использования счетчиков в прикладной  программе и задает  способ изменения
состояния счетчиков.   
Разряды   TMOD.6 и TMOD.2 (обозначаемые  как С/T 1 и С/T 0)  задают
сигналы, которые используются как счетные импульсы счетчиков TC1   и TC0
соответственно. Если  бит  С/Tх установлен в единицу (здесь и далее "х"
-номер счетчика), то содержимое счетчика инкрементируется под воздействием
перехода из  единицы в ноль внешнего входного сигнала подаваемого на вывод
микроконтроллера  Тх. Если С/Тх  сброшен, то содержимое счетчика меняется
в конце каждого машинного цикла, то есть через каждые 12 периодов резонато
ра.
 Изменение состояния счетчика блокируется, если разряд TRx  ( TCON.6 для
 ТС1 и TCON.4   для ТС0) сброшен, и разрешается  при TRx=1.  Кроме того 
 возможна блокировка счета внешним сигналом, подаваемым на вход INTx.
 Блокировка за счет внешнего сигнала разрешена, если разряд GATEx  (TMOD.7 
 для ТС1 и TCON.3   для ТС0) установлен в единицу. В этом случае ноль на
 входе INTx  блокирует счетчик, а единица - разрешает счет. Если GATEx=0,
 вход INTx не влияет на работу счетчика.
 За счет установки в регистре ТМОD  битов  0,1, 4 и 5 счетчики таймеров
 могут быть настроены на работу в следующих конфигурациях :
Режим 0 ( для ТС1    ТMOD.5=0, TMOD.4=0 ; для ТС0    ТMOD.1=0, TMOD.0=0)-
Счеткик/таймер разделен на две части TCHx и TCLx. На счетный вход TCLx
подаются  импульсы подлежащие счету, а вход переноса его пятого разряда
подается на счтный вход TCHx. Перенос из старшего разряда TCHx фиксируется
в TFx. Таким образом в структуре таймера, настроенного в режим 0
формируется 13 -битовый счетчик.  
Режим 1 ( для ТС1    ТMOD.5=0, TMOD.4=1 ; для ТС0    ТMOD.1=0, TMOD.0=1) -
подобен предыдущему, но перенос в ТСHx при переносе из старшего разряда
TCLx Таким образом в структуре таймера, настроенного в режим 1 
формируется 16 -битовый счетчик.  
Режим 2 ( для ТС1    ТMOD.5=1, TMOD.4=0 ; для ТС0    ТMOD.1=1, TMOD.0=0)-
режим автозагрузки. ТСНх не изменяется, а ТСLx работает в режиме счетчика,
но про его переполнении в него переписывается код из THx . Этот режим
особенно удобен в случаях необходимости взапуска какой либо программы с
наперед заданной частотой.
Режим 3 ( для ТС1    ТMOD.5=1, TMOD.4=1 ; для ТС0    ТMOD.1=1, TMOD.0=1)- 
для ТС1  означает его блокировку. Для ТС0 установка режима 3 эквивалентно
егл разделение на два независимых восьмиразрадных счетчика, причем работу
ТL0 определяют управляющие биты С/T0, GATE0, TR0,  а TH0 может работать
только в режиме подсчета машиных циклов с возможностью блокировки  битом
TR1.   При переполнении ТL0 устанавливается флаг ТF0,  а п ри переполнении
ТH0 устанавливается флаг ТF1.  Если TC0 установлен в режим 3, то TC1 

 может использоваться в любом другом  режиме, но при этом исключается
 иозможность управления  его счетом через бит TR1  и формирование запросов
 прерываний от TC1.
Флаги переполнения воздействуют на внутренний контроллер прерываний. Если
прерывания от  соответствующего таймера разрешены, и в данный момент нет
обслуживания прерывания более высокого приоритета, вызывается прграмма
обслеживания прерываний от таймера. Флаг переполнения сбрасывается
аппаратурно в момент перехода на программу обслуживания .

1.3. Последовательный порт
Последовательный порт микроконтроллеров семейства 8051 работает в
дуплексном режиме. Прием и передача могут осуществлятся одновременно. Узел
приемника порта автоматически обнаруживает на входе RXD  признак начала
передачи, преобразует последовательность  битов, поступающих на этот вход  
в байт данных  и размещает его в буфере приемника. После приема каждого
байта  устанавливается  бит окончания приема RI (  SCON.0), являющийся
сигналом запроса прерываний.  
После программной загрузки  данных в выходной буфер автоматически
начинается передача байта. Окончание передачи сигнализируется установкой в
единичное состояния флага ТI (SCON.1), что также является сигналом запроса
на прерывания.  Флаги запросов, чтобы разрешить очередной обмен через
порт, должна программно сбрасываться в программе обслуживания.
Буферы приемники и передатчики имеют одинаковый физический  адрес и
логоческое имя SBUF. Но в командах ввода под этим адресом подрезумеваеися
входной буфер порта, а в команандах  вывода -выходной.  Запросы  от
приемника и передатчика  используют общую линию запроса (по сушеству
выходы RI и TI объединены по логике "ИЛИ"). Для определения конкретной
причины прерывания программа обслуживания прерываний от порта должна
анализировать RI и TI.
Формат передачи по последовательному каналу, а значит и способ обнаружения
начала и конца посылки зависят от настройки, выполняемой путем загрузки
кода режима в регистр управления и статуса приемо-передатчика SCON.
 1.4. Некоторые особенности  обслуживания прерываний
После появления запроса, прерывания  от которого  разрешены, процессор  
по окончанию текущего программного цикла  записывает в стек адрес
следующей команды прерываемой программы.  На счетчик адреса команд
загружается адрес начала программы обслуживания прерываний.
 В микроконтроллерах семейства 8051 для программ обслуживания
 зафиксированы постоянные начальные адреса  ( см. далее таблицу). Если в
 системе возможно обслуживание нескольких прерываний, то программы
 обслуживания должны "обходить"   участки   программной памяти, 
 зафиксированные как начальные участки программ обслуживания других
 прерываний (используется команда JMP).  Всякая программа обслуживания
 прерываний должна оканчиваться командой RETI (возврат из прерываний) Это
  команда не только восстанавливает из с

тека состояние счетчика команд, соответствующее моменту начала
обслуживания прерываний (как и команда возврата из подпрограмм RET), но и
разрешает прерывания равного и низших приоритетов. 
Всякая прерывающая пргорамма должна обеспечить сохранение состояния
прерываемой программы. Осмновные подходы к реализации этих фугкций
обсуждены в описании работы №2. 
Допускаются вложенные прерывания - то есть программа обслуживания запроса 
может быть прервана для обслуживания другого запроса, имеющего более
высокий приоритет.  
Микроконтороллеры семейства 8051 имеют весьма гибкую систему управления
дисциплиной обслуживания запросов. Дисциплина определяется  состоянием
двух регистров управления запросами - регистр масок преваний   IE  и
регистр приоритетов прерываний IP. 
 Старший разряд регистра масок ( логическое имя EA либо IE.7) блокирует
 любые прерывния. Прочие биты осушествляют индивидуальную блокировку  и
 разрешения прерываний от различных источников ( 1 соответствует
 разрешению 0 - запрету прерываний).
 Если регистр приоритетов  IP обнулен, до для запросов  установлен
 следующий порядок приоритетов :
                                   IRO (высший) - TO - IR1 - T1- S INT  (
								    низший).
Однако,если в регистре  IP несколько разрядов установлены в единицу, то
 соответствующие запросы получают высший приоритет в сравнении с  любыми
 запросами, для которых разряды в IR находятся в нулевом состоянии. 
 Приоритеты запросов среди  отмеченных  одинаковым признаком
 приоритетности ( например единицами) порядок приоритетов соответствует
 вышеприведенномую 

 Изучение таймера и последовательного порта.
Лента новостей


2006 (c) Copyright Hardline.ru