Младшие 32 байта РПД сгруппированы в 4 банка по 8 регистров R0-R7 в каждом. Отметим, что Банк0, Банк1, Банк2 и Банк3 занимают соответственно адреса 00H-07H, 08H-0FH, 10H-17H и 18H-1FH. Следующие после банков регистров 16 байт (адреса 20H-2FH) или 128 бит (адреса 00H-7FH) образуют область ячеек, к которым возможно побитовое обращение. Набор команд МК 8051 содержит значительное количество инструкций, позволяющих работать с указанными битами.
Область регистров специальных функций (РСФ) (рис.2) содержит 21 регистр, назначение которых приведено в табл.2.1. Как видно из рис.2 и табл.2.1, 11 РСФ допускают побитовое обращение (биты с адресами 80H-0F7H).
Таблица 2.1
Наименование | Назначение | Адрес |
P0* | Порт 0 | 80H |
SP | Указатель стека | 81H |
DPL | Младший байт указателя данных DPTR | 82H |
DPH | Старший байт указателя данных DPTR | 83H |
PCON | Регистр управления потреблением | 87H |
TCON* | Регистр управления таймеров/счетчиков | 88H |
TMOD | Регистр режимов таймеров/счетчиков | 89H |
TL0 | Таймер/счетчик 0. Младший байт | 8АH |
TL1 | Таймер/счетчик 1. Младший байт | 8BH |
TH0 | Таймер/счетчик 0. Старший байт | 8CH |
TH1 | Таймер/счетчик 1. Старший байт | 8DH |
P1* | Порт 1 | 90H |
SCON* | Регистр управления последовательным портом | 98H |
SBUF | Буфер последовательного порта | 99H |
P2* | Порт 2 | 0A0H |
IE* | Регистр разрешения прерываний | 0A8H |
P3* | Порт 3 | 0B0H |
IP* | Регистр приоритетов прерываний | 0B8H |
PSW* | Регистр состояния программы | 0D0H |
A* | Аккумулятор | 0E0H |
B* | Регистр B | 0F0H |
* - регистры, допускающие побитовую адресацию.
Рассмотрим регистры специальных функций более подробно.
Порты P0, P1, P2, P3 являются двунаправленными портами ввода/вывода и предназначены для обеспечения обмена информацией МК с внешними устройствами, образуя 32 линии ввода/вывода. Помимо обычного ввода/вывода указанные порты могут выполнять ряд дополнительных функций. В частности, при работе МК с внешней памятью данных или с внешней памятью программ через порты P0 и P2 выводятся соответственно младший и старший байты адреса, кроме того через порт P0 выдается (принимается) байт данных (байт данных или байт команды). При этом обмен байтом данных, ввод байта команды и вывод младшего байта адреса внешней памяти мультиплексированы во времени. Линии порта P3 имеют следующие альтернативные функции: P3.0 (P3.1) - вход (выход) последовательного порта; P3.2 (P3.3) - вход внешнего прерывания
(
); P3.4 (P3.5) - счетный вход 0 (1); P3.6 (P3.7) - выход сигнала записи (чтения) во внешнюю память данных (из внешней памяти данных).
Указатель стека SP (Stack Pointer) - регистр, содержимое которого инкрементируется (увеличивается на единицу) перед записью данных в стек при выполнении команд PUSH и CALL. Начальный сброс устанавливает указатель стека в 07H, а область стека в РПД начинается с адреса 08H. При необходимости, путем переопределения указателя стека область стека может быть расположена в любом месте РПД.
Указатель данных DPTR (Data PoinTeR) предназначен для хранения 16-разрядного адреса внешней памяти данных и состоит из двух программно доступных регистров DPH (Data Pointer High) и DPL (Data Pointer Low), которые могут использоваться в качестве независимых регистров общего назначения, если нет необходимости в хранении упомянутого адреса. Кроме того, DPTR служит базовым регистром при косвенной адресации в некоторых командах пересылки или перехода.
Регистр PCON (Power Control). Конструкция регистра PCON определяется технологией изготовления микроконтроллера. Для варианта изготовления по технологи n-МОП (8051) регистр PCON имеет всего один бит - SMOD, управляющий скоростью передачи последовательного порта. Для варианта изготовления по технологии КМОП (80С51) наименование и назначение разрядов регистра PCON приведены в табл.2.2. Для 8051 и 80С51 расположение и назначение разряда SMOD идентичны. Биты GF0 и GF1 пользователь может задействовать по своему усмотрению. Если в PD и IDL одновременно записана "1", то преимущество имеет PD.
Особенности режима холостого хода и режима микропотребления заключаются в том, что при первом блокируются только узлы, составляющие центральный процессор микроконтроллера (тактовый генератор продолжает функционировать), а при втором блокируется работа всех узлов. Токи потребления микроконтроллера 80С51 в режимах холостого хода и микропотребления составляют соответственно не более 4,2 мА и не более 50 мкА. Для окончания режима холостого хода имеются два способа. Активизация любого разрешенного прерывания автоматически приведет к сбросу бита IDL в "0", оканчивая режим холостого хода, при этом состояние резидентной памяти данных и РСФ остается таким же, каким оно было на момент перехода в указанный режим. После исполнения команды (инструкции), обеспечивающей выход из подпрограммы обслуживания прерывания, будет выполняться инструкция, которая следует за командой, переведшей микроконтроллер в режим холостого хода. Другим способом окончания режима холостого хода является инициализация (сброс) микроконтроллера. В этом случае сохраняется только содержимое РПД. Указанный способ используется и для окончания режима микропотребления.
Таблица 2.2
Биты | Наименование | Назначение |
7 | SMOD | Бит удвоения скорости передачи через последовательный порт. При установке в "1" скорость передачи удваивается. Доступен по чтению. |
6 | - | Не используется. |
5 | - | Не используется. |
4 | - | Не используется. |
3 | GF1 | Программно управляемый флаг пользователя. |
2 | GF0 | Программно управляемый флаг пользователя. |
1 | PD | Бит включения режима микропотребления ("1" - включение, "0" - отмена). Доступен по чтению. |
0 | IDL | Бит включения режима холостого хода. ("1" - включение, "0" - отмена). Доступен по чтению. |
Регистры 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.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |


