- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Процессор микроконтроллера
Процессор выполняет команды программы и организует их выполнение в заданной последовательности. Система команд микроконтроллеров семейства АТ89С51 содержит 111 команд.
Процессор содержит генератор тактового сигнала (OSC), шестнадцатиразрядный счётчик команд (PC), шестнадцатиразрядный регистр-указатель данных (DPTR), состоящий из двух восьмиразрядных регистров – старшего (DPH) и младшего (DPL), восьмиразрядный регистр – указатель стека (SP), восьмиразрядный регистр управления (PCON) и арифметико-логическое устройство (ALU).
Генератор тактового сигнала формирует последовательность тактовых импульсов. Период следования тактовых импульсов, равный длительности такта работы микроконтроллера, определяется резонансной частотой подключённого к микроконтроллеру кварцевого резонатора (рисунок 1.3). При использовании внешнего синхрогенератора сигнал подается на вход XTAL1, а выход XTAL2 остается неподключенным.
С1, С2 = 30 пФ10 пФ; R1=8,2 кОм; С3=10 мкФ
Рисунок 1.3 – Типовая схема включения микроконтроллера |
Микроконтроллеры семейства АТ89С51 изготовлены по КМОП (CMOS) технологии и имеют полностью статическую структуру. Они могут работать при значениях тактовой частоты от 0 Гц. Максимальное значение тактовой частоты у микроконтроллера составляет 24 МГц.
В состав ALU входят восьмиразрядные регистры: регистр-аккумулятор ACC, вспомогательный регистр B и регистр слова-состояния программы PSW.
Контрольные вопросы
На какие выводы микроконтроллера подается питание?
Каким уровнем организуется сброс микроконтроллера?
Что означает «статическая структура»?
Какие устройства входят в состав микроконтроллера?
Какие регистры содержит процессор микроконтроллера? За что они отвечают?
Адресное пространство микроконтроллера
Адресуемым элементом памяти МК является восьмиразрядная ячейка.
Внутреннее постоянное запоминающее устройство (IROM) представляет собой программируемое запоминающее устройство с электрическим стиранием записи, выполненное по CMOS Flash-технологии (Flash Memory). Число восьмиразрядных ячеек в IROM микроконтроллера составляет 4 К.
IROM и внешнее постоянное запоминающее устройство (EROM) предназначены для хранения команд программы и констант. Адреса, используемые при обращении к IROM и EROM, образуют единое адресное пространство 64 К.
Внутреннее оперативное запоминающее устройство (IRAM) является статическим оперативным запоминающим устройством (SRAM). Адреса, используемые при обращении к IRAM, образуют адресное пространство внутренней оперативной памяти объёмом 256 байт (таблица 1.2).
Младшая половина адресов (от 00h до 7Fh) используется только для обращения к ячейкам IRAM. Старшая половина адресов используется для обращения к регистрам, расположенным в CPU и в периферийных устройствах. Обращение к ячейкам IRAM, которым соответствуют адреса от 00H до 7Fh, можно выполнять как по командам с прямой, так и по командам с косвенной адресацией.
В IRAM микроконтроллера образован стек типа LIFO. Адрес при записи байта в стек образуется путём увеличения на единицу адреса, хранящегося в регистре-указателе стека (SP). Адрес при чтении байта из стека берётся из регистра-указателя стека, после чего адрес в этом регистре уменьшается на единицу. При сбросе микроконтроллера в регистр-указатель стека заносится код 07Н. Путём записи в регистр SP иного начального адреса стек может быть смещён в другую область IRAM.
32 ячейки памяти в IRAM, которым соответствуют адреса от 00Н до 1FH, могут использоваться как регистры. К этим ячейкам можно обращаться как по командам с прямой или косвенной адресацией, так и по командам с регистровой адресацией. Группа из 32 регистров разделена на 4 банка (RB0–RB3). Регистры в пределах банка имеют номера от 0 до 7 (R0–R7).
Таблица 1.2 – Структура IRAM микроконтроллера
Адреса |
Назначение |
Тип адресации |
|||||||||||||
FF |
Регистры специальных функций (SFR) |
Прямая*, косвенная**, поразрядная*** |
|||||||||||||
… |
|||||||||||||||
80 |
|||||||||||||||
7F |
|
Прямая, косвенная, поразрядная |
|||||||||||||
… |
|
||||||||||||||
2F |
Область поразрядного обращения |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 |
||||||
2E |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
|||||||
… |
… |
… |
… |
… |
… |
… |
… |
… |
|||||||
21 |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 |
|||||||
20 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
|||||||
1F |
Банки регистров |
RB3 |
R7 |
||||||||||||
… |
… |
||||||||||||||
18 |
R0 |
||||||||||||||
17 |
RB2 |
R7 |
|||||||||||||
… |
… |
||||||||||||||
10 |
R0 |
||||||||||||||
0F |
RB1 |
R7 |
|||||||||||||
… |
… |
||||||||||||||
08**** |
R0 |
||||||||||||||
07 |
RB0 |
R7 |
|||||||||||||
… |
… |
||||||||||||||
00 |
R0 |
||||||||||||||
* |
При обращении к ячейкам как к регистрам специальных функций |
||||||||||||||
** |
При обращении к ячейкам как к памяти |
||||||||||||||
*** |
Допускают только адреса, кратные восьми (80h, 88h,…, F8h) |
||||||||||||||
**** |
Дно стека при сбросе микроконтроллера |
Выбор регистрового банка, в котором при обращении находится регистр с указанным номером, выполняется путём предварительной установки в определённое состояние двух разрядов в регистре PSW. Схема распределения разрядов в регистре PSW приведена на рисунке 1.4.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
– |
P |
Рисунок 1.4 – Схема распределения разрядов в регистре PSW |
Для выбора регистрового банка используются разряды регистра PSW.4=RS1 и PSW.3=RS0. Регистровые банки RB0–RB3 выбираются при комбинациях значений RS1, RS0=00, 01, 10 и 11 соответственно. Регистры R0 и R1 в каждом регистровом банке могут быть использованы для размещения адресов при выполнении команд с косвенной адресацией.
16 ячеек памяти в IRAM, которым соответствуют адреса от 20Н до 2FH, допускают поразрядное обращение. Биты в ячейках памяти IRAM с побитовой адресацией имеют адреса от 00H до 7FH.