- •Вычислительные машины, системы и сети. Микроконтроллеры и микропроцессоры в системах управления
- •Содержание
- •Глава 1. Архитектура семейства mcs51 14
- •Глава 2. Особенности микроконтроллера 80c51gb 46
- •Глава 3. Программирование mk 8051gb 94
- •Глава 4. Язык программирования asm-51 117
- •Глава 5. Язык программирования с-51 139
- •Введение
- •Глава 6. Подготовка программ в интегрированной среде разработки Keil μVision2 187
- •Глава 7. Описание учебного контроллера 204
- •Глава 1. Архитектура семейства mcs51
- •1.1 Общие характеристики
- •1.2 Структурная схема
- •1.4 Организация памяти
- •1.4.1 Память программ (пзу)
- •1.4.2 Память данных (озу)
- •1.4.3 Регистры специальных функций
- •1.4.4 Регистр флагов (psw)
- •1.5 Устройство управления и синхронизации
- •1.6 Организация портов ввода-вывода
- •1.6.1 Общие сведения
- •1.6.2 Альтернативные функции
- •1.7. Таймеры / счетчики микроконтроллеров семейства 8051
- •1.7.1. Структура таймеров-счетчиков
- •1.7.2 Режимы работы таймеров-счетчиков
- •1.8. Последовательный порт
- •1.8.1. Структура последовательного порта
- •1.8.2. Регистр управления/статуса приемопередатчика scon
- •1.8.3. Регистр управления мощностью pcon
- •1.9. Система прерываний
- •1.9.1. Структура системы прерываний
- •1.9.2 Выполнение подпрограммы прерывания
- •Глава 2. Особенности микроконтроллера 80c51gb
- •2.1 Функциональные особенности
- •2.2 Порты I/o p0-p5
- •2.2.1 Функционирование портов ввода-вывода
- •2.2.2 Запись в порт
- •2.3 Особенности системы прерываний 8xc51gb
- •Разрешение/запрещение прерываний
- •Регистр iе
- •Регистр iеа
- •Управление приоритетами прерываний
- •Регистр ip
- •Регистр iрн кристаллов 8xc51gb
- •Регистр ipа кристалла 8xc51gb
- •Регистр iрна кристаллов 8xc51gb
- •Внешние прерывания
- •Регистр exicon
- •2.3. Узел ацп
- •Регистры результатов преобразований ацп
- •Регистр результатов сравнения ацп - асмр
- •Регистр результата сравнения асмр
- •Режим сравнения ацп
- •Режим запуска ацп
- •Режимы входа ацп
- •Использование ацп для меньшего количества каналов
- •Ацп в режиме микропотребления.
- •2.4. Аппаратный сторожевой таймер
- •2.5. Обнаружение сбоя тактового генератора
- •2.6. Матрица программируемых счётчиков рса
- •2.6.1. Структура pca
- •2.6.2. Регистр режима счётчика рса (cmod)
- •2.6.3. Регистр управления счётчика рса (con)
- •Регистр управления рса - ccon
- •Режим 16-битного программного таймера
- •Высокоскоростной выход - hso
- •Режим сторожевого таймера (рис. 2.22)
- •Широтно-импульсный модулятор — pwm (рис.2.23, рис.2.24)
- •2.7. Расширенный последовательный порт
- •2.8. Таймеры/счетчики
- •Таймер 0 и Таймер 1
- •Таймер 2
- •Режимы работы таймера 2
- •Режим захвата
- •Генерирование импульсов
- •Глава 3. Программирование mk 8051gb
- •3.1. Программная модель (рис. 3.1, рис. 3.2)
- •3.2 Типы данных
- •3.3 Способы адресации данных
- •3.4 Система команд
- •3.4.1 Общая характеристика
- •3.4.2 Типы команд
- •3.4.3 Типы операндов
- •3.4.4 Команды пересылки данных микроконтроллера
- •3.4.5 Команды арифметических операций 8051
- •3.4.6 Команды логических операций микроконтроллера 8051
- •3.4.7 Команды операций над битами микроконтроллера 8051
- •3.4.8. Команды передачи управления микроконтроллера 8051
- •3.5 Отладка программ
- •Глава 4. Язык программирования asm-51
- •4.2 Запись текста программы
- •4.3 Алфавит языка.
- •4.4 Идентификаторы.
- •4.5 Числа
- •4.6 Директивы
- •4.7.4. Реализация подпрограмм обработки прерываний на языке asm51
- •4.7 Реализация подпрограмм на языке asm51
- •4.7.1 Структура подпрограммы-процедуры на языке asm51
- •4.7.2 Передача переменных-параметров в подпрограмму
- •4.7.3 Реализация подпрограмм-функций на языке asm51
- •4.8 Структурное программирование на языке ассемблера
- •4.9 Особенности трансляции многомодульных программ
- •4.10 Использование сегментов
- •4.10.1 Разбиение памяти мк на сегменты (рис. 4.9)
- •4.10.2 Абсолютные сегменты памяти
- •4.10.2 Перемещаемые сегменты памяти.
- •Глава 5. Язык программирования с-51
- •5.1 Общая характеристика языка
- •5.3 Структура программ с-51
- •5.3. Элементы языка программирования с-51
- •5.3.1. Символы
- •5.3.2. Лексические единицы, разделители и использование пробелов
- •5.3.3 Идентификаторы
- •5.3.4 Ключевые слова
- •5.3.5 Константы
- •5.4. Выражения в операторах языка программирования
- •5.5. Приоритеты выполнения операций
- •5.6. Операторы языка программирования c-51
- •5.6.1. Операторы объявления
- •5.6.2 Исполняемые операторы
- •5.6.3 Оператор присваивания
- •5.6.4 Условный оператор
- •5.6.5 Структурный оператор {}
- •5.6.6 Оператор цикла for
- •5.6.7 Оператор цикла с проверкой условия до тела цикла while
- •5.6.8 Оператор цикла с проверкой условия после тела цикла do while
- •5.6.9 Оператор break
- •5.6.10 Оператор continue
- •5.6.11 Оператор выбора switch
- •5.6.12 Оператор безусловного перехода goto
- •5.6.13 Оператор выражение
- •5.6.14 Оператор возврата из подпрограммы return
- •5.6.15 Пустой оператор
- •5.7. Объявление переменных в языке программирования
- •5.7.1. Объявление переменной
- •5.7.2 Категории типов данных
- •5.7.3 Целые типы данных
- •5.7.4 Числа с плавающей запятой
- •5.7.5 Переменные перечислимого типа
- •5.7.6. Объявление массивов в языке программирования c-51
- •5.7.7. Структуры
- •5.7.8. Объединения (смеси)
- •5.8. Использование указателей в языке c-51
- •5.8.1. Объявление указателей
- •5.8.2. Нетипизированные указатели
- •5.8.3. Память зависимые указатели
- •5.9. Объявление новых типов переменных
- •5.10. Инициализация данных
- •5.11. Использование подпрограмм в языке программирования с-51
- •5.11.1. Определение подпрограмм
- •5.11.2. Параметры подпрограмм
- •5.11.3. Предварительное объявление подпрограмм
- •5.11.4 Вызов подпрограмм
- •5.11.5 Рекурсивный вызов подпрограмм
- •5.11.6 Подпрограммы обработки прерываний
- •5.11.7 Области действия переменных и подпрограмм
- •5.12. Многомодульные программы
- •Глава 6. Подготовка программ в интегрированной среде разработки Keil μVision2
- •6.1 Создание проекта на языке asm-51
- •6.2 Пример создания проекта на языке c для учебного контроллера в интегрированной среде разработки Keil μVision2
- •Глава 7. Описание учебного контроллера
- •7.1. Структура контроллера (рис. 7.1)
- •7.2. Адресное пространство
- •7.2.1. Распределение памяти (рис. 7.2)
- •7.2.2 Внешняя память
- •7.2.3. Внутренняя память данных
- •7.3. Распределение портов ввода-вывода
- •7.4. Последовательный порт
- •7.5. Работа с жки
- •Приложение п1. Список рекомендуемых лабораторных работ
- •Конкретные задания для обучаемых составляет преподаватель. Для отладки каждой из программ необходимо:
- •7. Текст программы.
- •8. Перечень выявленных в примерах ошибок
- •9. Выводы.
- •Список литературы
- •195251, Санкт-Петербург, Политехническая ул., 29.
- •194021, Санкт-Петербург, Политехническая ул., 21
Глава 3. Программирование mk 8051gb
3.1. Программная модель (рис. 3.1, рис. 3.2)
Рис. 3.1. Структура внутренней памяти данных и РСФ
Рис. 3.2. Структура внешней памяти данных.
Внутренняя память данных представляет собой 128 восьмиразрядных ячеек, с адресами от 000h до 07Fh. Первые 32 байта организованы в четыре банка регистров общего назначения, обозначаемых соответственно банк 0 — банк 3. Каждый из них состоит из восьми регистров R0 — R7. В любой момент программе доступен только один банк регистров, номер которого содержится в третьем и четвертом битах слова состояния программы PSW .
Оставшееся адресное пространство может конфигурироваться разработчиком по своему усмотрению: в нем располагаются стек, системные и пользовательские области данных. Обращение к ячейкам памяти данных возможно двумя способами. Первый способ — прямая адресация ячейки памяти. В этом случае адрес ячейки является операндом соответствующей команды. Второй способ — косвенная адресация с помощью регистров R0 или R1: перед выполнением соответствующей команды в один из них должен быть занесен адрес ячейки, к которой необходимо обратиться.
Часть памяти данных представляет собой так называемую битовую область, в ней имеется возможность при помощи специальных битовых команд адресоваться к каждому разряду ячеек памяти. Адрес прямо адресуемых битов может быть записан либо в виде (Адрес Байта).(Разряд), например выражение 21.3 означает третий разряд ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса. Соответствие этих двух способов адресации можно определить по табл. 3.1.
Для регистров специальных функций адрес прямо адресуемых битов может быть записан либо в виде выражения (Название Регистра).(Разряд), например, выражение SCON.3 означает адрес третьего разряда регистра SCON, либо в виде абсолютного битового адреса, который для данного бита равен (табл.3.1) 9B. Кроме того, некоторые биты управляющих регистров имеют собственные названия, так например данный бит имеет название TB8.
Адресация битов регистров специальных функций
Таблица 3.1.
Прямой адрес байта−− |
|
Адреса битов по разрядам |
|
|
Имя рег-ра
|
||||
(D7) |
|
|
|
|
|
|
(D0) |
||
0FFH |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0F8H |
FF |
FE |
FD |
FC |
FB |
FA |
F9 |
F8 |
P5 |
|
|
|
|
|
|
|
|
|
|
0F7H |
- |
- |
- |
- |
- |
SEPFWR |
SEPFRD |
SEPIF |
SEPSTAT |
|
|
|
|
|
|
|
|
|
|
0F0H |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
B |
|
|
|
|
|
|
|
|
|
|
0E8H |
EF |
EE |
ED |
EC |
EB |
EA |
E9 |
E8 |
CICON |
|
|
|
|
|
|
|
|
|
|
0E0H |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
E0 |
ACC |
|
|
|
|
|
|
|
|
|
|
0DEH |
- |
ECOM4 |
CAPP4 |
CAPN4 |
MAT4 |
TOG4 |
PWM4 |
ECCF4 |
CCAPM4 |
|
|
|
|
|
|
|
|
|
|
0DDH |
- |
ECOM3 |
CAPP3 |
CAPN3 |
MAT3 |
TOG3 |
PWM3 |
ECCF3 |
CCAPM3 |
|
|
|
|
|
|
|
|
|
|
0DCH |
- |
ECOM2 |
CAPP2 |
CAPN2 |
MAT2 |
TOG2 |
PWM2 |
ECCF2 |
CCAPM2 |
|
|
|
|
|
|
|
|
|
|
0DBH |
- |
ECOM1 |
CAPP1 |
CAPN1 |
MAT1 |
TOG1 |
PWM1 |
ECCF1 |
CCAPM1 |
|
|
|
|
|
|
|
|
|
|
0DAH |
- |
ECOM0 |
CAPP0 |
CAPN0 |
MAT0 |
TOG0 |
PWM0 |
ECCF0 |
CCAPM0 |
|
|
|
|
|
|
|
|
|
|
0D9H |
CIDL |
WDTE |
- |
- |
- |
CPS1 |
CPS0 |
ECF |
CMOD |
|
|
|
|
|
|
|
|
|
|
0D8H |
CF |
CR |
- |
CCF4 |
CCF3 |
CCF2 |
CCF1 |
CCF0 |
CCON |
|
|
|
|
|
|
|
|
|
|
0D7H |
- |
- |
SEPE |
SEPREN |
CLKPOL |
CLKPH |
SEPSI |
SEPSO |
SEPCON |
|
|
|
|
|
|
|
|
|
|
0D0H |
CY |
AC |
FO |
RS1 |
RS0 |
V |
- |
P |
PSW |
|
|
|
|
|
|
|
|
|
|
0C9H |
- |
- |
- |
- |
- |
- |
T2OE |
DCEN |
T2MOD |
|
|
|
|
|
|
|
|
|
|
0C8H |
TF2 |
EXF2 |
RCLK |
TCLK |
EXEN2 |
TR2 |
C/T2 |
CP/RL2 |
T2CON |
|
|
|
|
|
|
|
|
|
|
0C7H |
CMP0 |
CMP1 |
CMP2 |
CMP3 |
CMP4 |
CMP5 |
CMP6 |
CMP7 |
ACMP |
|
|
|
|
|
|
|
|
|
|
0C6H |
- |
IE6 |
IE5 |
IE4 |
IE3 |
IE2 |
IT3 |
IT2 |
EXICON |
|
|
|
|
|
|
|
|
|
|
0C0H |
C7 |
C6 |
C5 |
C4 |
C3 |
C2 |
C1 |
C0 |
P4 |
|
|
|
|
|
|
|
|
|
|
0B8H |
- |
PPC |
PT2 |
PS |
РT1 |
РХ1 |
РТ0 |
РХ0 |
IP |
|
|
|
|
|
|
|
|
|
|
0B7H |
- |
PPCH |
PT2H |
PSH |
PT1H |
PX1H |
PT0H |
PX0H |
IPH |
|
|
|
|
|
|
|
|
|
|
0B6H |
PAD |
PX6 |
PX5 |
PX4 |
PX3 |
PX2 |
PC1 |
PSEP |
IPA |
|
|
|
|
|
|
|
|
|
|
0B5H |
PADH |
PX6H |
PX5H |
PX4H |
PX3H |
PX2H |
PC1H |
PSEPH |
IPAH |
|
|
|
|
|
|
|
|
|
|
0B0H |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
P3 |
|
|
|
|
|
|
|
|
|
|
0A8H |
EA |
EC |
ET2 |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
IE |
|
|
|
|
|
|
|
|
|
|
0A7H |
EAD |
EX6 |
EX5 |
EX4 |
EX3 |
EX2 |
EC1 |
ESEP |
IEA |
|
|
|
|
|
|
|
|
|
|
0A0H |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
P2 |
|
|
|
|
|
|
|
|
|
|
98H |
FE |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
T1 |
R1 |
SCON |
|
|
|
|
|
|
|
|
|
|
97H |
- |
- |
AIF |
ACE |
ACS1 |
ACS0 |
AIM |
ATM |
ACON |
|
|
|
|
|
|
|
|
|
|
90H |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
P1 |
|
|
|
|
|
|
|
|
|
|
89H |
GATE1 |
C/T1 |
M11 |
M01 |
GATE0 |
C/T0 |
M10 |
TM00 |
TMOD |
|
|
|
|
|
|
|
|
|
|
88H |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
TCON |
|
|
|
|
|
|
|
|
|
|
87H |
SMOD1 |
SMOD0 |
- |
POF |
GF1 |
GF0 |
PD |
IDL |
PCON |
|
|
|
|
|
|
|
|
|
|
80H |
87 |
86 |
85 |
84 |
83 |
82 |
81 |
80 |
P0 |
`-` − бит не используется
` IE0` − бит устанавливается/сбрасывается аппаратно
Для обращения к внешней памяти данных используется только косвенная адресация с помощью регистров R0 и R1 или с помощью 16-разрядного регистра-указателя DPTR. Последний относится к группе регистров специальных функций и с его помощью можно адресовать все 64 Кбайта внешней памяти.
