- •Часть 1. Изучение интегрированной системы mcStudio
- •Порядок работы с интегрированной системой mcStudio
- •Запуск интегрированной системы mcStudio
- •2. Написание программы на языке Ассемблер
- •Визуализация контролируемых ресурсов микроконтроллера
- •4. Выполнение симуляции программы
- •8. Некоторые дополнительные возможности mcStudio
- •5. Создание и отладка новой программы
- •6. Загрузка ранее созданной программы
- •7. Выход из интегрированной системы mcStudio
- •Часть 2. Изучение команд передачи данных
- •Задание
- •Оформление программы
- •Контрольные вопросы
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 3 Реализация функций времени. Часть 1 Введение
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 4 Реализация функций времени. Часть 2 Введение
- •Задание
- •Контрольные вопросы
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 6 Программирование последовательного порта микроконтроллера Введение
- •Задание
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •Особенности использования демонстрационной версии интегральной системы mcStudio
- •Библиографический список
Лабораторная работа № 3 Реализация функций времени. Часть 1 Введение
В данной работе предполагается изучить программные реализации функций времени в виде временных задержек, подсчета числа событий, измерения временных интервалов и частоты следования импульсов.
Современные микроконтроллеры в качестве функционального узла имеют таймер-счетчик (Т/С). Этот узел может работать в качестве таймера, когда требуется задать временной интервал, или в качестве счетчика, когда требуется вести счет внешних событий. В микроконтроллерах семейства MCS51 имеется не менее 2-х таймеров-счетчиков, с помощью которых удобно реализовывать функции времени.
Функция таймера состоит в счете внутренних машинных циклов, следующих с частотой Fosc/12, где Fosc - тактовая частота микроконтроллера. Функция счетчика заключается в подсчете числа переходов из 1 в 0 на соответствующих входах. Для Т/C0 это вход Т0 (Р3.4), а для Т/C1 – T1 (Р3.5).
Каждый Т/С состоит из двух 8-разрядных регистров–счетчиков, которые могут путём выбора режима работы объединяться в единые 16-, 13-разрядные счетчики или работать независимо, взаимодействуя между собой для обеспечения предусмотренных режимов работы. При объединении в единый 16-разрядный регистр при каждом переполнении (переход из состояния все единицы в состояние все нули) в младшем регистре TL содержимое старшего регистра TH увеличивается на 1.
Управление Т/С осуществляется через 8-разрядные регистры TMOD и TCON. Регистр TMOD позволяет задать режим работы, а регистр TCON – запретить счет и зафиксировать возникшее переполнение.
Назначение разрядов (флагов) управляющего регистра TMOD приведено в табл. 1.
GATE – бит разрешения блокировки (выключения) таймера/счётчика Т/С1 (Т/С0) от вывода /INT1 (/INT0), GATE = 1 – блокировка разрешена, GATE = 0 – запрещена.
С/Т – бит определения режима таймера (от внутреннего источника сигналов синхронизации), если C/T = 0 или счетчика событий на внешних входах Т1 (Т0), если C/T = 1 .
Таблица 1
Регистр TMOD
Режим для T/C1 |
Режим для T/C0 |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
GATE1 |
C/T1 |
M1.1 |
M0.1 |
GATE0 |
C/T0 |
M1.0 |
M0.0 |
Таблица 2
Режим
0
1
2
3
М1
0
0
1
1
М0
0
1
0
1
Ml, M0 – биты-указатели режимов (отдельно для Т/С1 и Т/С0). Значение номера режима от комбинации битов приведено в табл. 2.
Все биты регистра TMOD устанавливаются программно.
Назначение разрядов (флагов) управляющего регистра TCON приведено в табл. 3.
Таблица 3
Регистр TCON
Управление T/C |
Управление внешними прерываниями |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TF1 |
TR1 |
TF0 |
TR.0 |
IE1 |
IT1 |
IE0 |
IT0 |
TF1 (TF0) – флаг переполнения Т/С1 (Т/С0), который вызывает запрос прерывания. При подтверждении прерывания сбрасывается.
TR1 (TR0) – бит включения Т/С1 (Т/С0). TR = 1 – Т/С включен, TR = 0 – выключен. Бит устанавливается и сбрасывается программно.
IE1 (IE0) – флаг запроса внешнего прерывания /INT1 (/INT0). Устанавливается по срезу сигнала /INT1 (INT0). При подтверждении прерывания сбрасывается.
IT1 (IT0) – бит управления типом прерывания по входу /INT1 (/INT0): по срезу или по уровню. IT = 1 – прерывание по переходу из 1 в 0, IT = 0 – прерывание по статическому уровню 0. Бит устанавливается и сбрасывается программно.
Режимы работы Т/С определяются значениями битов М0, Ml в регистре TMOD. Каждый Т/С работает в четырех режимах (0, 1, 2, 3). Режимы 0, 1, 2 для обоих Т/С независимы и одинаковы. В режиме 3 работа Т/С0 и Т/С1 различна, при этом установка режима 3 в Т/С0 влияет на режим работы Т/С 1.
Режим 0 Т/С устанавливается, когда биты-указатели режима M1 и M0 находятся в нулевом состоянии. В режиме 0 Т/С представляет собой функциональный аналог Т/С микросхемы КР1830ВЕ48, в которой Т/С состоит из программно-недоступного делителя на 32 (5 разрядов) и 8-разрядного счетчика. В микроконтроллере КР183ОВЕ51 установка режима 0 превращает Т/С в 13-разрядный счетчик: 5 разрядов TL0 и 8 разрядов TН0 образуют Т/С0, 5 разрядов TL1 и 8 разрядов ТН1 образуют Т/С1.Таким образом, в этом режиме функцию делителя на 32 выполняют счетчики – регистры TL0 и TL1.
Бит С/Т регистра TMOD определяет работу Т/С в качестве таймера
(С/Т = 0) или в качестве счетчика (С/Т = 1). Счет начинается при установке бита TRi (TR0 или TR1 в зависимости от выбранного Т/С; буква i в имени бита, входа, регистра означает 0 или 1 в зависимости от выбора) регистра TCON в состояние 1.
При необходимости управления счетом извне бит GATE регистра, TMOD устанавливается в состояние 1. Если на входе /INT1 устанавливается состояние 1, то при условии, когда разряд TR1 = 1, счет будет разрешен, если же установлено состояние 0, то счет будет запрещен. Установкой разряда TR1 в нулевое состояние Т/С1 выключается независимо от состояния других битов. Таким образом осуществляется управление Т/С1 внешним сигналом. Аналогично управляется внешним сигналом Т/С0 для этого используется вход INT0 и установка соответствующего бита GATE в регистре TMOD для Т/С0.
При работе Т/С в режиме таймера инкрементирование происходит в каждом машинном цикле. Частота счета в этом случае равна Fosc/12. При работе Т/С в режиме счетчика инкрементирование происходит при обнаружении на счетном входе Т/С перехода из состояния 1 в состояние 0. Так как фиксация состояния входа осуществляется в каждом машинном цикле один раз, то для обнаружения на входе T/С перехода из состояния 1 в 0 требуется два машинных цикла. Таким образом, максимальная частота счета в режиме счетчика равна Fosc/24.
При переполнении Т/С в регистре TCON устанавливается флаг TF (TF0 при переполнении Т/С0 и TF1 при переполнении Т/С1), содержимое Т/С при переполнении обнуляется.
Режим 1 устанавливается при условии, когда Ml = 0, M0 = 1. Режим 1 аналогичен режиму 0. Отличие состоит только в том, что установка режима 1 превращает Т/С в 16-разрядные регистры, состоящие из программно доступных пар регистров TLi, THi. Для Т/С0 значение i = 0, для Т/С1 значение i = 1.
Режим 2 (Ml = 1, M0 = 0) имеет особенность, состоящую в том, что в этом режиме работы каждый Т/С представляет собой 8-разрядный регистр TLi, автоматически перезагружаемый содержимым из регистра THi при каждом переполнении регистра Tli. При этом при каждом переполнении устанавливается флаг TFi в регистре TCON. Назначение входных битов управления в режиме 2 такое же, как в режиме 0. Предварительная загрузка регистров THi константами от 00 до FF позволяет программно формировать задержку установки флагов TFi (от момента включения Т/С) в диапазоне изменения коэффициента счета от FF до 00.
Режим 3 (Ml = 1, М0 = 1) характерен тем, что в этом режиме Т/С1 заблокирован (остановлен). Он сохраняет содержимое регистров TL1, TH1 независимо от состояния своих битов управления. В этом режиме Т/С1 может быть использован в качестве двух РОН. В режиме 3 регистры ТL0 и ТН0 работают независимо друг от друга. Регистр TL0 сохраняет за собой все входные биты управления Т/С0 и реагирует на воздействия по входам Т0, /INT0. При переполнении регистра TL0 устанавливается флаг TF0. Регистр ТН0 может работать только в режиме таймера. Он использует бит включения TR1, при переполнении устанавливает флаг TF1. Других битов управления регистр ТН0 в этом режиме не имеет.
Установка Т/С0 в режим 3 лишает Т/С1 бита включения TR1. Поэтому Т/С1 в режимах 0,1,2 при GATE1 = 0 всегда включен и при переполнении в режимах 0 и 1 Т/С1 обнуляется, а в режиме 2 перезагружается, не устанавливая флаг. Управление от входов /INT1, Т1, биты управления С/Т1, GATE1 для Т/С1 не зависят от режима Т/С0.
Т/С1 аппаратно связан с блоком синхронизации последовательного интерфейса. При работе в режимах 0, 1, 2 при переполнении Т/С1 всегда вырабатывает импульс тактирования последовательного интерфейса. Поэтому 3-й режим Т/С0 удобно применять тогда, когда требуется работа последовательного интерфейса и двух таймеров или последовательного интерфейса, таймера и счетчика.
Когда Т/С0 переведен в режим 3, Т/С1 можно выключить, переведя его также в режим 3, использовать с последовательным портом для выработки импульсов тактирования или в любых других приложениях, не требующих прерывания.
