Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
01.05.2014
Размер:
81.41 Кб
Скачать

Дабораторнаяаботы № 3

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

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.

Используемый в настоящем цикле лабораторных работ моделировщик не воспроизводит реальных временных соотношений сигналов, поступающих на вход последовательного порта RXD и формируемых микроконтроллером при выходе на линии TXD. Моделируется только реакция системы на окончание передачи одного байта данных. Состояние битов управления режимом регистра управления и статуса последовательного порта SCON не влияют на результат моделирования.

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

Для "подключения" источника к входу последовательного порта следует, находясь в командном окне моделировщика, выполнить следующее

а. Выбрать пункт " IO" главного меню симулятора

б. выбрать функцию "Open" подменю

в. На запрос "IO input file" Задать имя файла входных данных в строке "Enter file name" ( имя определено в п.3.5)

г. на возникший запрос "reply file after EOF" ( повтор входной последовательности после окончания) выбрать "YES"

д. на запрос "IO output file" нажать "Enter" ( временный отказ)

е. на запрос "IO Trigger" ( cпособ синхронизации) выбрать "Cycles" ( задает изменение входа c через заданное число машинных циклов микроконтроллера) и на последующий запрос "IO RATE" задать время между вводом двух последовательных байтов данных. Этот период должен быть не меньше чем время обработки предыдущего байта данных.

ж. на запрос "IO Transfer" определить формат входных данных (выбрать mapByte) и затем задать в качестве адреса для ввода SBUF.

Тогда после запуска процедуры моделирования через каждое заданное число циклов в SBUF заносится новое значение и одновременно устанавливается флаг RI.

Подключение файла регистратора к передатчику микроконтроллера вообще не отличается от подобной операции для параллельного порта ( см. лаб.раб 1 и 2) - следует только задать в качестве адреса подключения SBUF. Прерывания от передатчика последовательного порта моделировщик не воспроизводит. Поэтому чтобы правильно смоделировать процессы при выводе данных через последовательный порт при выполнении работ рекомендуется вслед за командой вывода данных на последовательный порт ( например MOV SBUF,A ) разместить

"фиктивную " команду загрузки неиспользуемого в данной работе таймера ( путь это Т1)кодом, соответствующим реальному времени выдачи данных через этот порт. Программа, запускаемая по прерыванию ТF1 должна блокировать прерывание от таймера командой CLR ET1 и установить в единицу бит ТI, чем, собственно и моделируется сигнал об окончании процесса вывода данных через порт. После этого выполняется возврат в главную программу

В зависимости от требований к программе и соответствующих настроек возможен запуск программ взаимодействия с последовательным портом либо за счет периодического опроса состояния флагов ТI и RI, либо с использованием прерываний.

Следует заметить , что фрагмент программы, выполняемой для вывода новых данных или приема и обработки входных данных должен содержать команду сброса флага TI, а программа приема и обработки входных данных должна содержать команду сброса флага RI. Аппаратных средств сброса TR и TI( в отличие от других источников запросов) в структуре микроконтроллера не имеется.

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