Д. В. Андреев Программирование микроконтроллеров mcs-51
Вид материала | Учебное пособие |
2.1. Программная модель микроконтроллера 8051 Резидентная память данных Указатель данных DPTR Регистр PCON |
- Руководитель магистерской программы по направлению «Телекоммуникации» профессор, 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.
что в качестве первого кандидата на модернизацию при прорыве на рынок микроконтроллеров, где господствовали такие мощные фирмы как Philips, Siemens, Intel, Motorola, Mitsubishi и др., фирма Atmel избрала микроконтроллер 8051, подтверждает исключительно высокую популярность этого кристалла.
Среди оригинальных разработок Atmel в рамках семейства MCS-51 отметим следующие (см. табл.1.4):
- 20-выводные микроконтроллеры AT89С2051/1051, открывшие дорогу семейству MCS-51 в сферу "1-долларовых" приложений;
- микроконтроллеры с каналом SPI, обеспечивающие возможность внутрисхемного программирования FLASH памяти. Эта функция может быть очень удобна в производстве, когда программирование микросхем осуществляется уже после их монтажа;
- микроконтроллер с резидентной памятью типа EEPROM, обеспечивающей хранение оперативных данных при отключенном питании микросхемы.
Фирма Dallas Semiconductor в первую очередь получила известность среди производителей семейства MCS-51 своей серией DS5000 (табл.1.4). Оригинальность микроконтроллеров этой серии заключается в том, что их резидентная память программ выполнена в виде NVRAM - оперативной памяти, энергонезависимость которой обеспечивается литиевой батарейкой, встроенной непосредственно в корпус микросхемы. Фирма дает 10-летнюю гарантию на сохранность информации в NVRAM. Микроконтроллеры серии DS5000 имеют архитектуру стандартного ядра MCS-51, поэтому их временные характеристики полностью идентичны характеристикам микроконтроллера 8051.
Отметим, что фирма Dallas Semiconductor первой попыталась усовершенствовать архитектуру семейства MCS-51. Как известно, базовая архитектура этого семейства обеспечивает не оптимальную процедуру выборки и выполнения команд. Например, команда MOV A,Rn выбирается и выполняется микроконтроллером 8051 за 6 тактов, а следующие 6 тактов происходит холостая выборка команды по следующему адресу. В результате затрачивается 12 тактов тактового генератора МК. Специалисты Dallas Semiconductor переработав архитектуру МК 8051 создали группу микроконтроллеров DS8xC300/500 (табл.1.4), в которых типовой цикл выборки и выполнения команд сократился до 4-х тактов, а холостые выборки были исключены. Таким образом, команда MOV A,Rn стала выполняться за 4 такта тактового генератора, т.е. в 3 раза быстрее. Команды МК 8051, которые не имели холостых выборок, в DS8xC300/500 "ускорились" в 1,5 раза.
Список литературы
1. Каталог инструментальных средств для микроконтроллеров/ Фитон. М., 1998.
Глава 2. | ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯМИКРОКОНТРОЛЛЕРОВ MCS-51 |
2.1. Программная модель микроконтроллера 8051
| 0FFFH | ||
| | ||
| 23H TI, RI | ||
| | ||
| 1BH T/C1 | ||
| | ||
| 13H INT1 | ||
| | ||
| 0BH T/C0 | ||
| | ||
| 03H INT0 | ||
| | ||
| 00H | ||
| | ||
15 8 | | ||
| PC | ||
| |||
7 0 | | ||
| | ||
| Рис.1. Структура резидентной памяти программ микроконтроллера 8051 | |
В предыдущей главе было отмечено, что ядром семейства MCS-51 является микроконтроллер 8051 (отечественный аналог КР1816ВЕ51). В связи с этим представляется целесообразным рассмотрение особенностей программирования указанного семейства на примере именно этого микроконтроллера.
Программная модель МК 8051 содержит резидентную память данных, регистры специальных функций, резидентную память программ и программный счетчик PC.
Резидентная память программ (рис.1) имеет байтовую организацию и доступна только по чтению, при этом ее ячейки (4 Кбайт) адресуются с использованием двенадцати младших разрядов PC. Резидентная память программ может быть дополнена внешней памятью. В этом случае общий максимально допустимый объем памяти программ составит 64 К. Младшие адреса резидентной памяти программ отведены под обработку внешних прерываний , , прерываний от таймеров/счетчиков T/C0, T/C1 и прерывания от последовательного порта. В случае возникновения какого-либо из указанных прерываний происходит обращение к соответствующей ячейке резидентной памяти программ (например, при возникновении прерывания в PC записывается код 0003H).
Резидентная память данных (рис.2) состоит из 128-ми 8-разрядных ячеек с адресами 00H-7FH и может быть дополнена внешней памятью данных емкостью до 64 К. При этом пространства резидентной и внешней
Резидентная память данных | | | Регистры специальных функций | | ||||||||||||||||
| 7FH | | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | 0F0H | |||||||||
| | | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | 0E0H | |||||||||
| 30H | | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 0D0H | |||||||||
7F | 7E | 7D | 7C | 7B | 7A | 79 | 78 | 2FH | | - | - | - | BC | BB | BA | B9 | B8 | 0B8H | ||
77 | 76 | 75 | 74 | 73 | 72 | 71 | 70 | 2EH | | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | 0B0H | ||
6F | 6E | 6D | 6C | 6B | 6A | 69 | 68 | 2DH | | AF | - | - | AC | AB | AA | A9 | A8 | 0A8H | ||
67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 2CH | | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 0A0H | ||
5F | 5E | 5D | 5C | 5B | 5A | 59 | 58 | 2BH | | SBUF | 99H | |||||||||
57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 2AH | | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 | 98H | ||
4F | 4E | 4D | 4C | 4B | 4A | 49 | 48 | 29H | | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | 90H | ||
47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 28H | | TH1 | 8DH | |||||||||
3F | 3E | 3D | 3C | 3B | 3A | 39 | 38 | 27H | | TH0 | 8CH | |||||||||
37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 | 26H | | TL1 | 8BH | |||||||||
2F | 2E | 2D | 2C | 2B | 2A | 29 | 28 | 25H | | TL0 | 8AH | |||||||||
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 24H | | TMOD | 89H | |||||||||
1F | 1E | 1D | 1C | 1B | 1A | 19 | 18 | 23H | | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 | 88H | ||
17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 22H | | PCON | 87H | |||||||||
0F | 0E | 0D | 0C | 0B | 0A | 09 | 08 | 21H | | DPH | 83H | |||||||||
07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | 20H | | DPL | 82H | |||||||||
R7 | 1FH | | SP | 81H | ||||||||||||||||
| | | 87 | 86 | 85 | 84 | 83 | 82 | 81 | 80 | 80H | |||||||||
R0 | 18H | | | | ||||||||||||||||
R7 | 17H | | | | ||||||||||||||||
| | | | | ||||||||||||||||
R0 | 10H | | | | ||||||||||||||||
R7 | 0FH | | | | ||||||||||||||||
| | | | | | |||||||||||||||
R0 | 08H | | | Рис.2. Структура резидентной памяти данных и регистров специальных функций микроконтроллера 8051 | | |||||||||||||||
R7 | 07H | | | | ||||||||||||||||
| | | | | ||||||||||||||||
R0 | 00H | | | |
памяти не пересекаются, так как доступ к ним осуществляется с помощью разных команд.
Младшие 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" - отмена). Доступен по чтению. |