Программирование микроконтроллеров mcs 51. Микроконтроллеры семейства mcs51. Программная модель mcs–51
Фирма Intel является родоначальницей архитектуры семейства MCS-51, которое получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086. Указанный микроконтроллер остается ядром семейства MCS-51 и по сей день.
Основными элементами базовой архитектуры семейства (архитектуры микроконтроллера 8051) являются:
8-разрядное АЛУ;
4 банка регистров, по 8 в каждом;
Внутренняя (резидентная) память программ 4 Кбайт, имеющая тип ROM или EPROM (8751);
Внутренняя (резидентная) память данных 128 байт;
21 регистр специальных функций;
Булевый процессор;
Два 16-разрядных таймера/счетчика;
Контроллер последовательного порта (UART);
Контроллер обработки прерываний с двумя уровнями приоритетов;
Четыре 8-разрядных порта ввода/вывода, два из которых используются в качестве шины адреса/данных для доступа к внешней памяти программ и данных;
Встроенный тактовый генератор.
Затем был выпущен микроконтроллер 8052, который отличался увеличенным объемом резидентной памяти программ и данных, введенным третьим таймером и соответственно расширенным контроллером прерываний.
Следующим принципиальным шагом в развитии MCS-51 стал перевод технологии изготовления на КМОП (модификация 8xC51). Это позволило реализовать режимы Idl (холостой ход) и Power Down (пониженное потребление), обеспечивающие резкое снижение энергопотребления кристалла и открывшие дорогу к применению микроконтроллера в энергозависимых приложениях, например, в автономных приборах с батарейным питанием.
И последним важным этапом развития МК 8051 фирмой Intel стал выпуск микроконтроллеров 8xC51FA/FB/FC и 8xC51RA/RB/RC, которые для краткости часто обозначаются как 8xC51Fx и 8xC51Rx. Главной отличительной особенностью этой группы кристаллов является наличие у них специализированного таймера/счетчика (РСА). Кроме того, микроконтроллеры 8xC51Rx дополнительно содержат сторожевой таймер (WDT). Рассмотрим архитектуру и функциональные возможности PCA более подробно.
В состав РСА входят:
16-разрядный таймер/счетчик;
Пять 16-разрядных модуля выборки и сравнения, каждый из которых связан со своей линией порта ввода/вывода микроконтроллера.
Таймер/счетчик обслуживает все пять модулей выборки и сравнения, которые могут быть запрограммированы на выполнение одной из следующих функций:
16-битовая выборка значения таймера по положительному фронту внешнего сигнала;
16-битовая выборка значения таймера по отрицательному фронту внешнего сигнала;
16-битовая выборка значения таймера по любому фронту внешнего сигнала;
16-битовый программируемый таймер;
16-битовое устройство скоростного вывода;
8-битовый ШИМ.
Выполнение всех перечисленных функций происходит в РСА на аппаратном уровне и не загружает центральный процессор. Указанное позволяет повысить общую пропускную способность, повысить точность измерений и обработки сигналов и снизить время реакции микроконтроллера на внешние события, что особенно важно для систем реального времени. Реализованный в 8xC51Fx (8xC51Rx) РСА оказался настолько
Обозначение |
Макс. частота (МГц) |
ROM/EPROM (байт) |
счетчики | ||
удачным, что архитектура этих микроконтроллеров стала промышленным стандартом, а сам РСА многократно воспроизводился в различных модификациях МК 8051.
Некоторые характеристики ряда микроконтроллеров MCS-51, выпускаемых фирмой Intel, приведены в табл.1.1.
Изначально наиболее "узкими" местами архитектуры MCS-51 были 8-разрядное АЛУ на базе аккумулятора и относительно медленное выполнение команд (для выполнения самых быстрых команд требуется 12 пе-
Таблица 1.1
ввода/вывода |
АЦП, входы x разряды |
периферия, особенности |
U пит. (В) |
||
Низковольтный вариант | |||||
4 уровня IRQ, clock out | |||||
4 уровня IRQ, clock out | |||||
Низковольтный вариант 8xC51Fx | |||||
4 уровня IRQ, clock out | |||||
4 уровня IRQ, clock out | |||||
4 уровня IRQ, clock out | |||||
риодов тактовой частоты (частоты синхронизации МК)). Это ограничивало применение микроконтроллеров семейства в приложениях, требующих повышенного быстродействия и сложных вычислений (16- и 32-битовых). Насущным стал вопрос принципиальной модернизации архитектуры MCS-51. Проблема модернизации осложнялась тем, что к началу 90-х годов уже была создана масса наработок в области программного и аппаратного обеспечения семейства MCS-51, в связи с чем одной из основных задач проектирования новой архитектуры была реализация аппаратной и программной совместимости с разработками на базе MCS-51.
Для решения указанной задачи была создана совместная группа из специалистов компаний Intel и Philips, но позднее пути этих двух фирм разошлись. В результате в 1995 году появилось два существенно отличающихся семейства: MCS-251/151 у Intel и MCS-51XA у Philips (см. подраздел 1.2).
Основные характеристики архитектуры MCS-251:
24-разрядное линейное адресное пространство, обеспечивающее адресацию до 16 Мбайт памяти;
Регистровая архитектура, допускающая обращение к регистрам как к байтам, словам и двойным словам;
Страничный режим адресации для ускорения выборки команд из внешней программной памяти;
Очередь инструкций;
Расширенный набор команд, включающий 16-битовые арифметические и логические операции;
Расширенное адресное пространство стека (до 64 Кбайт);
Выполнение самой быстрой команды за 2 такта.
Система команд MCS-251 включает два набора инструкций - первый набор является копией системы команд MCS-51, а второй состоит из расширенных инструкций, реализующих преимущества архитектуры MCS-251. Перед использованием микроконтроллера его необходимо сконфигурировать, т.е. с помощью программатора "прожечь" конфигурационные биты, определяющие, какой из наборов инструкций станет активным после включения питания. Если установить первый набор инструкций, то в этом случае МК семейства MCS-251 будет совместим с MCS-51 на уровне двоичного кода. Такой режим называется Binary Mode. Если же изначально установить набор расширенных инструкций (режим Source Mode), то тогда программы, написанные для MCS-51, потребуют перекомпиляции на кросс-средствах для MCS-251. Режим Source Mode позволяет с максимальной эффективностью использовать архитектуру MCS-251 и достигнуть наибольшего быстродействия.
Для пользователей, ориентированных на применение микроконтроллеров MCS-251 в качестве механической замены MCS-51, фирма Intel выпускает микроконтроллеры MCS-151, уже запрограммированные в состояние Binary Mode.
Некоторые характеристики ряда микроконтроллеров MCS-251/151 приведены в табл.1.1.
В настоящее время Intel, устремленная на рынок Pentium-процессоров, сворачивает производство кристаллов MCS-51. В целом для конкретного разработчика это может остаться и незамеченным, если только он не использует микроконтроллеры 8xC51GB и 80C152Jx, которые не имеют своих точных аналогов среди изделий других фирм. Что же касается всех остальных микроконтроллеров семейства MCS-51, то все они многократно растиражированы другими компаниями.
Архитектура микроконтроллеров
Понимание архитектуры микроконтроллеров является ключевым при изучении языков программирования типа ассемблер. Структура ассемблера, формат его команд, адресация операндов и т. д. полностью определяются архитектурой. Целью изучения архитектуры является:
· выявление набора доступных для программирования регистров, их функционального назначения и структуры;
· понимание организации оперативной памяти и порядка ее использования;
· знакомство с типами данных;
· изучение формата машинных команд;
· выяснение организации обработки прерываний.
Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции МК реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд, большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация выводов для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - производителей (таких какIntel, Dallas, Atmel, Philips и т.д.) без переделки принципиальной схемы устройства и программы.
MCS-51 выполнен по Гарвардской архитектуре, где адресные пространства памяти программ и данных разделены.
Структурная схема контроллера представлена на рис.2.3 и состоит из следующих основных функциональных узлов: блока управления, арифметико-логического устройства, блока таймеров/счетчиков, последовательного интерфейса и прерываний, программного счетчика (счетчика команд), памяти данных и памяти программ.
Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных. Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51. Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.
Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы. В состав блока управления входят:
- устройство формирования временных интервалов,
- комбинационная схема ввода-вывода,
- регистр команд,
- дешифратор команд.
Входные и выходные сигналы блока управления и синхронизации :
1 PSEN – разрешение программной памяти;
2 ALE – выходной сигнал разрешения фиксации адреса;
3 PROG – сигнал программирования;
4 EA – блокировка работы с внутренней памятью;
5 VPP – напряжение программирования;
6 RST – сигнал общего сброса.
Устройство формирования временных интервалов необходимо для синхронизации последовательности состояний ЦП, образующих машинный цикл, а также для правильной работы всех внутреннихзащелок и выходных буферов портов. Машинный цикл состоит из шести последовательныхсостояний (States) от S1 до S6, каждое из которых, в свою очередь, подразделяется на две фазы:
фазу 1 (Phase 1 - P1) и фазу 2 (Phase 2 - P2). Таким образом, машинный цикл может быть определен как последовательность временных интервалов S1P1, S1P2, S2P1,....,S6P2. Длительность фазы равна периоду следования тактовых импульсов, поэтому машинный цикл занимает 12 тактовых периодов.
Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.
Регистр команд предназначен для записи и хранения 8-ми разрядного кода операции выполняемой команды. Код операции, с помощью дешифратора команд и логики управления ЭВМ, преобразуется в микропрограмму выполнения команды.
Рис 2.3. Структурная схема однокристального микроконтроллера Intel 8051
(семейство MCS-51)
Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:
- регистров временного хранения -TMP1 и TMP2,
- ПЗУ констант,
- сумматора,
- дополнительного регистра - регистра В,
- аккумулятора - ACC,
- регистра слова состояния программ (регистр флагов)- PSW .
Регистры временного хранения TMP1, TMP2 - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.
ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.
Параллельный восьмиразрядный сумматор представляет собой схему комбинационного типа с последовательным переносом, предназначенную для выполнения арифметических операций сложения, вычитания и логических операций сложения, умножения, неравнозначности и тождественности.
Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.
Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига.
Регистр состояния программ PSW (Programm Status Word) предназначен для хранения слова состояния выполняемых команд. При выполнении многих команд в ALU формируется ряд признаков операции (флагов), которые фиксируются в регистре слова состояния программы (PSW). В табл. 1 приводится перечень флагов PSW, даются их символические имена и описываются условия их формирования.
Блок прерываний и последовательного интерфейса - UART(Universal Asynchronous Receiver/Transmitter) предназначен для организации ввода - вывода последовательных потоков информации и организации системы прерывания программ.По определению прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы.
Эти действия могут носить сервисный характер, быть запросами со стороны программы пользователя на выполнение обслуживания либо быть реакцией на нештатные ситуации.
- Арифметические команды;
- Логические команды;
- Команды передачи данных;
- Команды битового процессора;
- Команды ветвления и передачи управления.
- Регистровая адресация
- Прямая адресация
- Косвенно-регистровая адресация
- Непосредственная адресация
- Косвенно-регистровая адресация по сумме базового и индексного регистров
Обозначение, символ | Назначение |
А | Аккумулятор |
Rn | Регистры текущего выбранного банка регистров |
r | Номер загружаемого регистра, указанног в команде |
direct | Прямо адресуемый 8-битовый внутренний адрес ячейка данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255) |
@Rr | Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных |
data8 | 8-битовое непосредственное да ное, ходящее в КОП |
dataH | Старшие биты (15-8) непосредственных 16-битовых данных |
dataL | Младшие биты (7-0) непосредственных 16-битовых данных |
addr11 | 11-битовый адрес назначения |
addrL | Младшие биты адреса назначения |
disp8 | 8-битовый байт смещения со знак м |
bit | Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR |
a15, a14...a0 | Биты адреса назначения |
(Х) | Содержимое элемента Х |
((Х)) | Содержимое по адресу, хранящемуся в элементе Х |
(Х)[M] | Разряд М элемента Х |
+ - * / AND OR XOR /X | Операции: сложения вычитания умножения деления логического умножения (операция И) логического сложения (операция ИЛИ) сложения по модулю 2 (исключающее ИЛИ) инверсия элемента Х |
Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний. В таблице приведен перечень команд, упорядоченных по алфавиту.
Мнемоника | Функция | Флаги |
Команда ACALL | Абсолютный вызов подпрограммы | |
Команда ADD A, <байт-источник> | Сложение | AC, C, OV |
Команда ADDC A, <байт-источник> | Сложение с переносом | AC, C, OV |
Команда AJMP | Абсолютный переход | |
Команда ANL <байт-назначения>, <байт-источникa> | Логическое "И" | |
Команда ANL C, <байт-источникa> | Логическое "И" для переменных-битов | |
Команда CJNE <байт-назначения>, <байт-источник>, <смещение> | Сравнение и переход, если не равно | C |
Команда CLR A | Сброс аккумулятора | |
Команда CLR | Сброс бита | C, bit |
Команда CPL A | Инверсия ак умуля ора | |
Команда CPL | Инверсия бита | C, bit |
Команда DA A | Десятичная коррекция аккумулятора для ложения | AC, C |
Команда DEC <байт> | Декремент | |
Команда DIV AB | Деление | C, OV |
Команда DJNZ <байт>, <смещение> | Декремент и переход, если не равно нулю | |
Команда INC <байт> | Инкремент | |
Команда INC DPTR | Инкремент указателя данных | |
Команда JB | Переход, если бит установлен | |
Команда JBC | Переход, если бит установлен и сброс этого бита | |
Команда JC | Переход, если перенос установлен | |
Команда JMP @A+DPTR | Косвенный переход | |
Команда JNB | Переход, если бит не установлен | |
Команда JNC | Переход, если перенос не установлен | |
Команда JNZ | Переход, если содержимое аккумулятора не равно нулю | |
Команда JZ | Переход, если содержимое аккумулятора равно 0 | |
Команда LCALL | Длинный вызов | |
Команда LJMP | Длинный переход | |
Команда MOV <байт-назначения>, <байт-источника> | Переслать переменную-байт | |
Команда MOV <бит-назначения>, <бит-источника> | Переслать бит данных | C |
Команда MOV DPTR,#data16 | Загрузить указатель данных 16-битовой константой | |
Команда MOVC A,@A+( | Переслать байт из памяти программ | |
Команда MOVX <байт приемника>, <байт источника> | Переслать во внешнюю память (из внешней памяти) данных | |
Команда MUL AB | Умножение | C, OV |
Команда NOP | Нет операции | PC |
Команда ORL <байт-назначения>, <байт-источникa> | Логическое "ИЛИ" для перемнных-байтов | |
Команда ORL C, <бит источникa> | Логическое "ИЛИ" для переменных-битов | C |
Команда POP | Чтение из стека | |
Команда PUSH | Запись в стек | |
Команда RET | Возврат из подпрограммы | |
Команда RETI | Возврат из прерывания | |
Команда RL A | Сдвиг содержимого аккумулятора влево | |
Команда RLC A | Сдвиг содержимого аккумулятора влево через флаг переноса | |
Команда RR A | Сдвиг содержимого аккумулятора вправо | |
Команда RRC A | Сдвиг содержимого аккумулятора вправо через флаг переноса | C |
Команда SETB | Установить бит | C |
Команда SJMP <метка> | Короткий переход | |
Команда SUBB A, <байт источника> | Вычитание с заемом | AC, C, OV |
Команда SWAP A | Обмен тетрадами внутри аккумулятора | |
Команда XCH A, <байт> | Обмен содержимого аккумулятора с переменной-байтом | |
Команда XCHD A,@R1 | Обмен тетрадой | |
Команда XRL <байт-назначения>, <байт-источникa> | Логическое "ИСКЛЮЧАЮЩЕЕ ИЛИ" для перемнных-байтов |
Базовая версия MCS–51 Краткие сведения. Современные 8–разрядные микроконтроллеры (МК) обладают такими ресурсами управления в режиме реального времени, для получения которых раньше использовались дорогие многокристальные компоновки в виде отдельных плат микроЭВМ, A именно:
● имеют достаточную емкость памяти, физическое и логическое ее разделение на память программ и память данных (гарвардскую архитектуру) и систему команд, ориентированную на выполнение алгоритмов управления;
● включают в себя все устройства (процессор, ПЗУ, ОЗУ, порты ввода–вывода, систему прерываний, средства обработки битовой информации и др.), необходимые для реализации микропроцессорной системы управления минимальной конфигурации. В 70–е годы прошлого столетия фирмой Intel разработан и освоен промышленный выпуск семейства 8–разрядных микроконтроллеров MCS–48, объединенных рядом общих признаков (разрядностью, системой команд, набором основных функциональных блоков и др.). Базовая версия этого семейства включает в себя:
● 8–разрядный процессор;
● внутреннюю память программ (1/2/4К байт);
● внутреннюю память данных (64/128/256 байт);
● до 27 внутренних и 16 внешних линий ввода–вывода;
● один 8–разрядный таймер–счетчик;
● одноуровневую систему прерываний с двумя источниками запросов. В 1980 г. той же фирмой было разработано новое семейство восьмиразрядных микроконтроллеров MCS–51, которое совместимо с архитектурой семейства MCS–48, но обладает более широкими возможностями.
Архитектура семейства MCS–51 оказалась настолько удачной, что и по настоящее время является одним из стандартов 8–разрядных МК. Поэтому объектом изучения выбраны МК этого семейства, получившие широкое распространение в сравнительно простых системах управления.
Для семейства MCS–51 разработаны различные средства подготовки программ (компиляторы, аппаратно–программные эмуляторы и др.) и имеется большое число библиотек стандартных подпрограмм. В состав семейства входят разнообразные модификации микросхем (версии кристаллов) микроконтроллеров. В статьях этого раздела достаточно подробно рассматривается базовая версия микроконтроллеров семейства MCS–51 (микросхеме 8051 соответствует отечественный аналог КP1816ВЕ51), наиболее простая в структурно–функциональном плане и с точки зрения понимания.
Последующие серии микросхем, сохраняя совместимость с базовой версией, отличаются от нее улучшенной технологией изготовления, электрическими параметрами, дополнительными аппаратными средствами и функциональными возможностями. Структурно–функциональным особенностям последующих модификаций микросхем семейства MCS–51 посвящены следующие статьи.
Обобщенная структурная схема MCS–51. В состав МК, обобщенная структурная схема которого приведена на рис. 7.1.1, входят:
● 8–разрядный центральный процессор ЦП, состоящий из АЛУ , устройства управления УУ и формирователя адреса ФА ;
● масочное ПЗУ емкостью 4К байта для хранения программ;
● ОЗУ емкостью 128 байт для хранения данных;
● четыре программируемых порта Р0–Р3 для ввода–вывода информации;
● блок последовательного интерфейса БПИ для обмена информацией с внешними устройствами по двухпроводной линии;
● блок таймеров/счетчиков БT/C для поддержания режима реального времени;
● блок прерываний БП для организации прерываний исполняемых программ. Эти средства образуют резидентную часть микроконтроллера, размещенную непосредственно на кристалле. В состав МК входит большое число регистров, которые отнесены к отдельным функциональным блокам и на схеме не показаны.
На схеме также не показаны цепи управления. Двусторонний обмен информацией между блоками осуществляется по внутренней 8–разрядной шине данных ШД–8.
По внутренней 16–разрядной шине адреса ША–16 сформированный в ЦП адрес выводится в ПЗУ (12 разрядов адреса) и в ОЗУ (8 младших разрядов).
При использовании внешней памяти в порт Р0 выводятся 8 младших разрядов адреса и в порт P2 - 3 или 8 старших разрядов.
Для логического расширения интерфейса используется совмещение функций линий портов. В качестве примера на рис. 7.1.1 пунктиром показаны линии порта Р3, выполняющие альтернативные
функции передачи управляющих сигналов, о назначении которых будет сказано ниже. Для создания внутреннего тактового генератора к выводам микросхемы МК подключаются кварцевый резонатор и два конденсатора (рис. 7.1.1). Вместо внутреннего тактового генератора для синхронизации можно использовать внешний источник колебаний. Условное графическое обозначение микросхемы МК приведено на рис. 7.1.2, обозначение и назначение выводов - в табл. 7.1.1. Рассмотрим функциональные блоки МК и принцип их работы. Арифметическо–логическое устройство. Арифметическо–логическое устройство предназначено для выполнения арифметических (включая умножение и деление) и логических операций над восьмиразрядными операндами, A также операций логического сдвига, обнуления, установки и др. Структурная схема АЛУ приведена на рис. 7.1.3.
В состав АЛУ входят
● параллельный восьмиразрядный сумматор SМ комбинационного типа с последовательным переносом, выполняющий арифметические (сложение и вычитание) и логические (сложение, умножение, неравнозначность и тождественность) операции;
● аккумулятор A, обеспечивающий функции основного арифметического регистра;
● регистр В, используемый для реализации операций умножения и деления или как дополнительный сверхоперативный регистр, функции которого определяет пользователь;
●регистры (программно недоступные) временного хранения РВХ1, РВХ2, предназначенные для приема и хранения операндов на время выполнения операции;
● ПЗУ констант ПЗУК, хранящее корректирующий код для двоично–десятичного представления данных, код маски при битовых операциях и код констант;
● регистр слова состояния программы
PSW, фиксирующий состояние АЛУ после выполненной операции. В табл. 7.1.2 приведены сведения о назначении битов отдельных разрядов регистра PSW. Устройство управления. Устройство управления (УУ) центрального процессора предназначено
для координации совместной работы всех узлов МК с помощью вырабатываемых синхроимпульсов и управляющих сигналов. В его состав входят (рис. 7.1.4):
● узел синхронизации и управления УСУ, который формирует синхроимпульсы, задающие машинные циклы и их отдельные состояния (S) и фазы (Р), и в зависимости от режима работы МК вырабатывает необходимый набор управляющих сигналов. На выполнение команды отводится один, два или четыре машинных цикла.
Каждый машинный цикл имеет шесть состояний S1–S6, A каждое состояние включает в себя две фазы P1, P2, длительность которых составляет период колебаний тактового генератора T 0SC .
Длительность машинного цикла равна 12T 0SC . Все машинные циклы одинаковые, начинаются с фазы S1P1 и заканчиваются фазой S6P2.
Помимо синхроимпульсов устройство синхронизации в каждом машинном цикле формирует два (иногда один) сигнала стробирования младшего байта адреса ALE в виде положительного импульса в фазах S1P2–S2P1 и S4P2–S5P1. Временные диаграммы на рис. 7.1.5 иллюстрируют организацию машинных циклов;
● регистр команд РК, дешифратор команд ДК и ПЛМ, позволяющие в каждом машинном цикле сформировать набор микроопераций в соответствии с микропрограммой выполняемой команды;
● логика ввода–вывода ЛВВ для приема и выдачи сигналов, обеспечивающих обмен информацией МК с внешними устройствами через порты Р0–Р3;
● регистр PCON, имеющий единственный задействованный бит SMOD в позиции PCON.7 для удвоения скорости передачи данных через последовательный порт. Остальные биты зарезервированы для дальнейшего использования.
Формирователь адреса. Формирователь адреса (ФА), или счетчик команд РС, предназначен
для формирования текущего 16–разрядного адреса программной памяти и 8/16–разрядного адреса внешней памяти данных. В его состав входят (рис. 7.1.6):
● 16–разрядный буфер Б, осуществляющий связь между 8–разрядной шиной данных ШД и 16–разрядной внутренней шиной (ВШ) формирователя адреса;
● схема инкремента СИ для увеличения значения текущего адреса памяти программ на единицу;
● регистр для хранения текущего адреса команд РТА, поступающего из СИ;
● регистр указателя данных DPTR, состоящий из двух 8–разрядных регистров DPHи DPL. Он служит для хранения 16–разрядного адреса внешней памяти данных и может быть использован в качестве двух независимых программно доступных РОН;
● регистр формирователя адреса РФА для хранения исполнительного 16–разрядного адреса памяти программ или 8/16–разрядного адреса внешней памяти данных. Этот регистр используется также для передачи данных через порт Р0 во внешние устройства при выполнении команд MOVX @Rm, A и MOVX @DPRT, A.
Память данных. Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Внутренняя (резидентная) память (рис. 7.1.7) данных состоит из ОЗУ емкостью 128 байт, указателя стека SP, регистра адреса ОЗУ РА и дешифратора Дш. Указатель стека SP представляет собой 8–разрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н. Регистр адреса РА совместно с дешифратором Дш позволяет осуществить доступ к требуемой ячейке памяти, содержащей байт или бит информации.
В МК предусмотрена возможность увеличения объема памяти данных до 64 Кбайт путем подключения внешних запоминающих устройств.
В качестве примера на рис. 7.1.8 показана страничная организация внешней памяти данных ВПД емкостью 2К байт с использованием команд типа MOVX @
Rm(m = 0; 1). При этом порт Р0 работает как мультиплексированная шина адрес/данные, три линии порта P2 используются для адресации страницы внешнего ОЗУ, A остальные пять линий могут быть задействованы в качестве линий ввода–вывода.
На рис. 7.1.9 приведены временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ. На диаграммах обозначено:
● РСН - старший байт счетчика команд PC;
● DPL, DPH - младший и старший байты регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR - защелки порта P2;
● Rm (m = 0, 1) - регистры, используемые в командах MOVX @Rm, A и MOVX A, @Rm в качестве регистров косвенного адреса;
● Z - высокоомное состояние;
● D - период, в течение которого данные из порта Р0 вводятся в микроконтроллер. Память программ. Память программ предназначена для хранения программ, имеет свое (отдельно от памяти данных) адресное пространство и доступна только для чтения. В ее состав входит дешифратор Дш и ПЗУ (рис. 7.1.10). Для адресации памяти программ используется 16–разрядный счетчик РС, поэтому ее максимальная емкость составляет 64К байта. Внутренняя память программ состоит из ПЗУ емкостью 4К байт и 12–разрядного дешифратора. Внешняя память подключается по схеме на рис. 7.1.11. Если на вывод ¯EA МК подается 0 В (как показано на рис. 7.1.11), внутренняя память программ отключается. Все обращения к памяти начинаются с адреса 0000h. При подключении вывода ¯ЕА к источнику питания обращение к внутренней памяти программ по адресам 0000h–FFFFh и к внешней памяти программ по адресам 0FFFh–FFFFhпроисходит автоматически.
Для чтения внешней памяти программ МК вырабатывается сигнал ¯PSEN. При работе с внутренней памятью сигнал чтения не используется. При обращениях к внешней памяти программ всегда формируется 16–разрядный адрес. Младший байт адреса передается через порт Р0 в первой половине машинного цикла и фиксируется по срезу строба АLЕ в регистре Во второй половине цикла порт Р0 используется для ввода в МК байта данных из внешней памяти.
Старший байт адреса передается через порт P2 в течение всего времени обращения к памяти.
Временные диаграммы циклов чтения и записи при работе МК с внешним ОЗУ приведены на рис. 7.1.12.
На диаграммах обозначено:
● PCL OUT - выдача младшего байта счетчика команд PC;
● РСН OUT - выдача старшего байта счетчика команд PC;
● DPH - старший байт регистра указателя данных DPTR, который используется в качестве регистра для косвенной адресации в командах MOVX @DPTR,A и MOVX A,@DPTR;
● P2 SFR - защелки порта P2;
● INS IN - ввод байта инструкции (команды) из памяти программ;
● ADDR OUT - выдача младшего байта адреса внешней памяти данных из регистров Rm (m = 0, 1) или из регистра DPL (младшего регистра DPTR). Порты ввода–вывода. Назначение портов. Порты Р0, P1, P2, Р3 предназначены для обмена информацией между МК и внешними устройствами, A также для выполнения следующих функций:
● через порт Р0 выводится младший байт адреса А7…A0; выводится из МК и вводится в МК байт данных при работе с внешней памятью программ и внешней памятью данных (с разделением во времени);
● через порт P2 выводится старший байт адреса A15…А8 при работе с внешней памятью программ и внешней памятью данных (только при использовании команд MOVX A,@DPTR и MOVX @DPTR,A);
● линии порта Р3 могут быть задействованы на выполнение альтернативных функций, если в фиксатор–защелку этой линии занесена 1, в противном случае на выводе линии фиксируется 0. Альтернативные функции выводов порта P3 приведены в табл. 7.1.3.
Схемные особенности портов
На рис. 7.1.13 показаны схемы для одного канала каждого из портов МК, включающего в себя:
● защелку для фиксации принимаемого бита данных;
● выходной усилительный каскад (драйвер);
● узел связи с выходным каскадом (за исключением P2);
● цепь для передачи бита данных со стороны вывода порта, состоящую из буферов В2 и В3 (для порта Р4). Защелкой служит D–триггер, тактируемый внутренним сигналом «Запись в защелку». Бит данных с прямого выхода D–триггера может быть считан программно через буфер В1 сигналом «Чтение защелки» на линию внутренней шины данных (ШД) МК.
Выходной каскад порта Р0 представляет собой инвертор, особенности которого проявляются в том, что нагрузочный транзистор VT2 открывается только при обращениях к внешней памяти (при передаче через порт адреса и данных). Во всех других режимах нагрузочный транзистор закрыт. Поэтому для использования Р0 (рис. 7.1.13, а) в качестве выходного порта общего назначения к его выводам необходимо подключить внешние нагрузочные резисторы. При записи 1 в защелку порта инверторный транзистор VT1 запирается и внешний вывод порта Р0.Х переводится в высокоомное состояние. В этом режиме вывод порта Р0.Х может служить входом. Если порт Р0 используется как порт ввода/вывода общего назначения, каждый из его выводов Р0.Х может независимо от других работать как вход или как выход. Выходные каскады портов P1, P2, Р3 (рис. 7.1.13, б, в, г) выполнены по схемам инверторов с внутренним нагрузочным резистором, в качестве которого использован транзистор VT2.
Для уменьшения времени переключения при переходе выводов портов из состояния 0 в состояние 1 параллельно нагрузочному транзистору VT2 введен дополнительный транзистор VT3. Транзистор VT3 с помощью элементов в цепи затвора отпирается на время, равное двум периодам колебаний задающего кварцевого генератора (в течение фаз S1P1, S2P2 машинного цикла). Выходные каскады портов Р0, P2 (рис. 7.1.13, A, в) с помощью мультиплексора MX могут быть подключены либо к защелкам, либо к внутренним шинам «Адрес/ данные» и «Адрес». Выходной каскад порта P1 (рис. 7.1.13, 6) постоянно подключен к защелке.
Если вывод порта Р3 является выходом и его защелка содержит 1, то его выходным каскадом управляет аппаратно внутренний сигнал «Альтернативная функция выхода», обеспечивающий выполнение соответствующей альтернативной функции, т.е. на внешнем выводе формируется один из сигналов ¯WR,¯RD или RxD. Если же вывод порта задействован на вход, то поступающий на него альтернативный сигнал (TxD, ¯INT0, ¯INT1, Т0, Т1) передается на внутреннюю линию «Альтернативная функция входа».
Режим записи в порт.
При выполнении команды записи в порт новое значение записывается в защелку в фазе S6P2 и выводится непосредственно на выходной контакт порта в фазе S1P1 следующего машинного цикла.
Режим чтения порта
Команды чтения портов считывают информацию непосредственно с внешних контактов выводов порта или с выходов защелок. В первом случае бит данных с вывода порта считывается программно через буфер В2 сигналом «Чтение выводов» на линию внутренней шины данных (ШД) МК. Отметим, что сигналы «Запись в защелку», «Чтение защелки», «Чтение выводов» вырабатываются аппаратно при выполнении соответствующих команд.
Во втором случае реализуется так называемый режим «Чтение-Модификация-Запись», в котором команда считывает сигнал состояния защелки, при необходимости модифицирует его и затем записывает обратно в защелку. Режим «Чтение-Модификация-Запись» реализуется при выполнении следующих команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.
Чтение информации с выходов защелок позволяет исключить ошибки при интерпретации логического уровня на выводе порта. Продолжение статьи читайте во .
В настоящее время различными фирмами выпускается множество модификаций и аналогов этого семейства, как фирмой Intel, так и другими производителями, тактовая частота и объем памятивозросли в десятки раз и продолжают повышаться. Дополняется и набор встроенных в БИС модулей, в большое число современных моделей встроен рези- дентный быстродействующий АЦП, имеющий до 12, а сейчас может быть и более разря- дов. Но в основе семейства МСS51 БИС 8051, 80С51, 8751, 87С51, 8031, 80С31 фирмы Intel, первые образцыкоторыхбыли выпущеныв 1980 году.
Микроконтроллеры семейства MCS51 выполнены по высококачественной n-МОП технологии (серия 8ХХХ, аналог - серия 1816 в России и Белоруссии) и k-МОП техноло- гии (серия 8ХСХХ, аналог - серия 1830). Второй символ, следующий за 8 означает: 0 – РПЗУ на кристалле нет, 7 – РПЗУ объемом 4К с ультрафиолетовым стиранием. Третий символ: 3 – ПЗУ накристалленет, 5 – если нетРПЗУ, то на кристалле масочное ПЗУ.
И так 80С51 – БИС по k-МОП технологии с масочным ПЗУ на кристалле, 8031 – БИС n-МОП без памяти программ (ПЗУ, РПЗУ) на кристалле, 8751 – БИС n-МОП с ре- зидентным (размещенным на кристалле) РПЗУ с ультрафиолетовым стиранием. Мы да- лее и будем рассматривать БИС 8751, делая, если нужно оговорки об отличиях других схем, приводя те параметры, которые были опубликованы для первых серийных БИС. Дополнительную информацию о всех современных модификациях Вы, при необходимо- сти, можете найти в фирменных справочниках и технической документации.
А. Общие характеристики и назначение выводов
Основу семейство MCS51 составляет пять модификаций МК (имеющих идентич- ные основные характеристики), основное различие между которыми состоит в реали- зации памяти программ и мощности потребления (см. таблицу 3.1). Микроконтоллер восьмиразрядный, т.е. имеет команды обработки восьмиразрядных слов, имеет Гарвард- скую архитектуру, тактовая частота у базовых образцов семейства составляет 12 МГц.
Таблица 3.1.
Микро- схемы |
Внутренняя память про- грамм, байт |
Тип памяти программ |
Внутренняя память данных, байт |
Тактовая частота, МГц |
Ток потреб- ления, мА |
МК 8051 и 80С51 содержат масочно-программируемое при изготовлении кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитаны на применение в массовой продукции. МК 8751 содержит РПЗУ емкостью 4096 байт с ультрафиолетовым стиранием и удобна на этапе разработки системы при отладке программ, а также при производстве не- большими партиями или при создании систем, требующих в процессе эксплуатации пе-
риодической подстройки.
МК 8031 и 80С31 не содержат встроенной памяти программ. Они, как и описанные ранее модификации могут использовать до 64 Кбайт внешней памяти программ и эффек- тивно использоваться в системах, требующих существенно большего по объему (чем 4 Кбайт на кристалле) ПЗУ памяти программ.
Каждый МК семейства содержит резидентную память данных емкостью 128 байт с возможностью расширения общего объема оперативной памяти данных до 64 Кбайт за счет использования внешних ИС ОЗУ.
центральный восьмиразрядный процессор;
память программ объемом 4 Кбайт (только 8751 и 87С51);
память данных объемом 128 байт;
четыре восьмиразрядных программируемых порта ввода-вывода;
два 16-битовых многорежимных таймера/счетчика;
систему автовекторных прерываний с пятью векторами и двумя программно управ- ляемыми уровнями приоритетов;
последовательный интерфейс, включающий универсальный дуплексный приемопе- редатчик, способный функционировать в четырех режимах;
тактовый генератор.
Система команд МК содержит 111 базовыхкомандс форматом1, 2, или 3 байта. Микроконтроллер имеет:
32 регистра общего назначения РОН, организованных как четыре банка по восемь регистров с именами R0… R7, выбор того или иного банка определяется программой пу- тем установки соответствующих бит в регистре состояния программы PSW;
128 программно-управляемых флагов (битовый процессор, см. далее);
набор регистров специальных функций, управляющих элементами МК. Существуют следующие режимы работы микроконтроллера:
1). Общий сброс. 2).Нормальное функционирование. 3).Режим пониженно- го энергопотребления и режимхолостого хода. 4). Режим программирования ре- зидентного РПЗУ, если оно есть.
Мы здесь основное внимание уделим первым двум режимам работы, подробное описаниесоставаи работыМКвовсех режимахприведено в приложенииП1.
РОН и зона битового процессора расположены в адресном пространстве рези- дентной ОЗУ с адресами от 0 до80h.
В верхней зоне адресов резидентной оперативной памяти расположены регистры спе- циальных функций (SFR, Special Function Registers). Их назначение приведено в табл. 3.2.
Таблица 3.2.
Обозначение |
Наименование | |
Аккумулятор | ||
Регистр В | ||
Регистр состояния программы | ||
Указатель стека | ||
Указатель данных. 2 байта: | ||
Младший байт | ||
Старший байт | ||
Регистр приоритетов прерываний | ||
Регистр разрешения прерываний | ||
Регистр режимов таймера/счетчика | ||
Регистр управления таймера/счетчика | ||
Таймер/счетчик 0. Старший байт | ||
Таймер/счетчик 0. Младший байт | ||
Таймер/счетчик 1. Старший байт | ||
Таймер/счетчик 1. Младший байт | ||
Управление последовательным портом | ||
Буфер последовательного порта | ||
Управление потреблением |
* - регистры, допускающие побитовую адресацию
Кратко рассмотрим функции регистров SFR, приведенных в таблице 3.2.
Аккумулятор АCC - регистр аккумулятора. Команды, предназначенные для рабо-
ты с аккумулятором, используют мнемонику "А", например, MOV А, Р2 . Мнемоника "АСС" используется, к примеру, при побитовой адресации аккумулятора. Так, символи- ческое имя пятого бита аккумулятора при использовании ассемблера А5М51 будет сле- дующим: АСС. 5. .
Регистр В . Используется во время операций умножения и деления. Для других инструкций регистр В может рассматриваться как дополнительный сверхоперативный регистр.
Регистр состояния программы PSW содержит информацию о состоянии про- граммы и устанавливается частично автоматически по результату выполненной опера- ции, частично пользователем. Обозначение и назначение разрядов регистра приведены соответственно в таблицах 3.3 и 3.4.
Таблица 3.3.
Обозначение |
Таблица 3.4.
Обозна- чение |
Назначение битов |
Доступ к биту |
||||
Флаг переноса. Изменяется во время выполнения ряда арифметических и логических инструкций. |
Аппаратно или программно |
|||||
Флаг дополнительного переноса. Аппаратно уста- навливается/сбрасывается во время выполнения инструкций сложения или вычитания для указания переноса или заема в бите 3 при образовании младшего полубайта результата (D0-D3). |
Аппаратно или программно |
|||||
Флаг 0. Флаг, определяемый пользователем. |
Программно |
|||||
Программно |
||||||
Указатель банка рабочих регистров |
Программно |
|||||
Банк 0 с адресами (00Н - 07Н) Банк 1 с адресами (08Н – 0FН) Банк 2 с адресами (10Н - 17Н) Банк 3 с адресами (18Н – 1FН) | ||||||
Флаг переполнения. Аппаратно устанавливается или сбрасывается во время выполнения арифмети- ческих инструкций для указания состояния пере- полнения |
Аппаратно или программно |
|||||
Резервный. Содержит триггер, доступный по запи- си и чтению, который можно использовать | ||||||
Бит четности. Аппаратно сбрасывается или уста- навливается в каждом цикле инструкций для указа- ния четного или нечетного количества разрядов ак- кумулятора, находящихся в состоянии "1". |
Аппаратно или программно |
Указатель стека SР - 8-битовый регистр, содержимое которого инкрементирует- ся перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07Н, а область стека в ОЗУ данных начинается с адреса 08Н. При необходимости путем переопределения указателя стека область стека может быть расположена в любом месте внутреннего ОЗУ данных микроконтроллеры.
Указатель данных DPTR состоит из старшего байта (DPH) и младшего байта
(DPL). Содержит 16-битовый адрес при обращении к внешней памяти. Может использо-
ваться как 16-битовый регистр или как два независимых восьмибитовых регистра.
Порт0 - ПортЗ. Отдельными битами регистров специальных функций Р0, Р1, Р2, РЗ являются биты -"защелки" выводов портовР0, Р1, Р2, РЗ.
Буфер последовательного порта SBUF представляет собой два отдельных реги- стра: буфер передатчика и буфер приемника. Когда данные записываются в SBUF, они поступают в буфер передатчика, причем запись байта в SBUF автоматически иницииру- ет его передачу через последовательный порт. Когда данные читаются из SBUF, они вы- бираются из буфера приемника.
Регистры таймера. Регистровые пары (ТН0, ТL0) и (ТН1, TL1) образуют 16-
битовые счетные регистры соответственно таймера/счетчика 0 и таймера/счетчика 1.
Регистры управления. Регистры специальных функций IР, IЕ, ТМOD, ТСОN, SCON и РСОN содержат биты управления и биты состояния системы прерываний, тай-
меров/счетчиков и последовательного порта. Они будут подробно рассмотрены далее.
RxD TxD INT0 INT1 T0 T1 WR
P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RST BQ2 BQ 1 EA
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
МК при функционировании обеспечивает:
минимальное время выполнения команд сложения-1 мкс;
аппаратное умножение и деление с минимальным време- нем выполнения - 4 мкс.
В МК предусмотрена возможность задания частоты внутреннего генератора с помощью кварца, LС-цепочки или внешнего генератора.
Расширенная система команд обеспечивает побайтовую и побитовую адресацию, двоичнуюи двоично-десятичную арифметику, индикацию пере- полнения и определения четности/нечетности, воз- можность реализации логического процессора.
Важнейшей и отличительной чертой архитек- туры семейства MCS51 является то, что АЛУ может наряду с выполнением операций над 8-разрядными типами данных манипулировать одноразрядными данными. Отдельные программно-доступные биты могут быть установлены, сброшены или заменены их дополнением, могут пересылаться, проверяться и
Рис.3.2. Внешние выводы
микроконтроллера
использоваться в логических вычислениях. Тогда как поддержка простых типов данных (при сущест-
вующей тенденции к увеличению длины слова) может с первого взгляда показаться ша- гом назад, этокачестводелает микроконтроллеры семействаMCS51 особенно удобными для применений, в которых используются контроллеры. Алгоритмы работы по- следних по своей предполагают наличие входных и выходных булевых переменных, которые сложно реализовать при помощи стандартных микропроцессоров. Все эти свой- ства в целом называются булевым процессором семейства MCS51. Благодаря такому мощному АЛУ набор инструкций микроконтроллеры семейства MCS51 одинаково хоро- шо подходит как для применений управления в реальном масштабе времени, так и для ал- горитмов с большим объемом данных.
Схемотехническое изображение микроконтроллера представлено на рис. 3.2. В ба- зовом варианте он упакован в 40-выводной DIP корпус. Рассмотрим назначение выводов.
Начнем с выводов питания «0 В» и «5 В» , по которым он получает основное пита- ние. Ток потребления приведен в табл. 3.1.
Вывод «RST» - сброс микроконтроллера. При подаче на этот вывод активного вы- сокого уровня запускается режим общего сброса и МК производит следующие действия:
Устанавливает счетчик команд PC и все регистры специальных функций, кроме защелок портов Р0-РЗ, указателя стека SP и регистра SBUF, в ноль;
указатель стека принимает значение равное 07Н;
запрещает все источники прерываний, работу таймеров-счетчиков и последовательного
выбирает БАНК 0 ОЗУ, подготавливает порты Р0-РЗ для приема данных и опре-
деляет выводы ALE и РМЕ как входы для внешней синхронизации;
в регистрах специальных функций PCON, IP и IE резервные биты при- нимают случайные значения, а все остальные биты сбрасываются в ноль;
в регистре SBUF устанавливаются случайные значения.
устанавливает фиксаторы-защелки портов Р0-РЗ в "1".
Состояния регистров микроконтроллера после сброса приведены в таблице 3.5.
Таблица 3.5.
Информация |
|
Неопределенная |
|
0ХХХ0000В для k-MOП 0XXXXXXXB для n-МОП |
Вывод RST имеет и альтернативную функцию. Через него подается резервное питания для сохранения неизменным содержимого ОЗУ микроконтроллера при снятии основного.
Выводы BQ1, BQ2 – предназначены для подключения кварцевого резонатора, оп- ределяющего тактовую частоту работы МК.
Вывод ЕА` (E xternal A dress – внешний адрес) - предназначен для активизации ре- жима чтенияуправляющих кодов из внешней памяти программ, при подаче на этот вывод активного низкогоуровня. Вывод имеет иальтернативное назначение (функцию). На него подается напряжение программирования РПЗУ в режиме программирования.
Вывод PME (P rogram M emory E nable – разрешение памяти программ ) - предна- значен для управления циклом чтения из памяти программ и автоматически активизиру- ется МК в каждом машинном цикле.
Вывод ALE (A dress L ength E nable – разрешение младшего адреса) стробирует вы- вод младшей части адреса по порту Р0. Вывод используется и при программировании РПЗУ, при этом на него подается стробирующий процесс программирования импульс.
МК содержит четыре группы портов: Р0, Р1, Р2, и Р3. Это оставшиеся из 40-авыводов микроконтроллера. Эти порты могут служитьдля побитного ввода – вывода информации, но помимо этого каждый из них имеет свою специализацию. Обобщенная функциональная схе- ма порта представлена на рис. 3.3. Порт содержит выходные ключи на полевых транзисторах, подключенные к выводу, переключатель функций, защелку на D-триггере и логику управле- ния. Взащелку по внутреннейшине МК можетбытьзаписана единица илиноль. Эта инфор- мация через переключатель функций поступает на выходные ключи и вывод МК. В состоя- нии единицы оба транзистора N и N1 закрыты, но открыт N2. В состоянии нуля N открывает-
ся, а N2 закрывается. В момент, когда порт выполняет альтернативную функцию, на которую онспециализирован, состояние защелкис вывода снимается. Микроконтроллер отдельно мо- жет считать состояние защелки порта и состояние его вывода, установленное внешним сигна- лом. Для этого в ассемблере МК имеются специальные команды, активизирующие соответст- вующие линии. Для чтения состояния вывода в защелку соответствующего порта должна
быть предварительно записана
От внутрен-
Управление Защелка
Переключатель функций
Vcc
Выходные
единица. При активизации линии «чтение защелки» на выходе ячейки «И», к которой подключенаэта линияпоявля-
ней шины МК D Q
Запись в защелку C Q
Чтение защелки
Вывод порта
ется состояние защелки, по- ступающее на внутреннюю шину МК, при активизации
«чтение вывода» - состояние внешнего вывода порта.
Порт Р0 – универсаль- ный двунаправленный порт
ввода-вывода. За этим портом
закреплена функция организа- ции внешних шин адресов и
Рис. 3.3. Функциональная схема порта микроконтроллера
данных для расширенияпамя- ти программ и памяти данных
микроконтроллера. Когда идет обращение к внешней памяти программ или выполняется ко- манда обращения к внешней памяти данных, на выводах порта устанавливается младшая часть адреса (А0…А7), которая стробируется высоким уровнем на выводе ALE. Затем, при записи в память данных, записываемая информация с внутренней шины МК поступает на выводы порта Р0. В операциях чтения, наоборот, информация с выводов порта поступает на внутреннюю ши- ну. Особенностью порта Р0 является отсутствие «подтягивающего» транзистора N2, обеспечи- вающего подачу питания на вывод. При записи в защелку порта единицы он просто переводит- ся в высокоимпедансное состояние, что необходимо для нормальной работы шины данных. При необходимости запитывать через вывод какие либо внешние устройства, следует преду- сматривать внешние резисторы от цепей питания на вывод порта.
Порт Р1 – универсальный двунаправленный порт ввода-вывода без альтернатив- ных функций.
Порт Р2 – универсальный двунаправленный портввода-вывода, в качестве альтер- нативной функции осуществляющий выдачу старшей части адреса (А8…А15) при обра- щении к внешней памяти.
Порт Р3 – универсальный двунаправленный порт ввода-вывода, каждый бит кото- рого предусматривает выполнениеразличныхальтернативных функций. Приэтом альтер- нативные функции реализуются только в том случае, если в защелки выводов порта запи- саны единицы, в противном случае выполнение альтернативных функций блокируется. Перечислим их раздельно для каждого бита:
Р3.0 – RxD (R ead eX ternal D ate, читать внешние данные) – вход встроенного после- довательного приемо-передатчика.
Р3.1 – ТxD (T ype eX ternal D ate, передавать внешние данные) – выход встроенного последовательного приемо-передатчика.
Р3.2 – INT0` (INT errupt, прерывание) – вход внешнего прерывания 0.
Р3.3 – INT1` – вход внешнего прерывания 1.
Р3.4 – С/T0 – вход нулевого встроенного таймера/счетчика.
Р3.5 – С/T1 – вход первого встроенного таймера/счетчика.
Р3.6 – WR` (W rite, писать) – вывод управления циклом записи в памяти данных.
Р3.7 – RD` (R ead, читать) – вывод управления циклом чтения из памяти данных.
Выводы портаР1, Р2 и Р3 способны в единице выдавать тококоло0.2мА и принимать в нуле ток 3 мА, выводы порта Р0 мощнее и способны в единице выдавать ток около 0.8мА и при- нимать в нуле ток 5 мА. Краткая информация о назначении выводов микроконтроллера приведе- на в таблице 3.6.
Таблица 3.6.
Обозначение |
Назначение вывода | ||
8-разрядныи двунаправленный порт Р1. Вход адреса А0-А7 при проверке внутреннего ПЗУ (РПЗУ) |
вход/ выход |
||
Сигнал общего сброса. Вывод резервного пита- ния ОЗУ от внешнего источника (для 1816) | |||
8-разрядный двунаправленный порт P3 с допол- нительными функциями |
вход/ выход |
||
Последовательные данные приемника - RхD | |||
Последовательные данные передатчика - ТхD | |||
Вход внешнего прерывания 0- INТ0` | |||
Вход внешнего прерывания 1-INT1` | |||
Вход таймера/счетчика 0: - Т0 | |||
Вход таймера/счетчика 1: - Т1 | |||
Выход стробирующего сигнала при записи во внешнюю память данных: - WR` | |||
Выход стробирующего сигнала при чтении из внешней памяти данных – RD` | |||
Выводы для подключения кварцевого резонато- ра. |
выход вход |
||
Общий вывод | |||
8-разрядный двунаправленный порт Р2. Выход адреса А8-А15 в режиме работы с внешней па- мятью. В режиме проверки внутреннего ПЗУ выводы Р2.0 - Р2.6 используются как вход адреса А8-А14. Вывод Р2.7 - разрешение чтения ПЗУ. |
вход/ выход |
||
Разрешение программной памяти | |||
Выходной сигнал разрешения фиксации адреса. При программировании РПЗУ сигнал: PROG |
вход/ выход |
||
Блокировка работы с внутренней памятью. При программировании РПЗУ подается сигнал UРR |
вход/ выход |
||
8-разрядный двунаправленный порт Р0. Шина адреса/данных г работе с внешней памятью. Вы- ход данных D7-D0 в режиме проверки внутрен- него ПЗУ (РПЗУ). |
вход/ выход |
||
Вывод питания от источника напряжения +5В |