
- •Микропроцессоры в системах автоматического управления.
- •Структура микропроцессора i8080. Принцип работы.
- •Основные понятия системы прерываний. Обработка запросов прерываний i8080.
- •Архитектура микроконтроллера мк-51. Алу, организация памяти и устройства управления. Совмещение адресного пространства памяти данных и программ.
- •5. Архитектура микроконтроллера мк-51. Порты ввода/вывода.
- •6. Архитектура микроконтроллера мк-51. Таймер/счётчик.
- •7. Архитектура микроконтроллера мк-51.Последовательный интерфейс.
- •Система команд
- •4.4.1 Общая характеристика
- •4.4.2 Типы команд
- •4.4.3 Типы операндов
- •4.4.4 Группы команд
- •4.4.5 Oбозначения, используемые при описании команд
- •Система прерываний мк-51.??
- •8. Архитектура микроконтроллера мк-51. Система прерываний.??
- •9. Режимы работы мк-51.
- •Система команд мк-51. Способы адресации в мк-51.
- •Система команд мк-51. Команды передачи данных.
- •Система команд мк-51. Команды арифметических операций.
- •13. Команды логических операций микроконтроллера 8051
- •Система команд мк-51. Команды операций с битами.
- •Система команд мк-51. Команды передачи управления.
- •Программирование на языке Ассемблера. Директивы резервирования памяти.
- •Программирование на языке Ассемблера. Использование подпрограмм – процедур и подпрограмм – функций.
- •5.7.1 Реализация подпрограмм-процедур на языке asm51.
- •5.7.2 Передача переменных-параметров в подпрограмму.
- •5.7.3 Реализация подпрограмм-функций на языке asm51.
- •Организация циклов и ветвлений. Ветвление
- •Программирование на языке Ассемблера. Использование сегментов в языке программирования ассемблер. Разбиение памяти мк на сегменты, абсолютные сегменты памяти, перемещаемые сегменты памяти.
- •5.10.1 Абсолютные сегменты памяти.
- •5.10.2 Перемещаемые сегменты памяти.
- •Архитектура микроконтроллеров семейства mcs-51 gb. Адресация регистров и памяти микроконтроллеров.
- •2.4 Организация памяти.
- •2.4.2 Память данных (озу).
- •2.4.3 Регистры специальных функций.
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Последовательный порт с шиной i2c.
- •2.7.3 Режимы работы таймеров-счетчиков.
- •Периферийные устройства микроконтроллеров семейства mcs-51. Программируемая счётная матрица (pca).
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Контроллер прерываний (ic).
- •2.10.1 Регистр масок прерывания (ie).
- •2.10.2 Регистр приоритетов прерываний (ip).
- •2.10.3 Выполнение подпрограммы прерывания.
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Аналого-цифровой преобразователь (adc). Функциональная схема ацп
- •Числа в двоичном, восьмеричном, шестнадцатеричном и двоично-десятичном коде.
- •Перевод двоичных чисел в восьмеричный и шестнадцатеричный формат и наоборот.
- •Системы счисления. Перевод десятичных чисел в систему с основанием r.
- •Перевод чисел с основанием r в десятичные числа
- •Двоичная арифметика (сложение, умножение, деление двоичных чисел).
- •Вычитание двоичных чисел
- •Логические операции над двоичными числами.
Программирование на языке Ассемблера. Использование подпрограмм – процедур и подпрограмм – функций.
Подпрограммы на языке программирования ASM-51 выносятся отдельно от основного текста программы. Обычно подпрограммы размещают после основного текста программы для того, чтобы случайно не передать управление подпрограмме не оператором вызова подпрограммы. Это может произойти из-за того, что ассемблер назначает адреса операторам в порядке их написания.
Исходный текст подпрограммы начинается с метки, которая одновременно является именем подпрограммы. Именно это имя указывается в качестве операнда в команде вызова подпрограммы LCALL. Возвращение из подпрограммы на оператор, следующий за оператором вызова подпрограммы осуществляется оператором RET. Все операторы, которые должны быть выполнены в подпрограммы располагаются между меткой, обозначающей имя подпрограммы и оператором возврата из подпрограммы.
5.7.1 Реализация подпрограмм-процедур на языке asm51.
Подпрограмма процедура вызывается командами процессора LCALL и ACALL. В языке программирования ASM51 допустимо использования директивы CALL эта директива подбирает наиболее подходящую к данному случаю по размеру команду.
Пример подпрограммы управления последовательным портом:
5.7.2 Передача переменных-параметров в подпрограмму.
Параметр подпрограммы - это локальная переменная. В этом случае могут значительно снизиться требования к памяти данных. Для размещения локальных переменных лучше всего использовать внутренние регистры процессора. На языке ASM51 для передачи параметра размерностью один байт обычно используется аккумулятор.
Если в подпрограмму нужно передать двухбайтовое значение, то в качестве параметра подпрограммы используется пара регистров (обычно регистры R6-старший байт и R7-младший байт).
Если в подпрограмму нужно передать четырёхбайтовое значение (это требуется для переменной, соответствующей типу long или float), то используются регистры R4...R7 (регистр R4 - старший байт).
Регистры R0 и R1 обычно используются в качестве указателей обрабатываемых переменных таких как строки или массивы. Если требуется, чтобы подпрограмма обработала значительный объём данных, то эти данные можно передать через параметр - указатель. В качестве указателя при обращении к внешней памяти данных или к памяти программ обычно используется регистр-указатель данных DPTR.
Пример подпрограммы - процедур с передачей адреса строки через регистр DPTR:
При обращении к массивам или структурам, расположенным во внутренней памяти данных в качестве указателя адреса используется регистр R0 или R1.
5.7.3 Реализация подпрограмм-функций на языке asm51.
Часто требуется передавать результат вычислений из подпрограммы в основную программу. Для этого можно воспользоваться подпрограммой - функцией. Подпрограмма - функция возвращает вычисленное значение.
Использование подпрограмм-функций значительно увеличивает наглядность программ и приближает запись на языке программирования к записи математического выражения.
В этом примере подпрограмма вычисления синуса:
Подпрограмма - функция может возвращать и многобайтовые переменные, используя регистр - указатель R0 или R1. Однако для копирования этих переменных потребуется ещё одна подпрограмма копирования.