
- •Введение
- •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. Варианты индивидуальных заданий
- •Библиографический список
- •Алгоритм
- •Текст программы
- •Выводы по работе:
- •Содержание
- •Ломакин Игорь Владимирович
11. Лабораторная работа № 3. Динамическая индикация
11.1. Цель работы Освоить организацию динамической индикации, используемой в программах. Экспериментально определить влияние длительности задержек на качество индикации.
11.2. Пояснения к работе
Работа продолжает изучение 8-разрядных двунаправленных портов программируемого микроконтроллера ат90s8535 для ввода и вывода дискретной информации, при этом используется динамическая индикация.
Ввод и вывод цифровых данных в микроконтроллерах семейства AVR и, в частности, микроконтроллера AT90S8535 могут осуществляться последовательно и параллельно. В рассматриваемой лабораторной работе речь будет идти об обмене информации через двунаправленные параллельные порты A, B, C и D.
Управление портами, назначение и адресация их регистров уже указаны в описании к работе № 1. Все рассматриваемые порты в качестве цифровых I/O портов общего назначения работают одинаково:
– при нажатии на кнопку «Сброс» (RESET), осуществляется аппаратный сброс микроконтроллера, и все каналы портов ставятся в третье состояние. На блоке управления рабочего места при этом горят светодиоды VD4–VD6, сегменты семисегментных индикаторов погашены;
– каждый вывод порта может быть запрограммирован индивидуально на ввод или вывод. Если в регистре направления данных порта для рассматриваемого бита записать «0», то соответствующий вывод конфигурируется как вход, при записи «1» – как выход;
– если вывод микроконтроллера сконфигурирован как вход, то при замыкании этого вывода на общий провод (), вход воспринимается как «0». Неподключенный вывод воспринимается как наличие входного сигнала «1». Уровень напряжения на выводе неподключенного входа составляет 3,5–4 В. Однако, при этом повышается влияние помех, особенно проявляется влияние дребезга контактов. Уменьшить это влияние можно подключением вывода входного сигнала на питающее напряжение +5 В;
– реально уровень напряжения на выводе, определенном как выход, составляет при логической «1» – 4,5–5 В, при логическом «0» – 0–0,5 В;
– все выводы портов незапрограммированного микроконтроллера находятся в третьем состоянии.
В БУ используются семисегментные индикаторы HG1 и HG2 с общим катодом. Для замыкания катодов индикаторов на общий провод служат транзисторы VT1 и VT2, которые управляются соответственно битами PB2 и PB3 порта B. Транзисторы VT1 и VT2 при соответствующей программе обеспечивают динамическую индикацию информации на семисегментных индикаторах, т.е. вывод различной информации на оба индикатора. В этом случае поочередно зажигается то первый, то второй индикатор. При достаточно большой частоте переключений создается иллюзия одновременного непрерывного свечения индикаторов.
Для зажигания информации на первом индикаторе необходимо установить в «1» бит PB2 и записать в порт C код выводимого первого символа. Затем, через некоторую программно реализуемую задержку времени, нужно сбросить бит РB2, установить в «1» бит РB3 и подать на порт C код второго выводимого символа. Через задержку времени нужно сбросить бит РB3, установить в «1» бит РB2 и так далее.
В качестве подпрограммы рекомендуется оформить временную задержку. Длительность задержки регулируется либо изменением величин констант (255), либо изменением значения переменной. Изменения значения переменной ust1 осуществляются в основной программе.
wait3: ;подпрограмма временной задержки
Ids r18,ust1 ;задание величины задержки третьей ступени
w0:
ldi r19,255 ;задание величины задержки второй ступени
w1:
ldi r20,255 ;задание величины задержки первой ступени
w2:
dec r20 ;временная задержка третьей ступени
brne w2
dec r19 ;временная задержка второй ступени
brne w1
dec r18 ;временная задержка первой ступени
brne w0
ret ;возврат из подпрограммы