русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Перевести таймер T0 в шестнадцатиразрядный режим работы ;


Дата добавления: 2015-08-06; просмотров: 956; Нарушение авторских прав


Синхронизироваться от внутреннего генератора ;

Запретить управление таймером от ножки INT0 ;||++-------------Перевести таймер T1 в тринадцатиразрядный режим ;|+----------------Синхронизироваться от внутреннего генератора ;+-----------------Запретить управление таймером от ножки INT1   ;Настроить таймер на генерацию 15-ти миллисекундного интервала времени------------------------------------ mov TH0, #HIGH(-15000) ;Загрузить старший байт таймера mov TL0, #LOW(-15000) ;Загрузить младший байт таймера OjidanTimer: jnb TF0, OjidanTimer ;Подождать пока не переполнится таймер   В рассмотренном примере переполнение таймера произойдЈт через 15000 циклов процессора, то есть через 15 мс. Программа будет постоянно проверять состояние флага переполнения таймера и как только он установится в единицу перейдЈт к выполнению следующей команды.   Нулевой и первый режимы работы таймеров T0 и T1 предназначены для формирования одиночного интервала времени. Если возникает необходимость формировать последовательность интервалов времени для периодических процессов, то загрузка регистров TH0 и TL0 для задания нужного интервала времени производится программно, что для коротких интервалов времени может привести к значительным затратам процессорного времени.   Для формирования последовательности одинаковых интервалов времени используется режим работы таймера с перезагрузкой - режим 2.   Режим 2   В режиме 2 регистр таймера TLx работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНх в регистр TLx. Переполнение регистра TLx не только устанавливает флаг TFx, но и загружает регистр TLx содержимым регистра ТНх, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНх. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема:     Работа с таймерами во втором режиме не отличается от рассмотренных ранее примеров, поэтому следующий пример инициализации таймера приводится без комментария.   mov TMOD,#2 ;перевести таймер T0 во второй режим работы, а T1 - в нулевой mov TH0, #-5000/256 ;Загрузить старший байт таймера mov TL0, #-(5000-5000/256) ;Загрузить младший байт таймера   Режим 3   Таймер 1 при работе в режиме 3 просто хранит свое значение. Эффект такой же как при сбросе бита TR1.   Таймер 0 в режиме 3 представляет собой два раздельных 8 битных счетчика (регистры TL0 и ТН0), Регистр TL0 использует биты управления таймера 0: С/Т0. GATE0, TR0 и TF0. Регистр ТН0 работает только в режиме таймера и использует биты TR1 и TF1 таймера 1. Таким образом, регистр ТН0 управляет прерыванием таймера 1. Логика работы таймера 0 в режиме 3 показана на схеме:     Работа таймера TL0 разрешается, если бит TR0 = 1, а таймера TH0 - если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен.   Этот режим работы позволяет реализовать два независимых таймера, если таймер 1 используется для работы последовательного порта, но надо сказать, что на практике мало интересен.   Управление таймерами-счЈтчиками.   Схема управления таймерами 0 и 1 идентична и приведена на рисунке:     Из схемы видно, что таймер может включаться и выключаться битами TRx. Есть возможность управлять работой таймера извне при помощи внешней ножки T0 для таймера T0 или T1 для таймера T1. Для этого необходимо записать в бит GATEx логическую единицу (не забыв при этом разрешить работу таймера при помощи бита TRx).   Кроме того таймер может синхронизироваться от внешнего генератора. Для этого в бит управления C/T нужно записать логическую единицу.   Биты включения таймеров TR0 и TR1 размещены в регистре TCON (control - управлять), а биты GATE и C/T в регистре TMOD. Формат регистра TCON приведЈн на следующем рисунке:     Рисунок 1. Формат регистра управления режимами работы таймеров TCON. Символ Позиция Имя и назначение TF1 TCON.7   Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера/счетчика. Сбрасывается при обслуживании прерывания аппаратно TR1 TCON.6   Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска/останова TF0 TCON.5   Флаг переполнения таймера 0. Устанавливается аппаратурно. Сбрасывается при обслуживании прерывания TR0 TCON.4   Бит управления таймера 0. Устанавливается / сбрасывается программой для пуска/останова таймера/счетчика IE1 TCON.3   Флаг фронта прерывания 1. Устанавливается аппаратно, когда детектируется срез внешнего сигнала INT1. Сбрасывается при обслуживании прерывания IT1 TCON.2   Бит управления типом прерывания 1. Устанавливается / сбрасывается программно для определения типа запроса прерывания INT1 (срезу/низким уровнем). IE0 TCON.1   Флаг фронта прерывания 0. Устанавливается по срезу сигнала INT0. Сбрасывается при обслуживании прерывания IT1 TCON .0   Бит управления типом прерывания 0. Устанавливается / сбрасывается программно для определения типа запроса прерывания INT0 (срез/низкий уровень)   Схема управления таймерами интересна тем, что позволяет использовать таймеры в качестве измерительных приборов.   Использование таймера в качестве измерителя ширины импульсов.   Известно, что измерение длительности импульса можно произвести, подсчитав импульсы эталонной частоты. Принцип измерения длительности импульсов иллюстрируется рисунком 8.   Для измерения длительности импульса измеряемый сигнал подаЈтся на вывод микроконтроллера INTx и в бит управления GATE записывается разрешающий сигнал логической единицы. Таймер/счЈтчик настраивается в режим таймера записью в бит C/Tx логического нуля. Содержимое таймера обнуляется.   Пример программы измерения длительности импульса приведЈн на рисунке 9.     Рисунок 8. Принцип измерения длительности импульсов   mov TMOD,#00001001b ;



|| ;



<== предыдущая лекция | следующая лекция ==>
Перевести таймер T0 в тринадцатиразрядный режим работы ; | Перевести таймер T0 в шестнадцатиразрядный режим ;


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.018 сек.