- •А.В. Шарапов
- •Часть 1. Микроконтроллеры мк51
- •Предисловие
- •1 Принципы построения цифровых устройств управления
- •2 Общая характеристика микроконтроллеров семейства мк51
- •3 Программная модель и система команд мк51 ( лабораторная работа №1)
- •Программная модель микроконтроллера мк51
- •Система команд микроконтроллера
- •Команды микроконтроллера семейства мк51
- •Команды, влияющие на флаги результата
- •Запись программы на языке ассемблера и ее трансляция
- •Загрузка программы в эмулятор и управление его работой
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •4 Таймеры и система прерываний mк51 (лабораторная работа №2)
- •Таймеры/счетчики событий mcs-51
- •Система прерываний mк51
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •Машинные коды команд mк51
- •5 Упражнения по решению задач
- •6 Примеры программ обработки данных
- •7 Последовательный порт мк51
- •8 Организация линий портов мк51. Подключение внешних устройств
- •9 Направление развития элементной базы 8-разрядных микроконтроллеров Отличительные признаки современной элементной базы
- •Направления развития 8-разрядных мк
- •Модульный принцип построения
- •Резидентная память мк
- •Таймеры и процессоры событий
- •Сторожевой таймер
- •Контроллеры последовательного ввода/вывода
- •Минимизация потребления энергии в системах с мк
- •10 Микроконтроллеры семейства ат89 фирмы Atmel
- •Микроконтроллер at89c4051
- •Микроконтроллер at89s51
- •11 Примеры вопросов компьютерной контрольной работы
- •Литература
- •Часть 2. Микроконтроллеры avr
- •Предисловие
- •1 Общая характеристика микроконтроллеров avr, программная модель и система команд
- •2 Директивы ассемблера
- •Include — Вложить другой файл
- •Форматы представления чисел
- •3 Программный пакет avrStudio
- •4 Микроконтроллер aTtiny15l(лабораторная работа №3)
- •Таймеры aTtiny15l
- •Энергонезависимая память данных еeprom
- •Аналоговый компаратор
- •Аналого-цифровой преобразователь
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •Перечень команд микроконтроллера aTtiny15l
- •5 Микроконтроллер aTmega8 (лабораторная работа № 4)
- •Порты ввода-вывода
- •Регистры таймера т1
- •Режимы работы таймера т1
- •Нормальный режим работы (Normal)
- •Режим сброса таймера при совпадении (стс)
- •Режим быстрой шим (Fast pwm)
- •Режим шим с фазовой коррекцией
- •Режим шим с фазовой и частотной коррекцией
- •Прерывания от таймеров /счетчиков
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •6 Средства разработки программы на языке си, компиляторы и симуляторы
- •7 Язык си для микроконтроллеров
- •Структура программы на языке Си
- •Пункт 4. Объявление переменных
- •8 Загрузка программы в микроконтроллер
- •9 Моделирование работы микроконтроллера avrс помощью симулятораvmlab (лабораторная работа №5)
- •Программа работы
- •Содержание отчета
- •10 Моделирование работы микроконтроллера avr с помощью симулятора proteus vsm
- •11 Измеритель частоты сети
- •Обоснование алгоритма решения задачи
- •Разработка прикладной программы
- •Моделирование работы устройства с помощью vmlab
- •Моделирование работы устройства с помощью симулятора
- •Литература
Система команд микроконтроллера
Микроконтроллер имеет 255 команд: пересылки данных, арифметических операций, логических операций, передачи управления, операций с битами. По формату команды могут быть одно-, двух- и трехбайтовыми. Из 111 базовых команд 64 выполняются за один машинный цикл (1 мкс при частоте кварца 12 МГц), 45 команд — за два. Команды умножения и деления выполняются за четыре машинных цикла.
Обозначения операндов расшифрованы далее после таблицы команд микроконтроллера. Ниже приведены примеры команд.
Команда ADD A, «байт-источник» [3].
Эта команда (сложение) складывает содержимое аккумулятора А с содержимым байта-источника, оставляя результат в аккумуляторе. При появлении переноса из разрядов 7 и 3 устанавливаются флаги переноса С и дополнительного переноса АС соответственно, в противном случае эти флаги сбрасываются. При сложении целых чисел без знака флаг переноса указывает, что сумма больше 255. Флаг переполнения OV устанавливается, если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет — из бита 6, в противном случае флаг OV сбрасывается. При сложении целых чисел со знаком флаг OV указывает на отрицательную величину, полученную при сложении двух положительных операндов или на положительную сумму для двух отрицательных операндов. Время выполнения команды — один машинный цикл.
Для команды сложения разрешены следующие способы адресации байта-источника:
регистровый (в качестве операнда используются регистры R0-R7);
косвенно-регистровый (@ — префикс косвенной адресации, в качестве регистров-указателей памяти могут использоваться R0 и R1);
прямой (указывается прямой адрес байта РПД или регистра специальных функций);
непосредственный (# — префикс непосредственных данных).
Команда LCALL «ad16».
Команда «длинный вызов» вызывает подпрограмму, находящуюся по указанному адресу. К счетчику команд РС прибавляется 3 для получения адреса следующей команды и после этого полученный 16-битовый результат помещается в стек (сначала следует младший байт, за ним — старший), а содержимое указателя стека SP увеличивается на 2.
Затем старший и младший байты счетчика команд загружаются соответственно вторым и третьим байтом команды LCALL. Выполнение программы продолжается командой, находящейся по полученному адресу. Подпрограмма может начинаться в любом месте памяти программ объемом до 64 Кбайт. Команда на флаги не влияет.
Команда RET.
Команда «возврат из подпрограммы» последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая указатель стека на 2. Выполнение основной программы продолжается по адресу команды, следующей за АCALL или LCALL. На флаги эта команда не влияет.
Пример: ; (SP) = 66H, (ОЗУ[65H])=29H, (ОЗУ[66H])=01H
RET; (SP) = 64H, (PC)= 0129Н
Команда RETI.
Команда «возврат из прерывания» выгружает старший и младший байты счетчика команд из стека, уменьшая указатель стека на 2. Устанавливает логику прерываний, разрешая прием других прерываний с уровнем приоритета, равным уровню приоритета только что обработанного прерывания. Слово состояния программы PSW не восстанавливается автоматически.
Выполнение основной программы продолжается с команды, следующей за командой, на которой произошел переход к обнаружению запроса на прерывание. Если при выполнении команды RETI обнаружено прерывание с таким же или меньшим уровнем приоритета, то одна команда основной программы успевает выполниться до обработки такого прерывания.
Результаты трансляции 13 типов команд микроконтроллера МК51 иллюстрирует приводимая ниже программа (число байт — 1, 2 или 3).