F60-67 (1041605), страница 53
Текст из файла (страница 53)
0. Могут подсчитываться импульсы с частотой до 1/4системной тактовой частоты. Входной сигнал не обязательно должен быть периодическим, однако он долженудерживаться на заданном уровне как минимум в течение двух полных системных тактовых циклов, чтобыгарантировать его корректную выборку.24.1. Таймер 0 и Таймер 1Каждый таймер реализован в виде 16-разрядного регистра, доступного как два отдельных байта:младший байт (TL0 или TL1) и старший байт (TH0 или TH1). Регистр управления Т/С (TCON) используется длявключения Таймера 0 и Таймера 1, а также для индикации их состояния. Прерывания от Таймера 0 можновключить установкой в 1 бита ЕТ0 в регистре IE (см.
раздел «13.3.5 Описание регистра прерываний»);прерывания от Таймера 1 можно включить установкой в 1 бита ЕТ1 в регистре IE (см. раздел 13.3.5). Обатаймера/счетчика работают в одном из четырех основных режимов, задаваемых битами выбора режима Т1M1Т0M0 в регистре режима Т/С (TMOD). Каждый Т/С может быть настроен независимо от другого.24.1.1. Режим 0: 13-разрядный таймер/счетчикВ режиме 0 Таймеры 0 и 1 работают как 13-разрядный таймер/счетчик. Ниже приводится описаниенастройки и функционирования Таймера 0.
Однако, оба таймера идентичны, и Таймер 1 настраивается точнотак же, как и Таймер 0.Регистр TH0 содержит восемь старших бит 13-разрядного значения регистра Т/С. Регистр TL0содержит в разрядах TL0.4-TL0.0 пять младших бит 13-разрядного значения регистра Т/С. Три старших битарегистра TL0 (TL0.7-TL0.5) не определены и должны маскироваться или игнорироваться при чтении регистраTL0. При инкрементировании 13-разрядного таймера и переполнении его из состояния 0x1FFF (все единицы) всостояние 0x0000 устанавливается в 1 флаг переполнения таймера TF0 (TCON.5) и будет сгенерированопрерывание, если оно разрешено.Бит C/T0 (TMOD.2) выбирает источник сигнала тактирования Т/С0.
Если бит C/T0 установлен в 1, тоинкрементирование регистра таймера осуществляется под воздействием перехода внешнего сигнала навыбранном входном выводе (Т0) из состояния лог. 1 в состояние лог. 0. (Подробная информация о выборе инастройке внешних выводов приведена в разделе 18.1.). Если бит C/T0 сброшен в 0, то в качестве источникатактирования Т/С0 будет использоваться сигнал, определяемый битом Т0М (CKCON.3). Если бит Т0М287Ред. 1.2C8051F060/1/2/3/4/5/6/7установлен в 1, то Таймер 0 тактируется системным тактовым сигналом.
Если бит Т0М сброшен в 0, то вкачестве источника тактирования Т/С0 будет использоваться сигнал, определяемый битами настройкипредварительного делителя в регистре CKCON (см. рис. 24.6).Установка в 1 бита TR0 (TCON.4) включит таймер, если либо бит GATE0 (TMOD.3) равен нулю, либона внешнем выводе /INT0 присутствует сигнал с высоким логическим уровнем. После установки в 1 битаGATE0 управление таймером передается внешнему сигналу /INT0 (см. раздел 13.3.5), что позволяет легкоосуществлять измерение ширины импульсов.TR0GATE0/INT0Таймер/СчетчикХХ01ОтключенВключенОтключенВключен0Х101111X = не имеет значенияУстановка TR0 не сбрасывает регистр таймера.
Регистры таймера следует инициализироватьнеобходимыми значениями до включения таймера.TL1 и TH1 образуют 13-разрядный регистр Таймера 1 точно так же, как описано выше для регистровTL0 и TH0. Для настройки Таймера 1 и управления им используются соответствующие биты регистров TCON иTMOD таким же образом, как и для Таймера 0. Входной сигнал /INT1 используется совместно с Таймером 1.Рисунок 24.1. Структурная схема Таймера 0 в режиме 0CKCONTT1 0MMТактовый сигнал свыхода предделителяTMODSSCCAA1 0GATE1C/T1T TG1 1 AMM T1 0 E0C/T0T T0 0MM1 000SYSCLK11TCLKTR0МатрицаGATE0TL0(5 бит)TH0(8 бит)TCONT0TF1TR1TF0TR0IE1IT1IE0IT0Прерывание/INT0Ред.
1.2288C8051F060/1/2/3/4/5/6/724.1.2. Режим 1: 16-разрядный Таймер/СчетчикРежим 1 аналогичен режиму 0 с тем лишь исключением, что регистры Т/С используют все 16 бит.Таймеры/счетчики включаются и настраиваются в режиме 1 точно так же, как в режиме 0.24.1.3. Режим 2: 8-разрядный таймер/счетчик с перезагрузкойВ режиме 2 Таймеры 0 и 1 настраиваются для работы в качестве 8-разрядных таймеров/счетчиков савтоматической перезагрузкой начального значения.
Регистр TL0 содержит значение счетчика, а регистр TH0содержит перезагружаемое значение. Когда счетчик в регистре TL0 переполняется (переходит из состояния0xFF в состояние 0х00), флаг переполнения таймера TF0 (TCON.5) устанавливается в 1 и значение регистраTH0 загружается в регистр TL0. При установке флага TF0 будет сгенерировано прерывание, если оноразрешено. Перезагружаемое значение в регистре TH0 не изменяется. Чтобы первый отсчет был корректным,необходимо проинициализировать регистр TL0 требуемым значением до включения таймера. Таймер 1 врежиме 2 работает точно так же, как Таймер 0.В режиме 2 оба Т/С включаются и настраиваются точно так же, как и в режиме 0. Установка в 1 битаTR0 (TCON.4) включит таймер, если либо бит GATE0 (TMOD.3) равен нулю, либо на внешнем выводе /INT0присутствует сигнал с низким логическим уровнем.Рисунок 24.2.
Структурная схема Таймера 0 в режиме 2CKCONTT1 0MMТактовый сигнал свыхода предделителяTMODSSCCAA1 0GATE1C/T1T TG1 1 AMM T1 0 E0C/T0T T0 0MM1 000SYSCLK11T0МатрицаTL0(8 бит)TCONTCLKTR0GATE0TH0(8 бит)/INT0289Ред. 1.2ПерезагрузкаTF1TR1TF0TR0IE1IT1IE0IT0ПрерываниеC8051F060/1/2/3/4/5/6/724.1.4. Режим 3: Два 8-разрядных таймера/счетчика (только Таймер 0)В режиме 3 Таймер 0 функционирует как два отдельных 8-разрядных таймера/счетчика TL0 и TH0.Для управления таймером/счетчиком TL0 используются биты управления/состояния Таймера 0 (в регистрахTCON и TMOD): TR0, C/T0, GATE0 и TF0.
В качестве источника тактирования ТL0 может использовать либосистемный тактовый сигнал, либо внешний входной сигнал. Таймер/счетчик TH0 может использовать длятактирования либо системный тактовый сигнал, либо сигнал с выхода предварительного делителя. Длявключения таймера/счетчика TH0 используется управляющий бит запуска Таймера 1 (TR1). Таймер/счетчикTH0 при переполнении устанавливает флаг переполнения Таймера 1 TF1 и, таким образом, управляетпрерыванием от Таймера 1.В режиме 3 Таймер 1 не активен. Если Таймер 0 функционирует в режиме 3, то Таймер 1 можетработать в режимах 0, 1 или 2, но не может тактироваться внешними сигналами, устанавливать флаг TF1 игенерировать прерывание.
Однако, переполнение Таймера 1 можно использовать для генерации скоростипередачи данных для модулей SMBus и/или УАПП, а также для запуска АЦП. Пока Таймер 0 функционирует врежиме 3, управление запуском Таймера 1 осуществляется путем настройки режима его работы. Чтобызапустить Таймер 1 в то время, когда Таймер 0 функционирует в режиме 3, необходимо установить дляТаймера 1 режим работы 0, 1 или 2. Чтобы отключить Таймер 1, необходимо настроить его на работу врежиме 3.Рисунок 24.3. Структурная схема Таймера 0 в режиме 3CKCONT T1 0MMТактовый сигнал свыхода предделителяSYSCLKTMODSSCCAA1 0GATE1C/T1T T1 1MM1 0GATE0C/T0T T0 0MM1 00TR1TH0(8 бит)1TCON0TF1TR1TF0TR0IE1IT1IE0IT0ПрерываниеПрерывание1T0TL0(8 бит)МатрицаTR0GATE0/INT0Ред.
1.2290C8051F060/1/2/3/4/5/6/7Рисунок 24.4. TCON: Регистр управления Таймерами 0 и 1R/WTF1R/WTR1R/WTF0R/WTR0R/WIE1R/WIT1R/WIE0R/WIT0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес: 0x88(доступен в битовом SFR страница: 0режиме адресации)Бит 7: TF1: Флаг переполнения Таймера 1.Устанавливается аппаратно при переполнении Таймера 1. Сбрасывается аппаратно припереходе к процедуре обслуживания прерывания от Таймера 1, но может быть сброшен ипрограммно.0: Переполнения Таймера 1 не обнаружено.1: Таймер 1 переполнился.Бит 6: TR1: Управление запуском Таймера 1.0: Таймер 1 отключен.1: Таймер 1 включен.Бит 5: TF0: Флаг переполнения Таймера 0.Устанавливается аппаратно при переполнении Таймера 0.
Сбрасывается аппаратно припереходе к процедуре обслуживания прерывания от Таймера 0, но может быть сброшен ипрограммно.0: Переполнения Таймера 0 не обнаружено.1: Таймер 0 переполнился.Бит 4: TR0: Управление запуском Таймера 0.0: Таймер 0 отключен.1: Таймер 0 включен.Бит 3: IE1: Внешнее прерывание 1.Этот флаг аппаратно устанавливается в 1 при обнаружении активного фронта/уровня(определяется битом IT1) внешнего сигнала. Может быть сброшен программно, но припереходе к процедуре обслуживания внешнего прерывания 1 сбрасывается аппаратно, еслиIT1=1. При IT1=0 этот флаг является инверсией логического уровня входного внешнегосигнала /INT1.Бит 2: IT1: Выбор типа внешнего прерывания 1.Этот бит определяет, какое событие будет вызывать внешнее прерывание 1: срез или низкийуровень внешнего сигнала /INT1.0: Внешнее прерывание 1 вызывается низким уровнем сигнала /INT1.1: Внешнее прерывание 1 вызывается срезом сигнала /INT1.Бит 1: IE0: Внешнее прерывание 0.Этот флаг аппаратно устанавливается в 1 при обнаружении активного фронта/уровня(определяется битом IT0) внешнего сигнала.
Может быть сброшен программно, но припереходе к процедуре обслуживания внешнего прерывания 0 сбрасывается аппаратно, еслиIT0=1. При IT0=0 этот флаг является инверсией логического уровня входного внешнегосигнала /INT0.Бит 0: IT0: Выбор типа внешнего прерывания 0.Этот бит определяет, какое событие будет вызывать внешнее прерывание 0: срез или низкийуровень внешнего сигнала /INT0.0: Внешнее прерывание 0 вызывается низким уровнем сигнала /INT0.1: Внешнее прерывание 0 вызывается срезом сигнала /INT0.291Ред.
1.2C8051F060/1/2/3/4/5/6/7Рисунок 24.5. TMOD: Регистр режима Таймеров 0 и 1R/WGATE1R/WC/T1R/WT1M1R/WT1M0R/WGATE0R/WC/T0R/WT0M1Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1R/WT0M0Бит 0Значениепри сбросе:00000000SFR Адрес: 0x89SFR страница: 0Бит 7: GATE1: Управление блокировкой Таймера 1.0: Таймер 1 включен, если TR1 = 1, независимо от логического уровня на входе /INT1.1: Таймер 1 включен только тогда, когда TR1 = 1 и на входе /INT1 высокий уровень.Бит 6: C/T1: Выбор режима таймера или счетчика для Т/С1.0: Т/С1 работает как таймер: Таймер 1 инкрементируется от внутреннего сигналатактирования, который задается битом T1M (CKCON.4).1: Т/С1 работает как счетчик: Таймер 1 инкрементируется под воздействием перехода из 1 в 0внешнего входного сигнала (T1).Биты 5-4: T1M1-T1M0: Выбор режима работы Таймера 1.Эти биты определяют режим работы Таймера 1.T1M10011T1M00101РежимРежим 0: 13-разрядный таймер/счетчикРежим 1: 16-разрядный таймер/счетчикРежим 2: 8-разрядный таймер/счетчик с автоперезагрузкойРежим 3: Таймер 1 не активен/остановленБит 3: GATE0: Управление блокировкой Таймера 0.0: Таймер 0 включен, если TR0 = 1, независимо от логического уровня на входе /INT0.1: Таймер 0 включен только тогда, когда TR0 = 1 и на входе /INT0 высокий уровень.Бит 2: C/T0: Выбор режима таймера или счетчика для Т/С0.0: Т/С0 работает как таймер: Таймер 0 инкрементируется от внутреннего сигналатактирования, который задается битом T0M (CKCON.3).1: Т/С0 работает как счетчик: Таймер 0 инкрементируется под воздействием перехода из 1 в 0внешнего входного сигнала (T0).Биты 1-0: T0M1-T0M0: Выбор режима работы Таймера 0.Эти биты определяют режим работы Таймера 0.T0M10011T0M00101РежимРежим 0: 13-разрядный таймер/счетчикРежим 1: 16-разрядный таймер/счетчикРежим 2: 8-разрядный таймер/счетчик с автоперезагрузкойРежим 3: Два 8-разрядных таймера/счетчикаРед.