- •А.В. Шарапов
- •Часть 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
- •Моделирование работы устройства с помощью симулятора
- •Литература
Загрузка программы в эмулятор и управление его работой
Эмулятор МК51 разработан фирмой AVOSET SISTEMS INC.
Для вызова эмулятора выполнить команду:
avsim51 -c1 a
и загрузить в него программу:
Load Avoset
Enter filename: TABLO.HEX
Для пользователя эмулятор представлен в виде отдельных окон: окна для размещения отлаживаемой программы (левое окно) и набора окон для программно доступных ресурсов микроконтроллера.
Эмулятор работает в двух режимах: в командном режиме и в режиме окна. Переключение режимов осуществляется клавишей Esc.
В командном режиме пользователю предлагается меню из набора команд, выбор которых осуществляется с помощью курсора. Вот некоторые из них:
Load — загрузка отлаживаемых файлов в эмулятор (используется подкоманда Avoset);
Patch — позволяет подключать кросс-ассемблер для записи в командной строке мнемокода команды с автоматической ее трансляцией и помещением в окно программы;
Dump — выбор ячейки памяти верхнего (1) или нижнего (2) окна Data Space. Позволяет установить начало окна на любую ячейку памяти (подкоманда Abcolute);
Reset — сброс. Возможно осуществить системный сброс контроллера, счетчика циклов (счетчик циклов позволяет оценить реальное время выполнения программы в машинных циклах, в то время как при работе эмулятора она выполняется в замедленном масштабе по времени);
Set — установка. Позволяет запустить счетчик циклов;
Memory — позволяет производить очистку или заполнение любых областей памяти;
Quit — выход из эмулятора с помощью подкоманды Exit.
Для отказа от выполнения команды и выхода в основное меню нажать Ctrl+C.
В режиме окна с помощью курсора возможен выбор любых программно доступных ресурсов с целью изменения их содержимого в двоичном, шестнадцатеричном или ASCII кодах. Также возможно задание кодов команд с целью изменения текста программы (дизассемблирование).
Для редактирования в режиме окна могут применяться клавиши:
INS — инверсия бита, полубайта;
+/– — инкремент/декремент бита, полубайта;
↑→↓← — движение курсора в окне;
Ctrl+A — быстрый доступ к аккумулятору;
Ctrl+В — быстрый доступ к расширителю аккумулятора В;
Ctrl+Т — быстрый доступ к ресурсам таймеров;
Ctrl+I — быстрый доступ к системе прерываний;
Ctrl+P — быстрый доступ к программному счетчику;
Alt+P — быстрый доступ к портам.
Для управления работой эмулятора в режиме отладки служат функциональные клавиши. Их назначение:
F1 — запуск программы в автоматическом режиме;
F10 — пошаговое выполнение команд;
F5 — переключение скорости выполнения программы.
Программа работы
1. Скопировать для выполнения лабораторных работ файлы из директории МК51 в свою рабочую папку. Рассчитав номер варианта (от N=1 до N=10), создать программу TEST.ASM:
; Программа тестирования ассемблера
MASCEQUN
DB 11111111B,377Q,255,0FFH
DB “BEGIN”
DB RS1,PSW.4,0D0H.4,0D4H
DW 0,1234H,1000
ORG 30H
1LABEL: SJMP $
ORL A,#MASC
M1: CJNE A,P1,M1
STRT CNT
MOV TH1,#HIGH(NOT(10000)+1)
MOV TL1,#LOW(NOT(10000)+1)
MOV B,#(15*5-MASC)
ЦИКЛ: JMP ЦИКЛ
END
Прокомментировать результаты ассемблирования программы и сообщения об ошибках (создать и проанализировать файл TEST.LST). Выполняет ли ассемблер в поле операндов арифметические команды сложения, вычитания, умножения? Может ли ассемблер выполнять логические функции при обработке операндов? Как можно отредактировать текст программы, чтобы ассемблер не выдавал сообщения об ошибках?
2. Составить комментарий к работе следующей программы:
MOV R7,#16
MOV R0,#20H
MOV R1,#3FH
M1: MOV A,@R0
MOV @R1,А
INC R0
DEC R1
DJNZ R7,M1
SJMP$
END
Пояснить результаты трансляции команд, размещенных в 8 и 9 строках программы. Что изменится, если вместо SJMP $ записать команду AJMP $ или LJMP $?
Проверить работу программы на эмуляторе, предварительно заполнив массив ячеек резидентной памяти данных с 20H по 2FH числами 00,11,22,33,44,55,66,77,88,99,AA,BB,CC,DD,EE,FF.
3. Создать файл TABLO.ASM. Проассемблировать программу и проанализировать ее листинг. Сформировать файл TABLO.HEX, загрузить программу в эмулятор и запустить на выполнение. Объяснить изменение содержимого ячеек РПД при выполнении программы. Что отображают команды, расположенные в окне памяти программ по адресам 20Н-2FH?
4. В режиме Path Code ввести в эмулятор программу умножения 16-разрядного двоичного числа (DPTR) на 8-разрядное (байт в R0). 24-разрядный результат формируется в регистрах: R1 (старший байт), R2 (средний байт), R3 (младший байт).
MOV A,DPL
MOV B,R0
MUL AB
MOV R3,A
MOV R7,B
MOV A,DPH
MOV B,R0
MUL AB
ADD A,R7
MOV R2,A
CLR A
ADDC A,B
MOV R1,A
Проверить работу программы в пошаговом режиме на тестовом примере (например, множимое — 10000=2710Н, множитель — 100=64Н, произведение — 1000000=0F4240H). Пояснить алгоритм формирования произведения. Оценить время выполнения программы.
5. Битовый процессор МК51 позволяет установить, очистить или проинвертировать любой программно доступный бит, проводить с битами логические операции И, ИЛИ (один из операндов в этом случае должен находиться в триггере переноса С), осуществлять условные переходы по нулевому или единичному состоянию тестируемого бита.
Разработать и отладить на эмуляторе индивидуальное задание (одно из следующих в соответствии со своим вариантом):
1) бит Р2.0 должен обнулиться, если не менее, чем на пяти линиях порта Р1 установлены нулевые уровни;
2) на линии Р1.7 сформировать бит контроля четности для семиразрядного сообщения, выводимого на младшие линии этого порта из регистра В;
3) бит Р0.7 должен обнулиться, если на любых пяти из семи оставшихся линий этого порта установлены нулевые уровни;
4) бит Р0.7 должен соответствовать логической функции F=XY, где X и Y — сигналы, подаваемые на младшие линии этого порта;
5) в ячейки 20Н-27Н РПД занесена информация о состоянии 64 датчиков. Содержимое порта Р0 должно обнулиться, если число датчиков с единичным уровнем сигнала превышает число датчиков с нулевым уровнем;
6) в ячейки 20Н-2FH РПД занесена информация о состоянии 128 датчиков. Сформировать на линии Р1.0 прямоугольные импульсы, если число датчиков с нулевым уровнем превышает 10;
7) в регистре DPTR сформировать разность двухбайтового числа (содержимое портов Р0 и Р1) и однобайтового (содержимое порта Р2);
8) разработать программу, формирующую в регистре DPTR дополнительный код числа минус 5000 (двухбайтовый формат);
9) получить на линиях порта Р1 эффект бегущей единицы со сменой направления;
10) заполнить все четные элементы РПД логическими нулями, а нечетные — единицами.