F18-19 (1041602), страница 28
Текст из файла (страница 28)
Регистр управления Т/С (TCON) используется для включения Т/С 0 и 1, атакже для определения их состояния. Оба Т/С работают в одном из четырех основных режимов, задаваемыхбитами выбора режима M1-M0 регистра режима Т/С (TMOD). Каждый Т/С может быть настроен независимо отдругого.
В следующих разделах приведено подробное описание каждого режима работы.17.1.1. Режим 0: 13-разрядный таймер/счетчикВ режиме 0 Таймеры 0 и 1 работают как 13-разрядный таймер/счетчик. Ниже приводится описаниенастройки и функционирования Таймера 0. Однако, оба таймера идентичны, и Таймер 1 настраивается точнотак же, как и Таймер 0.Регистр TH0 содержит восемь старших бит 13-разрядного значения Т/С. Регистр TL0 содержит пятьмладших бит 13-разрядного значения Т/С в разрядах TL0.4-TL0.0.
Три старших бита регистра TL0 (TL0.7TL0.5) не определены и должны маскироваться или игнорироваться при чтении регистра TL0. Приинкрементировании 13-разрядного таймера и переполнении его из состояния 0x1FFF (все единицы) в состояние0x0000 устанавливается в 1 флаг переполнения таймера TF0 (TCON.5) и будет сгенерировано прерывание, еслионо разрешено.Бит C/T0 (TMOD.2) выбирает источник сигнала тактирования Т/С.
Сбросом бита C/T0 осуществляетсявыбор системного тактового сигнала в качестве входного сигнала тактирования таймера. Если бит C/T0установлен в 1, то инкремент регистра таймера осуществляется под воздействием перехода из 1 в 0 внешнегосигнала на выбранном входном выводе. (Подробная информация о выборе и настройке внешних выводовприведена в разделе 13.1.).121Ред. 1.2C8051F018C8051F019Установка в 1 бита TR0 (TCON.4) включит таймер, если либо бит GATE0 (TMOD.3) равен нулю, либона внешнем выводе /INT0 присутствует сигнал с высоким логическим уровнем.
После установки в 1 битаGATE0 управление таймером передается внешнему сигналу /INT0, что позволяет легко осуществлятьизмерение ширины импульсов.TR0GATE0/INT0Таймер/СчетчикХХ01ОтключенВключенОтключенВключен0Х101111X = не имеет значенияУстановка TR0 не сбрасывает регистр таймера.
Регистр таймера следует инициализироватьнеобходимым значением до включения таймера.TL1 и TH1 образуют 13-разрядный регистр Таймера 1 точно так же, как описано выше для регистровTL0 и TH0. Для настройки Таймера 1 и управления им используются соответствующие биты регистров TCON иTMOD таким же образом, как и для Таймера 0.Рисунок 17.1. Структурная схема Таймера 0 в режиме 0TMODCKCONTTT2 1 0MMM12GATE1C/T1T T1 1MM1 0GATE0C/T0T T0 0MM1 00SYSCLKT0Матрица01TCLKTR0TL0(5 бит)TH0(8 бит)TCON1TF1TR1TF0TR0IE1IT1IE0IT0ПрерываниеGATE0/INT0Матрица17.1.2.
Режим 1: 16-разрядный Таймер/СчетчикРежим 1 аналогичен режиму 0 с тем лишь исключением, что регистры Т/С используют все 16 бит.Таймеры/счетчики включаются и настраиваются в режиме 1 точно так же, как в режиме 0.Ред. 1.2122C8051F018C8051F01917.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.Рисунок 17.2. Структурная схема Таймера 0 в режиме 2CKCON12TMODGATE1TTT2 1 0MMMC/T1T T1 1MM1 0GATE0C/T0T T0 0MM1 00SYSCLKT0Матрица01TCLKTL0(8 бит)TCON1TR0GATE0/INT0123TH0(8 бит)МатрицаРед.
1.2ПерезагрузкаTF1TR1TF0TR0IE1IT1IE0IT0ПрерываниеC8051F018C8051F01917.1.4. Режим 3: Два 8-разрядных таймера/счетчика (только Таймер 0)В режиме 3 Таймер 0 и Таймер 1 функционируют различным образом. Таймер 0 настраивается как дваотдельных 8-разрядных таймера/счетчика TL0 и TH0. Для управления таймером/счетчиком TL0 используютсябиты управления/состояния Таймера 0 (в регистрах TCON и TMOD): TR0, C/T0, GATE0 и TF0.
В качествеисточника тактирования он может использовать либо системный тактовый сигнал, либо внешний входнойсигнал. Таймер/счетчик TH0 может использовать для тактирования только системный тактовый сигнал. Длявключения таймера/счетчика TH0 используется управляющий бит запуска Таймера 1 (TR1). Таймер/счетчикTH0 при переполнении устанавливает флаг переполнения Таймера 1 TF1 и, таким образом, управляетпрерыванием от Таймера 1.В режиме 3 Таймер 1 не активен, поэтому, если Таймер 0 используется в режиме 3, Таймер 1 можетбыть отключен путем перевода его в собственный режим 3 и включен путем выхода из режима 3.
Когда Таймер0 работает в режиме 3, Таймер 1 может работать в режимах 0, 1 или 2, но не может тактироваться внешнимисигналами, устанавливать флаг TF1 и генерировать прерывание. Однако, переполнение Таймера 1 можноиспользовать для генерации скорости передачи данных. В разделе 18 приведена информация о настройкеТаймера 1 для генерации скорости передачи данных.Рисунок 17.3. Структурная схема Таймера 0 в режиме 3CKCONTMODGATE1TTT2 1 0MMMC/T1T T1 1MM1 0GATE0C/T0T T0 0MM1 0TR1TH0(8 бит)0SYSCLK1T00C/T0TCON121МатрицаTL0TF1TR1TF0TR0IE1IT1IE0IT0ПрерываниеПрерывание(8 бит)TR0GATE0/INT0МатрицаРед. 1.2124C8051F018C8051F019Рисунок 17.4. TCON: Регистр управления Таймерами 0 и 1R/WTF1R/WTR1R/WTF0R/WTR0R/WIE1R/WIT1R/WIE0R/WIT0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0(доступен в битовомрежиме адресации)Значениепри сбросе:00000000SFR Адрес:0x88Бит 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.125Ред.
1.2C8051F018C8051F019Рисунок 17.5. TMOD: Регистр режима Таймеров 0 и 1R/WGATE1R/WC/T1R/WT1M1R/WT1M0R/WGATE0R/WC/T0R/WT0M1Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1R/WT0M0Бит 0Значениепри сбросе:00000000SFR Адрес:0x89Бит 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-разрядных таймера/счетчикаРед.
1.2126C8051F018C8051F019Рисунок 17.6. CKCON: Регистр управления тактированием Таймеров 0, 1 и 2R/WБит 7R/W-R/WT2MR/WT1MR/WT0MR/WЗарезерв.Бит 6Бит 5Бит 4Бит 3Бит 2R/WЗарезерв.Бит 1R/WЗарезерв.Бит 0Значениепри сбросе:00000000SFR Адрес:0x8EБиты 7-6: Не используются. Читаются как 00b.Бит 5:T2M: Выбор коэффициента деления системной тактовой частоты для Таймера 2.Этот бит определяет частоту сигнала тактирования Таймера 2. Бит T2Mигнорируется,если Таймер 2 работает в режиме генератора скорости передачи или в режиме счетчика(т.е. C/T2 = 1).0: Частота сигнала тактирования Таймера 2 равна 1/12 системной тактовой частоты.1: Частота сигнала тактирования Таймера 2 равна системной тактовой частоте.Бит 4:T1M: Выбор коэффициента деления системной тактовой частоты для Таймера 1.Этот бит определяет частоту сигнала тактирования Таймера 1.0: Частота сигнала тактирования Таймера 1 равна 1/12 системной тактовой частоты.1: Частота сигнала тактирования Таймера 1 равна системной тактовой частоте.Бит 3:T0M: Выбор коэффициента деления системной тактовой частоты для Таймера 0.Этот бит определяет частоту сигнала тактирования Таймера/счетчика 0.0: Частота сигнала тактирования Таймера/Счетчика 0 равна 1/12 системной тактовойчастоты.1: Частота сигнала тактирования Таймера/Счетчика 0 равна системной тактовой частоте.Биты 2-0: Зарезервированы.