- •Введение
- •1. Микроконтроллеры at90s4434/8535 семейства avr
- •1.1. Структура микроконтроллеров avr
- •1.2. Представление данных в языке ассемблера
- •1.2.1. Двоичная система счисления
- •1.2.2. Биты, байты и слова
- •1.2.3. Шестнадцатеричная система счисления
- •1.3. Адресное пространство микроконтроллеров avr
- •2. Лабораторный комплекс
- •2.1. Назначение и состав комплекса
- •2.2. Блок управления
- •3. Директивы ассемблера
- •3.1. Директивы организации сегментов
- •3.2. Директивы счетчика текущего адреса
- •3.3. Директивы определения данных
- •3.4. Директивы присваивания
- •3.5. Директивы задания набора допустимых команд
- •3.6. Директивы управления файлами
- •3.7. Директивы управления листингом
- •4. Система команд микроконтроллеров семейства avr
- •4.1. Команды пересылки данных
- •4.2. Арифметические команды
- •4.3. Логические команды
- •4.4. Команды перехода
- •5. Программа на ассемблере
- •5.1. Структура программы
- •5.2. Алгоритм решения задачи и структура данных
- •5.3. Пример алгоритма программы
- •5.4. Пример текста программы
- •6. Набор и отладка программ
- •6.1. Набор программы
- •6.2. Отладка программы
- •6.3. Запись программы в микроконтроллер
- •7. Меры безопасности при эксплуатации комплекса
- •8. Общие методические указания к лабораторным работам
- •Порядок выполнения лабораторных работ:
- •Содержание отчета по лабораторной работе:
- •9. Лабораторная работа № 1. Изучение системы команд микроконтроллера и директив ассемблера
- •9.2. Пояснения к работе
- •9.3. Варианты индивидуальных заданий
- •10. Лабораторная работа № 2. Система параллельного ввода/вывода
- •10.1. Цель работы
- •10.2. Пояснения к работе
- •Для вызова подпрограммы используется команда rcall pprmet, где pprmet – это метка и название подпрограммы.
- •10.3. Варианты индивидуальных заданий
- •11. Лабораторная работа № 3. Динамическая индикация
- •11.1. Цель работы Освоить организацию динамической индикации, используемой в программах. Экспериментально определить влияние длительности задержек на качество индикации.
- •11.2. Пояснения к работе
- •Работа продолжает изучение 8-разрядных двунаправленных портов программируемого микроконтроллера ат90s8535 для ввода и вывода дискретной информации, при этом используется динамическая индикация.
- •Если нет необходимости в длительной задержке, количество ступеней в подпрограмме можно уменьшить.
- •11.3. Варианты индивидуальных заданий
- •12. Лабораторная работа № 4. Система внешних прерываний микроконтроллера
- •12.1. Цель работы
- •12.2. Пояснения к работе
- •12.3. Варианты индивидуальных заданий
- •13. Лабораторная работа № 5. Программирование таймеров/счетчиков
- •13.1. Цель работы
- •13.2. Пояснения к работе
- •13.3.1. Работа в режиме счетчика
- •13.3.2. Работа в режиме таймера
- •13.3.3. Работа в режиме широтно-импульсного модулятора
- •13.3. Варианты индивидуальных заданий
- •Библиографический список
- •Алгоритм
- •Текст программы
- •Выводы по работе:
- •Содержание
- •Ломакин Игорь Владимирович
9.3. Варианты индивидуальных заданий
1. Вычесть из числа 4 число 3. Если включен тумблер SA2, то на индикатор HG1 выдать результат вычитания. Если тумблер SA2 отключен – на индикацию вывести букву Н.
2. Вычесть из числа 6 число 3. Если включен тумблер SA3, то на индикатор HG1 выдать результат вычитания. Если тумблер SA3 отключен – на индикацию вывести букву П.
3. Вычесть из числа 6 число 4. Если включен тумблер SA4, то на индикатор HG1 выдать результат вычитания. Если тумблер SA4 отключен – на индикацию вывести букву Н.
4. Вычесть из числа 7 число 4. Если включен тумблер SA5, то на индикатор HG1 выдать результат вычитания. Если тумблер SA5 отключен – на индикацию вывести букву П.
5. Вычесть из числа 7 число 5. Если нажата кнопка SB1, то на индикатор HG2 выдать результат вычитания. Если кнопка SB1 отключена – на индикацию вывести букву Н.
6. Вычесть из числа 8 число 5. Если нажата кнопка SB2, то на индикатор HG2 выдать результат вычитания. Если кнопка SB2 отключена – на индикацию вывести букву П.
7. Вычесть из числа 8 число 4. Если нажата кнопка SB3, то на индикатор HG2 выдать результат вычитания. Если кнопка SB3 отключена – на индикацию вывести букву Н.
8. Вычесть из числа 9 число 4. Если нажата кнопка SB4, то на индикатор HG2 выдать результат вычитания. Если кнопка SB4 отключена – на индикацию вывести букву П.
10. Лабораторная работа № 2. Система параллельного ввода/вывода
10.1. Цель работы
Продолжить изучение системы команд программируемого микроконтроллера AT90S8535, подготовить программу, содержащую подпрограммы, отладить её, записать в микроконтроллер и продемонстрировать работу подготовленной программы.
10.2. Пояснения к работе
Работа является логическим продолжением работы № 1. Задачи здесь усложнены, увеличено количество элементов ввода и вывода информации. Кроме того, управление индикацией светодиодов и семисегментных индикаторов рекомендуется выполнить в виде подпрограммы. Тогда их можно будет использовать при выполнении других лабораторных работ.
Для вызова подпрограммы используется команда rcall pprmet, где pprmet – это метка и название подпрограммы.
Подпрограмма начинается с метки (pprmet), затем следует текст подпрограммы, а в конце подпрограммы ставится команда возврата из подпрограммы RET. Команда RET возвращает управление на команду, следующую за командой вызова подпрограммы RCALL pprmet.
10.3. Варианты индивидуальных заданий
1. Организовать сложение двух чисел и индикацию младшей тетрады результата на семисегментном индикаторе HG2. На блоке управления располагаются кнопки и тумблеры. Кнопки SB2 и SB3 представляют собой младшие разряды первого слагаемого, т.е. возможен набор чисел от 0 до 3. Тумблеры SA4, SA5 представляют собой соответственно третий и четвертый разряды второго слагаемого, т.е. возможен набор десятичных чисел 0,4,8,12. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0...F.
2. В памяти записать два массива, например по пять ячеек в каждом массиве. В ячейках записаны шестнадцатеричные цифры от 00 до 0FH. Цифры в массивах, кроме одной, разные. Программа должна определить, какая цифра присутствует в обоих массивах и при нажатии на кнопку SB3 (кратковременно) высвечивать ее в шестнадцатеричном виде на индикаторе HG2. Если цифры в массивах разные, то при нажатии на кнопку SB3 (кратковременно) на индикаторе HG2 высвечивается символ «Н» (нет).
3. При нажатии на кнопку SB1 загорается цифра 1 и светодиод VD4. При нажатии на кнопку SB2 загорается цифра 2 и светодиод VD5. При одновременном нажатии кнопок SB1 и SB2 загорается цифра 3 и включается светодиод VD6.
4. Умножить положительное число 2 на число 3 и при нажатой кнопке SB1 на индикаторе HG2 высветить результат. При отпущенной кнопке на индикаторе горит символ П.
5. При включении микроконтроллера и кратковременном нажатии кнопки SB6 “RESET” при отключенном тумблере SA1 горит светодиод VD4 и на индикаторе HG1 горит цифра 2. При включении тумблера SA1 светодиод VD4 и индикатор HG1 гаснут, загорается светодиод VD5 и на индикаторе HG2 загорается цифра 5. При нажатой кнопке SB2 все светодиоды и индикаторы гаснут.
6. Организовать сложение двух чисел 3 и 4. При включении микроконтроллера и кратковременном нажатии кнопки SB6 “RESET” загорается и постоянно горит светодиод VD5. При нажатой кнопке SB1 на индикаторе HG2 горит первое слагаемое, при нажатой кнопке SB2 – второе слагаемое, при нажатой кнопке SB3 – результат.
7. В массиве из 16 ячеек памяти располагаются шестнадцатеричные числа от 00 до 00F. В массиве есть только одно число, которое повторяется несколько раз. Выявить, какое это число и сколько раз оно повторяется. При нажатии на кнопку SB1 на семисегментном индикаторе HG1 загорается повторяющееся число. При нажатии на кнопку SB2 на семисегментном индикаторе HG2 высвечивается число его повторений. Если нет повторяющегося числа, то при нажатии на кнопку SB1 на индикаторе HG1 загорается символ «Н» (нет).
8. При включении микроконтроллера, на индикаторе HG2 горит "0". Организовать счет и индикацию числа нажатий кнопки SB1 на индикаторе HG2 в шестнадцатеричном виде, т. е. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 ….. Нажатие кнопки сопровождается загоранием светодиода VD5. Для упрощения программы мер борьбы с дребезгом контактов не предпринимать.
