Д. В. Андреев Программирование микроконтроллеров mcs-51
Вид материала | Учебное пособие |
Регистры TH0, TL0, TH1, TL1 Регистр SBUF |
- Руководитель магистерской программы по направлению «Телекоммуникации» профессор, 75.17kb.
- Методика испытания на радиационную стойкость микроконтроллеров с архитектурой mcs-51, 32.31kb.
- Лабораторный комплекс на основе внутрисхемного эмулятора микроконтроллеров стандарта, 78.16kb.
- Семейство mcs-51 фирмы Intel как представитель 8-разрядных микроконтроллеров. Обобщенная, 64.27kb.
- Лекция № " Система команд микроконтроллеров семейства mcs-51.", 76.63kb.
- Методическое обеспечение базовой лабораторной работы практикума «Изучение работы, 244.09kb.
- Нию сроков активного существования микроконтроллеров atmega128 в условиях дозовых воздействий, 11.73kb.
- Комплекс средств для создания программного обеспечения процессорных модулей, реализованных, 22.6kb.
- Ходимы для реализации в составе «систем на кристалле» блоков управления, спроектированных, 48.74kb.
- Дипломная работа, 704.98kb.
Регистры TH0, TL0, TH1, TL1 (Timer/counter Low (High) byte). Исходное (текущее) состояние j-го таймера/счетчика T/Cj в микроконтроллере определяется (отражается) программно доступными регистрами THj, TLj. Причем регистр THj - старшие, а регистр TLj - младшие 8 разрядов. Указанные регистры могут быть программно прочитаны или загружены как при выключенных, так и при работающих таймерах/счетчиках. Новая загрузка THj, TLj сразу же означает новую величину с которой будет начат счет в T/Cj, а старая теряется. Если загрузка произведена при включенном T/Cj, то счет продолжается с новой величины. Очередность загрузки регистров THj, TLj произвольная. Выключение T/Cj не искажает код, находящийся в THj, TLj. Таймер/счетчик T/Cj можно выключить, через произвольное время вновь включить и счет начнется с той величины, которая была в регистрах THj, TLj на момент выключения.
Регистр TCON (Timer/counter Control). Наименование и назначение разрядов регистра TCON приведены в табл.2.3. Все разряды этого регистра доступны по записи и по чтению.
Таблица 2.3
Биты | Наименование | Назначение |
7 | TF1 | Флаг переполнения T/C1. |
6 | TR1 | Бит включения T/C1. TR1=1 - включен, TR1=0 - выключен. |
5 | TF0 | Флаг переполнения T/C0. |
4 | TR0 | Бит включения T/C0. TR0=1 - включен, TR0=0 - выключен. |
3 | IE1 | Флаг запроса внешнего прерывания . |
2 | IT1 | Бит, определяющий вид прерывания . IT1=0 - прерывание по уровню (низкому), IT1=1 - прерывание по фронту (переход из"1" в "0"). |
1 | IE0 | Флаг запроса внешнего прерывания . |
0 | IT0 | Бит, определяющий вид прерывания . IT0=0 - прерывание по уровню (низкому), IT0=1 - прерывание по фронту (переход из"1" в "0"). |
Флаг TFj аппаратно устанавливается в "1" при переходе T/Cj из состояния "все единицы" в состояние "все нули". Если прерывание от T/Cj разрешено, то установка флага TFj вызовет прерывание. Бит TFj аппаратно сбрасывается в "0" при обращении к подпрограмме обработки прерывания. Флаг IEj аппаратно устанавливается в "1" от внешнего прерывания : от низкого уровня или перехода из "1" в "0" сигнала прерывания. Если при этом внешнее прерывание разрешено, то осуществляется переход к подпрограмме его обслуживания. Сброс флага IEj выполняется аппаратно при обслуживании прерывания только в том случае, когда ITj=1.
Регистр TMOD (Timer/counter Mode). Наименование и назначение разрядов регистра TMOD приведены в табл.2.4. Все разряды этого регистра доступны по записи и по чтению.
При работе в качестве таймера содержимое T/Cj инкрементируется с частотой , где f есть частота синхронизации микроконтроллера. При работе T/Cj в качестве счетчика внешних событий, его содержимое инкрементируется в ответ на переход из "1" в "0" сигнала на j-ом счетном входе микроконтроллера. Для надежной работы T/Cj в режиме счетчика необходимо, чтобы максимальная частота указанного сигнала была не более , а уровень этого сигнала оставался неизменным в течение как минимум одного машинного цикла ().
Таблица 2.4
Биты | Наименование | Назначение | |||||
7 | GATE1 | Бит разрешает (запрещает) управлять T/C1 от внешнего вывода . GATE1=1 - управление разрешено, GATE1=0 - управление запрещено. | |||||
6 | | Бит определяет работу T/C1 в качестве таймера (=0), счетчика внешних событий (=1). | |||||
5 4 | М1.1 М0.1 | Биты определяют один из 4-х режимов работы T/C1. | |||||
| | | M1.1 | M0.1 | Режим | | |
| | | 0 | 0 | 0 | | |
| | | 0 | 1 | 1 | | |
| | | 1 | 0 | 2 | | |
| | | 1 | 1 | 3 | | |
3 | GATE0 | Бит разрешает (запрещает) управлять T/C0 от внешнего вывода . GATE0=1 - управление разрешено, GATE0=0 - управление запрещено. | |||||
2 | | Бит определяет работу T/C0 в качестве таймера (=0), счетчика внешних событий (=1). | |||||
1 0 | М1.0 М0.0 | Биты определяют один из 4-х режимов работы T/C0. | |||||
| | | M1.0 | M0.0 | Режим | | |
| | | 0 | 0 | 0 | | |
| | | 0 | 1 | 1 | | |
| | | 1 | 0 | 2 | | |
| | | 1 | 1 | 3 | | |
Таймер/счетчик T/Cj в режиме 0 (1) представляет собой устройство на основе 13- (16-) разрядного регистра, состоящего из 8-ми разрядов регистра THj и 5-ти младших разрядов (8-ми разрядов) регистра TLj. В режиме 2 T/Cj представляет собой устройство на основе 8-разрядного регистра TLj. При каждом переполнении TLj кроме установки в регистре TCON флага TFj происходит автозагрузка регистра TLj содержимым THj, причем указанная автозагрузка не влияет на содержимое регистра THj. Таймер/счетчик T/C1 в режиме 3 заблокирован (значение кода в регистрах TH1, TL1 не изменяется). Эффект такой же, как при сбросе TR1 в "0". Таймер/счетчик T/C0 в режиме 3 представляет собой два независимых устройства на основе регистров TH0 и TL0. Устройство на основе TL0 может работать в режиме таймера или в режиме счетчика и при переполнении устанавливает флаг TF0. За этим устройством сохраняются биты управления TR0, GATE0, . Устройство на основе регистра TH0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении выставляет флаг TF1. Других битов управления устройство на основе TH0 не имеет.
Регистр SCON (Serial port Control) предназначен для приема и хранения кода, который управляет последовательным интерфейсом. Наименование и назначение разрядов регистра SCON приведены в табл.2.5. Все разряды этого регистра программно доступны по записи и чтению.
Таблица 2.5
Биты | Наименование | Назначение | |||
7 6 | SM0 SM1 | Биты определяют один из 4-х режимов работы последовательного порта | |||
| | SM0 | SM1 | Режим | Характеристика режима |
| | 0 | 0 | 0 | Сдвиговый регистр. Скорость (частота) приема/ передачи f/12. |
| | 0 | 1 | 1 | 8-битовый универсальный асинхронный приемник/ передатчик (УАПП). Скорость (частота) приема/ передачи задается частотой переполнений T/C1. |
| | 1 | 0 | 2 | 9-битовый УАПП. Скорость (частота) приема/ передачи f/64 или f/32. |
| | 1 | 1 | 3 | 9-битовый УАПП. Скорость (частота) приема/ передачи задается частотой переполнений T/C1. |
5 | SM2 | Бит разрешения многопроцессорной работы. | |||
4 | REN | Бит разрешает (запрещает) прием. REN=1 - прием разрешен, REN=0 - прием запрещен. | |||
3 | TB8 | Девятый бит передаваемых данных в режимах 2, 3. | |||
2 | RB8 | Девятый бит принятых данных в режимах 2, 3. | |||
1 | TI | Флаг прерывания передатчика. | |||
0 | RI | Флаг прерывания приемника. |
В режимах 2 и 3 при SM2=1 флаг RI не активизируется (не устанавливается в "1"), если девятый принятый бит данных равен "0". В режиме 1 при SM2=1 флаг RI не активизируется, если не принят стоп-бит равный "1". В режиме 0 бит SM2 не используется и должен быть сброшен в "0". Флаг TI аппаратно устанавливается в "1" в конце периода передачи 8-го бита в режиме 0 или в начале периода передачи стоп-бита в других режимах. Флаг RI аппаратно устанавливается в "1" в конце периода приема 8-го бита в режиме 0 или в середине периода приема стоп-бита (девятого бита) в режиме 1 (в режимах 2 и 3) при SM2=0.
Режим 2 и режим 3 последовательного порта позволяют организовать работу микроконтроллеров 8051 в многопроцессорных системах, использующих для обмена информацией между МК разделяемый моноканал (коаксиальный кабель, витая пара, оптоволокно и др.). В этих режимах флаг RI установится только в том случае, когда либо SM2=0, либо принятый девятый бит данных равен "1". Указанную особенность работы последовательного порта можно использовать для организации межконтроллерного обмена следующим образом. Пусть ведущему МК требуется передать блок данных некоторому (нескольким) ведомому (ведомым) МК. С этой целью ведущий МК в протокольном режиме "широковещательной" передачи (всем ведомым МК) выдает в моноканал байт-идентификатор абонента (код адреса МК-получателя), который отличается от байтов данных только тем, что в его девятом бите содержится "1". Программа реализации протокола сетевого обмена информацией должна быть построена таким образом, чтобы при получении байта-идентификатора во всех ведомых МК произошли прерывание прикладных программ и вызов подпрограммы сравнения байта-идентификатора с кодом собственного сетевого адреса. Адресуемый МК сбрасывает свой управляющий бит SM2 в "0" и готовится к приему блока данных. Остальные ведомые МК, адрес которых не совпал с кодом байта-идентификатора, оставляют неизменным состояние SM2=1 и передают управление основной программе. Байты данных, поступающие по моноканалу в последовательный порт ведомых микроконтроллеров у которых SM2=1, прерывание не вызывают (не устанавливается флаг RI), т.е. игнорируются.
Регистр SBUF (Serial port Buffer). Через SBUF обеспечивается программный доступ к регистрам передатчика и приемника последовательного порта. Причем передача начинается любой командой микроконтроллера, использующей SBUF в качестве регистра назначения, т.е. выполняющей операцию "запись в SBUF".
Регистр IE (Interrupt Enable) используется для разрешения или запрещения прерываний от соответствующих источников. Наименование и назначение разрядов регистра IE приведены в табл.2.6. Все биты указанного регистра программно доступны по записи и чтению.
Регистр IP (Interrupt Priority) используется для установки уровня приоритета прерывания для каждого из пяти источников прерываний. Наименование и назначение разрядов регистра IP приведены в табл.2.7. Все биты этого регистра программно доступны по записи и чтению. Наличие в заданном разряде регистра IP "1" устанавливает для соответствующего источника высокий уровень приоритета, а наличие "0" - низкий уровень приоритета.
Таблица 2.6
Биты | Наименование | Назначение |
7 | EA | Бит управления всеми источниками прерываний одновременно. EA=0 - прерывания запрещены, EA=1 - прерывания могут быть разрешены индивидуальными разрешениями EX0, EX1, ET0, ET1, ES. |
6 | - | Не используется. |
5 | - | Не используется. |
4 | ES | Бит управления прерыванием от последовательного порта. ES=0 - прерывание запрещено, ES=1 - прерывание разрешено. |
3 | ET1 | Бит управления прерыванием от T/C1. ET1=0 - прерывание запрещено, ET1=1 - прерывание разрешено. |
2 | EX1 | Бит управления прерыванием от внешнего источника . EX1=0 - прерывание запрещено, EX1=1 - прерывание разрешено. |
1 | ET0 | Бит управления прерыванием от T/C0. ET0=0 - прерывание запрещено, ET0=1 - прерывание разрешено. |
0 | EX0 | Бит управления прерыванием от внешнего источника . EX0=0 - прерывание запрещено, EX0=1 - прерывание разрешено. |
Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ни от одного из источников. Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производится в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов:
-
Источник
Приоритет внутри уровня
IE0
высокий
TF0
IE1
TF1
RI, TI
низкий
Необходимо особо подчеркнуть, что структура "Приоритет внутри уровня" работает только в тех случаях, когда определяется последовательность обслуживания запросов на прерывания, которые приняты одновременно и при этом имеют одинаковый уровень приоритета.
Таблица 2.7
Биты | Наименование | Назначение |
7 | - | Не используется. |
6 | - | Не используется. |
5 | - | Не используется. |
4 | PS | Бит установки уровня приоритета прерывания от последовательного порта. |
3 | PT1 | Бит установки уровня приоритета прерывания от таймера/счетчика T/C1. |
2 | PX1 | Бит установки уровня приоритета прерывания от внешнего источника . |
1 | PT0 | Бит установки уровня приоритета прерывания от таймера/счетчика T/C0. |
0 | PX0 | Бит установки уровня приоритета прерывания от внешнего источника . |