Регистр указателя стека
Регистр указателя стека SP МК51 восьмиразрядный. Он может адресовать любую область резидентной памяти данных. В отличие от микропроцессора К580ВМ80, в МК51 стек “растет вверх”, т.е. перед выполнением команды PUSH или CALL содержимое SP инкрементируется, после чего производится запись информации в стек. Соответственно при извлечении информации из стека регистр SP декрементируется после извлечения информации. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.
1.1.7. Таймеры/счетчики
Таймер/счетчик (Т/С) предназначен для подсчета внешних событий, формирования программно-управляемых временных задержек и выполнения времязадающих функций МК51. В состав Т/С входят:
1. Два 16-разрядных регистра T/C0 и T/C1;
2. Восьмиразрядный регистр режимов (TMOD);
3. Восьмиразрядный регистр управления (TCON);
4. Схема инкремента;
5. Схема фиксации , , T0 , T1;
6. Схема управления флагами;
7. Логика управления Т/C .
Регистры T/C0 и T/C1 состоят из пары 8-разрядных регистров. Регистр T/C0 состоит из ТН0 и ТL0, а регистр T/C1 - ТН1 и ТL1. Регистры ТН0 и ТН1 - старшие , а ТL0 и ТL1 - младшие . Каждый 8-разрядный регистр имеет свой адрес и может использоваться как РОН, если Т/С не используются.
Код величины начального счета заносится в Т/C программно. В процессе счета содержимое Т/C инкрементируется. Признаком окончания счета является переполнение регистра, т. е. переход из состояния все 1 в состояние все 0. Все регистры доступны для чтения и, при необходимости, контроль достижения заданной величины счета может выполняться программно.
Регистр режимов Т/C (TMOD) предназначен для приема и хранения кода, который определяет:
- один из 4-х режимов работы Т/C;
- работу в качестве таймера или счетчика;
- управление Т/C от внешнего вывода.
Обозначение разрядов регистра TMOD приведено в табл.1.4, а в табл.1.5 – их назначение.
Таблица 1.4. Обозначение разрядов TMOD
Номер разряда | ||||||||
Обозначение | GATE1 | C/T1 | M1.1 | M0.1 | GATE0 | C/T0 | M1.0 | M0.0 |
Таблица 1.5
Номер разряда | Обозначение | Назначение разрядов | Примечание |
1, 0 5, 4 | M1.0, M0.0 M1.1, M0.1 | Определяют один из 4-х режимов работы, отдельно для Т/С0 и Т/С1 | Все разряды TMOD устанавливаются программно: разряды 0…3 определяют режим работы Т/С0, разряды 4…7 – Т/С1 |
M1 | M0 | Режим | |
С/Т0 С/Т1 | Если разряды С/Т установлены в 0, то соответствующий Т/С работает в качестве таймера. При установке этих битов в 1 – в качестве счетчика внешних событий | ||
GATE0 GATE1 | Разрешает управление Т/С от внешнего вывода ( - для Т/С0, - для Т/С1) GATE = 0 – управление запрещено GATE = 1 – управление разрешено |
При работе в качестве таймера содержимое регистра Т/C инкрементируется в каждом машинном цикле, т. е. Т/C является счетчиком машинных циклов МК51 с частотой .
При работе в качестве счетчика внешних событий содержимое Т/C инкрементируется после перехода из 1 в 0 сигнала на счетном входе Т0 или Т1. Так для распознавания такого перехода требуется два машинных цикла, то максимальная частота счета равна
Чтобы уровень сигнала на счетном входе был гарантированно зафиксирован, он должен оставаться неизменным в течение одного машинного цикла.
Регистр управления (TCON)предназначен для приема и хранения кода управляющего слова. Флаги переполнения TF0 и TF1 устанавливаются при переполнении соответственно Т/C0 и Т/С1. Если при этом разрешено прерывание от соответствующего Т/C, то установка флага вызовет прерывание. Сбрасываются флаги аппаратно при передаче управления программе обработке соответствующего прерывания.
Обозначение разрядов регистра TCON приведено в табл. 1.6, а их назначение – в табл. 1.7.
Таблица 1.6. Обозначение разрядов регистра TCON
Номер разряда | ||||||||
Обозначение | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
Таблица 1.7. Назначение разрядов регистра TCON
Разряд | Имя | Назначение битов |
TCON.7 TCON.5 | TF1 TF0 | Флаги переполнения Т/С. Устанавливается аппаратно при переполнении Т/С. Сбрасывается при обслуживании прерывания. |
TCON.6 TCON.4 | TR1 TR0 | Биты управления Т/C. Если TR=0, то Т/C блокированы. При установке в единицу разрешен счет. |
TCON.3 TCON.1 | IE1 IE0 | Флаги запроса внешних прерываний. |
TCON.2 TCON.0 | IT1 IT0 | Биты установки фронта/уровня прерываний. Если IT=0 , то прерывание воспринимается по низкому уровню на входе INT. Если же IT=1 , то по срезу (переход из 1 в 0). |
Флаги TF0 и TF1 программно доступны и могут быть установлены/сброшены программой. Используя этот механизм, можно программно вызвать (установить TF) или отменить (сбросить TF) вызов подпрограммы прерываний.
Флаги IE0, IE1 устанавливаются аппаратно от внешних источников прерываний, подключенных к внешним выводам , . Кроме этого их можно установить программно. Установка флагов IE0, IE1 приведет к вызову подпрограммы обработки прерываний, сброс этих флагов выполняется аппаратно при обслуживании прерывания, только в том случае, если прерывание было вызвано срезом сигнала (IT=1). Если прерывание было вызвано уровнем сигнала (IT=0) на входе INT, то сброс флага IE осуществляется источником прерывания под управлением подпрограммы обработки прерываний.
Схема инкремента предназначена для увеличения на 1 содержимого Т/C, для которых разрешена работа в режиме таймера или счетчика внешних событий.
Схема фиксации , , T0, T1 представляет собой 4 триггера, в которые записывается информация с этих выводов МК51.
Схема управления флагами устанавливает или сбрасывает флаги переполнения Т/C и флаги запросов внешних прерываний.
Логика управления Т/C синхронизирует работу регистров Т/C в соответствии с запрограммированным режимом работы .
Режимы работы таймера/счетчика
Режим работы каждого Т/C определяется состоянием битов М0 и М1 в регистре TMOD. В режимах 0, 1 и 2 Т/C полностью независимы друг от друга. Причем, в этих режимах они функционируют одинаково. В режиме 3 работа Т/C0 и Т/C1 различна . При этом установка режима 3 в Т/C0 влияет на режим работы Т/C1.
Режим 0. В этом режиме Т/C функционируют как 8-ми разрядный счетчик, на входе которого стоит 5-ти разрядный предделитель. Предделитель образован 5 младшими разрядами регистра TL0 , а 8-разрядный счетчик - регистром ТН. Структурная схема Т/C в этом режиме показана на рис. 1.7.
Рис. 1.7. Структурная схема Т/C0 в режиме 0
Бит С/Т регистра TMOD определяет работу Т/C в качестве таймера (С/Т=0) или в качестве счетчика (С/Т=1). Бит TR регистра TCON разрешает счет (TR=1), если управляющий бит GATE (блокировка) равен 0 или на внешний вывод подан высокий уровень напряжения. Если же бит GATE установлен в 1, то в этом случае можно использовать таймер для измерения длительности импульсного сигнала, подаваемого на вход .
Режим 1 аналогичен режиму 0 , за исключением того, что доступны 16-разрядные Т/C. Структурная схема Т/C для этого режима показана на рис. 1.8.
Рис. 1.8. Структурная схема Т/C0 в режиме 1
В режиме 2 Т/C работает в качестве 8-ми разрядных счетчиков, построенных на основе регистров TL. Причем, при каждом переполнении, кроме установки флага TF в регистре TCON, автоматически происходит перезагрузка содержимого регистра ТН в регистр ТL. При этом содержимое регистра ТН не изменяется. Это обстоятельство позволяет использовать Т/С для задания скорости передачи данных через последовательный порт. Логику работы Т/C в этом режиме иллюстрирует рис. 1.9.
Рис. 1.9. Структурная схема Т/C1 в режиме 2
В режиме 3 Т/C0 и Т/C1 работают по разному. Т/C1 сохраняет неизменным свое текущее содержимое. Т.е. эффект такой же, как и при сбросе управляющего бита TR1 в нуль. Работу Т/C в режиме 3 иллюстрирует рис. 1.10.
Рис. 1.10. Структурная схема Т/C0 в режиме 3
В этом режиме TL0 и TН0 функционируют как два независимых 8-ми разрядных счетчика. Работу TL0 определяют управляющие биты C/T, GATE, TR, входной сигнал и флаг переполнения TF0. Работу TH0, который может выполнять только функцию таймера, определяет управляющий бит TR1. При этом TH0 использует флаг переполнения TF1.
Установка Т/C0 в режим 3 лишает Т/C1 бита включения TR1. Поэтому Т/C1 в режимах 0, 1 и 2 при GATE1=0 всегда включен и при переполнении в режимах 0 и 1 Т/C1 обнуляется, а в режиме 2 перезагружается , не устанавливая флаг. Управление от входов INT1, Т1, биты управления С/Т1, GATE для Т/C1 не зависят от режима Т/C0 .
Т/C1 аппаратно связан с блоком синхронизации последовательного интерфейса. При работе в режимах 0, 1 и 2 при переполнении Т/C1 всегда вырабатывается синхроимпульс последовательного интерфейса. Поэтому 3-й режим Т/C0 удобно применять тогда, когда требуется работа последовательного порта и двух таймеров или ПИ, таймера и счетчика.
Когда Т/C0 переведен в режим 3, Т/C1 можно выключить, переведя его также в режим 3, и использовать его с последовательным портом для выработки синхроимпульсов или в любых других приложениях, не требующих прерывания.
Дата добавления: 2015-09-11; просмотров: 1691;