
- •Введение
- •Архитектура микроконтроллера.
- •1.1 Структурная организация микроконтроллера i8051.
- •Назначение выводов микроконтроллера 8051.
- •1.2 Память
- •Память программ
- •Масочная память
- •Однократно программируемая память
- •Репрограммируемая память
- •Память с электрическим стиранием
- •Флэш-память
- •Память программ микроконтроллера 8051 (пзу).
- •Память данных
- •Статическая память
- •Память с электрическим стиранием
- •Память данных микроконтроллера 8051 (озу).
- •Специализированные ячейки флэш-памяти
- •Работа с внешней памятью микроконтроллера 8051.
- •1.3 Процессорное ядро
- •Регистр инструкций
- •Программный счетчик
- •Арифметико-логическое устройство
- •Арифметико-логическое устройство микроконтроллера 8051.
- •Регистры общего назначения
- •Регистр состояния
- •Регистр флагов (psw) микроконтроллера 8051.
- •Регистры ввода/вывода, специальные регистры.
- •1.4 Тактовый генератор
- •1.5 Система сброса
- •Источники сброса
- •1.6 Система прерываний
- •Алгоритм обработки прерываний
- •Система прерываний микроконтроллера 8051.
- •Регистр масок прерывания (ie).
- •Регистр приоритетов прерываний (ip).
- •Выполнение подпрограммы прерывания.
- •Вектора прерываний
- •1.7 Порты ввода/вывода организация ввода/вывода
- •Алгоритмы обмена данными
- •Асинхронный обмен
- •Симплексный обмен
- •Устройство портов.
- •Особенности электрических характеристик портов.
- •1.8 Таймеры-счетчики.
- •Таймеры-счетчики микроконтроллеров семейства 8051.
- •1.9 Последовательный порт микроконтроллера 8051.
- •Регистр управления/статуса приемопередатчика scon.
- •Функциональное назначение бит регистра управления/статуса приемопередатчика scon.
- •Скорость приема/передачи информации через последовательный порт.
- •Регистр управления мощностью pcon.
- •1.10 Режимы работы микроконтроллера 8051 с пониженным энергопотреблением.
- •Режим хх.
- •Режим внп.
- •1.11 Устройства ввода/вывода дискретных сигналов
- •1.12 Устройства ввода/вывода аналоговых сигналов
- •Интегрирующий преобразователь
- •Сигма-дельта преобразователь
- •1.13 Устройства обмена данными с другими микроконтроллерами
- •2. Программирование микроконтроллера
- •2.1 Система команд Мнемонические обозначения
- •Типы команд
- •Типы операндов
- •Группы команд.
- •Oбозначения, используемые при описании команд.
- •Команды пересылки данных микроконтроллера 8051.
- •Команды арифметических операций 8051.
- •Команды логических операций микроконтроллера 8051.
- •Команды операций над битами микроконтроллера 8051.
- •Команды передачи управления микроконтроллера 8051.
- •2.2 Язык ассемблера
- •Операнды
- •Операторы
- •Директивы ассемблера.
- •Командная строка
- •2.3 Особенности программирования микроконтроллеров общие особенности.
- •Типы инструментальных средств разработки и отладки программ для микроконтроллеров.
- •Внутрисхемные эмуляторы.
- •Классификация внутрисхемных эмуляторов.
- •Функциональные возможности внутрисхемных эмуляторов.
- •Достоинства и недостатки внутрисхемных эмуляторов.
- •Программные симуляторы.
- •Платы развития.
- •Отладочные мониторы.
- •Эмуляторы пзу.
- •Типичные функциональные модули средств разработки и отладки.
- •Отладчик.
- •Узел эмуляции микроконтроллера.
- •Эмуляционная память.
- •Подсистема точек останова.
- •Процессор точек останова.
- •Трассировщик.
- •Профилировщик.
- •Интегрированная среда разработки.
Операторы
Приоритет |
Оператор |
Описание |
|
MOD |
Вычисляет остаток от деления левого операнда на правый |
SHL, SHR |
Сдвигает влево (вправо) левый операнд на количество бит, заданных правым операндом. |
|
LT, LE, EQ, GE, GT, NE |
Операторы отношений. Могут также записываться в форме <, <=, =, >=, <>. Дают значение 0FFFFH если выражение истинно и 0 – если ложно. |
|
NOT, AND, OR, XOR |
Выполняют соответствующие битовые операции над операндами. |
|
HIGH, LOW |
Выделяют старший (младший ) байт выражения. |
|
$ |
Специальный символ, представляющий значение программного счетчика. Может использоваться вместо метки или константы. |
Все операторы имеют приоритет при вычислении выражений:
Высший выражение в скобках ()
унарный +, -
*, /, MOD, SHL, SHR
бинарный +, -
LT, LE, EQ, GE, GT, NE
NOT
AND
OR, XOR
Низший HIGH, LOW
Директивы ассемблера.
BIT
Позволяет создавать битовые переменные. Имеет следующую форму.
метка BIT выражение
Метка обязательна. Если ее не указать, ассемблер сгенерирует ошибку.
DB
Позволяет включать в объектный код байты по текущему адресу. Ее аргумент – последовательность байт в диапазоне от –128 до 256 разделенные запятыми. Если встречается только запятая без байта, то в объектный код вставляется 00H. Последовательность байт 0FEH,
0FFH, 00H, 01H, 02H вставляется в код следующим выражением:
DB -2, -1, , 1, 2
Выражение
DB 1 + 1, "CAT", "C" + 1
запишет в объектный код следующую последовательность – 002H, 043H, 041H, 054H, 044H
DS
Используется для резервирования блока памяти для переменных или др. данных. Эта область памяти не инициализируется, поэтому значения могут быть любые. Аргумент директивы добавляется к программному счетчику. Следующее выражение резервирует 10 байт в блоке памяти обозначенном именем "STORAGE":
STORAGE DS 10
DW
Позволяет включать в объектный код 16-битовые слова. Во всем остальном подобна директиве DB. В памяти слово располагается не по стандарту Intel, а наоборот – сначала старший байт слова, затем младший. Последовательность 0FFH, 0FEH, 00H, 00H, 01H, 02H байт в помещается в память выражением:
DW 0FFFEH, , 0102H
END
Эта директива указывает ассемблеру на конец программы. Любые выражения после директивы игнорируются и не включаются в листинг. Если к директиве добавляется аргумент, то значение аргумента помещается в поле объектного файла, указывающее стартовый адрес. По умолчанию стартовый адрес устанавливается равным значению программного счетчика в точке, где встречена директива END.
Таким образом, чтобы указать, что программа начинается на метке START записывается директива:
END START
EQU
Присваивает метке заданное значение. Однажды определенная таким образом метка не может переопределяться другими директивами EQU, REG, SET.
Следующее выражение присваивает значение 2 метке TWO:
TWO EQU 1 + 1
IF, ELSE, ENDIF
Эти директивы позволяют ассемблеру определять нужно ли компилировать блоки кода, в зависимости от результатов выражения. Директива IF начинает блок условной компиляции. Она требует одного аргумента, который не должен содержать ссылок вперед. Если значение аргумента ненулевое, блок компилируется. В противном случае блок игнорируется. Директива ENDIF завершает блок условной компиляции.
Пример:
IF EXPRESSION ;Если EXPRESSION
DB 01H, 02H, 03H ;имеет нулевое значение
ENDIF ;то байты в код вставлены не будут
Директива ELSE позволяет выбрать один блок из двух. Две следующих последовательности эквивалентны
IF EXPRESSION
... код ...
ELSE
... код ...
ENDIF
TEMP_LAB SET EXPRESSION
IF TEMP_LAB NE 0
... код ...
ENDIF
IF TEMP_LAB EQ 0
... код ...
ENDIF
Вложенность директив IF ELSE ENDIF не должна превышать 16-ти уровней.
INCL
Директива используется для вставки содержимого другого файла в программу во время ассемблирования. Имя вставляемого файла указывается как строковая константа. Пример:
INCL "const.def"
ORG
Директива устанавливает значение программного счетчика. Значение программного счетчика по умолчанию – 0000H. Следующее выражение установит программный счетчик в значение 0F000H:
ORG 0F000H
REG
Директива REG подобна EQU, за исключением того, что аргументом должно быть имя регистра R0 - R7 или другая метка, определенная директивой REG.
Определенная таким образом метка не может быть переопределена снова.
Следующее выражение будет преобразовано ассемблером в выражение "MOV @R0, A":
TEMP REG R0
MOV @TEMP, A
SET
Директива SET подобна EQU, но метка может быть переопределена только другой директивой SET. Следующий набор директив установит значение метки "COUNT" в 1, 2, затем 3:
COUNT SET 1
COUNT SET 2
COUNT SET 3