Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007), страница 9
Описание файла
DJVU-файл из архива "Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)", который расположен в категории "". Всё это находится в предмете "компьютерные методы и технологии автоматизации и управления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 9 - страница
В микроконтроллере АТ90$8515 регистр РПЧх не имеет аппаратной реализации. Это имя используется для чтения линий интерфейса. На рис. 2.1 приведена общая структурная схема 8-разрядных портов Рх и структурная схема одного разряда порта РхХ (У = О, 1...7) микроконтроллера АТ9088515, Состояние разряда РРКхХ определяет направление передачи бита данных через вывод порта РхХ, При 01ЖхХ = 0 вывод порта РхХ является входом, при ППКхХ = 1 — выходом. В режиме входа состояние разряда РОКТхХ определяет состояние вывода РхХ. При РОКТхХ = 1 вывод порта через внутренний резистор подключен к шине питания ЧСС.
При РОКТхХ = 0 резистор отключается, вывод РхХ находится в высокоимпеданспом состоянии (2-состояние). В режиме выхода состояние разряда РОКТхХ определяет значение сигнала на выводе РхХ. При РОКТхХ = 0 на выводе устанавливается напряжение низкого уровня, при РОКТхХ = 1 — высокого. 50 2. Программирование портов ввода)вывода 2. Д Взаимодействие микроконтроллера с кнопками и светодиодам та иа ами 51 Шина данных и )тих й е! РОЕТ Р))Чх Линии интерфейса Рнс. 2.1. Структура порта Рх (а) и схема одного разряда порта (б) 2.1. ВЗАИМОДЕЙСТВИЕ МИКРОКОНТРОЛЛЕРА С КНОПКАМИ И СВЕТОДИОДАМИ Подготовить программу, которая при нажатии кнопки 8ТАКТ выполняет поочередное переключение светодиодов, при нажатии кнопки ЯТОР останавливает переключение и возобновляет прн повторном нажатии кнопки ЯТАКТ.
Пример программы приведен далее. В программе для микроконтроллера АТ90885 ! 5 используется файл определений 8515с1еуйпс, для АТщейа8515 — т85! 5с1е~лпс. При пуске и перезапуске микроконтроллера все разряды регистров 111Жх н РОКТх сбрасываются в нулевое состояние, вследствие чего выводы портов работают в режиме входа и находятся в У,-состоянии. При совместном использовании всех разрядов порта для ввода байта данных используют команды с мнемоникой ПЧ К(1, РПх)х, для вывода — О()Т РОКТх, Кг (б, г = 0...31). Значение выходного сигнала на отдельном выводе порта можно задать с помощью команд установки 0 (СВ1 РОКТхХ) и 1 (8В! РОКТхХ). Входной сигнал на отдельном выводе порта можно проверить, используя команды условного перехода 8В1С РПх(хХ или 8В18 РПх(хХ, которые предусматривают пропуск следующей команды по нулевому или единичному значению РхХ.
В программе линии порта РВ использованы для индикации и, следовательно, проинициализированы на вывод, а а линии 0 и 1 порта РТ), соединяемые с кнопками, — на ввод. После нажатия кнопки 8ТАКТ начинается последовательное переключение светодиодов с задержкой и проверка состояния кнопки 8ТОР. Программа 2.1 * ******************** **************** **** ;Программа 2.1 для микроконтроллеров АТх8 515: ;переключение светодиодов (СД) при нажатии на у кнспк БТАКТ ;(БИО), после нажатия кнопки БТОР (БН1) переключение ;прекращается и возобновляется с места остановки ;при повторном нажатии на кнопку БТАКТ ***1************************** ************** х************ .гпс1цбе "8515бет.тпс" ;файл определений для АТ9088515 ;.гпс1цбе "ш8515бег.гпс" ;файл определений для Атшеоа8515 .бее Гешр = г16 ;временный регистр .а г 1 б = г20 .аег геч е !состояние регистра светодиодов .еЧц БтАКт = О >О-й разряд порта РО .
ес01 БТОР = 1 ;1-й разряд порта Ро .сгд 8000 гфшр гпге ;***Инициализация*** 1итт. 1бг гед 1еб,ОХРЕ ;сброс гед 1еб.О для включения ЬЕОО зес ;С=1 аег ;Т=1 — флаг направления аег гешр ;инициализация сцт ООКВ,Гешр порта РВ на вывод сце РОКТВ,Гешр ;погасить СД с1г Гешр )инициализация сцт 00КО,Гешр порта РО на ввод ;включение псдтягиваюших сцт РОКТО,Гешр резисторов порта Ро нхттзтккт: !ожидание зььс РХНО,БТАКТ нажатия гфшр нАТТБТАкт кнопки БТАКТ ЬООР: ацг РОКТВ,гед 1еб ;включение СД ;***Задержка (два вложенных цикла)*** 1бь г17,2 б1:1бг г18,2 б2: бес г18 )згпе с)2 53 2.
Программирование портов ввода!вывода 52 2.2. Обработка внешних прерываний бес г17 Ьгпе б1 !если замкнута кнопка ЗТОР, то переход ддя проверки кнопки Зтлвт, ;иначе выключение светодиодов явъс РТНО,ЗТОР хбщр ММ гзщр КЛТТЗТЬНТ ММ:яех тещр опя РОВТВ,Ьещр Ьхпя ЬКРт яЬхя гед 1есс,с зпереход, если флаг Т установлен ;пропуск следующей команды, если О-й разряд хесз 1еб установлен ;Т=1 — переключение флага ;сдвиг гед 1еб вправо яет гог гед 1еб хзщр ЬООР ЬЕРТс яЬхя гес 1еб, 7 ;пропуск следующей команды, если 7-й разряд гед 1еб установлен ;т=с — переключение флага направления ;сдвиг хес 1еб влево с1Ь хо1 ген 1еб х)щр ЬООР Задание 1.
Проверить работу программы в шаговом режиме работы с помощью симулятора ЛУК Зщб!о 4. Симуляция замыкания и размыкания кнопок УТАИТ и ВТОР осуществляется путем установки 0 (белый цвет) и 1 (черный цвет) в маленьких квадратиках порта линий интерфейса РПз!П. Перед прогоном программы установите для обеих кнопок состояние логической 1 (кнопки отжаты). Убедившись в правильной работе программы, измените параметры циклов задержки, чтобы длительность задержки составила 0,5 с. Проверьте время задержки. Для этого установите контрольные точки (17ебиф Таубе ВгеаУсро1п1) перед началом выполнения программного блока задержки и после выхода из него.
Запустив программу в режиме прогона (17е1зифАип) с остановом в контрольных точках, оцените время задержки, контролируя либо показания счетчика циклов Сус1е Соип1ег в окне Вгог1схрасе АУК З!пб!о 4 (вкладка 11О, секция Ргосеззог), либо показания Ягор !Ратей. Выполнив трансляцию программы, загрузите пех-файл в ЗТК500. При программировании следите, чтобы тип целевого микроконтроллера, установленного на используемой плате, совпадал с типом микроконтроллера в поле Ргоагаш. В процессе программирования в окне ЯТК500 появляются сообщения о ходе загрузки программы.
Убедившись в правильности загрузки по выводимым сообщениям, проверьте работу программы на макете. Для этого, выключив питание ВТК500, с помощью 10-проводного шлейфа соедините выводы разъема порта РП с выводами разъема кнопок общего назначения. С помощью второго 10-проводного шлейфа соедините выводы разъема порта РВ с выводами разъема светодиодов. Включите питание и проверьте работу загруженной программы. 2.2. ОБРАБОТКА ВНЕШНИХ ПРЕРЫВАНИЙ В качестве входов внешних прерываний используются входы портов с альтернативной функцией: РП2, РОЗ вЂ” для прерываний Пк!ТО, 1МТ! и РЕΠ— для прерывания 1ХТ2 в микроконтроллере ЛТшеяа8515. Запросы внешних прерываний Пз!ТО, Пз!Т! могут быть представлены низким уровнелс сигнала прерывания (Ь), переходом от высокого уровня сигнала к низкому (НЬ вЂ” по отрица- тельнОмУ фРонтУ), пеРЕхОДОм От Табя а2.1, Таблица выбора низкого уровня сигнала к высокому (ЬН вЂ” по положительному фронту), запрос Пз!Т2 только пере- Тнп ходами (ЬН) и (НЬ).
В зависимости !5Сх! !5Схо запроса от типа запроса в регистре управ- О О ления микроконтроллера МСЫСП необходимо установить биты О ! 1БСхО и !БСх! согласно табл. 2.1 1 О НЬ для каждого из прерываний Пз)Тх 1 1 ЬН (х = 0,1) и определить бит 1ЗС2 в регистре ЕМСЫСК для прерывания 1ХТ2. При 1ВС2 = 0 прерывание осуществляется по отрицательному фронту, при 1ЗС2 = 1 — по положительному. Далее подготовим программу переключения светодиодов с использованием внешнего прерывания от кнопки ВТОР. Согласно поставленным условиям, в блок инициализации микроконтроллера внесем ряд изменений: — добавим вектор прерываний; — указатель стека установим на последнюю ячейку ОЗУ; — разрешим внешнее прерывание ПМТО (по сигналу 0 на линии 2 порта РО) и прерывания вообще. Поскольку внешнее прерывание Пк!ТО представлено сигналом на входе порта РР2, в качестве кнопки ВТОР используем кнопку 55 54 2.
Программирование портов вводасвывода 2.2 Обработка внеиснит прерываний Я%2 и программируем Р132 на ввод, Пример программы 2„2 при- веден ниже. Задержка представлена подпрограммой ОЕ1.А'1". Про- грамма работает аналогично 2.1, но нажатие кнопки ЗТОР вызыва- ет прерывание. Программа 2.2 *с*****я**я* * * *яя ** * ;Программа 2.2 для поочередного переключения светодиодов ;при нажатии на кнопку БТАВТ (БХО).
После нажатия на кноп- ;ку ЯТОР (ЯХ2) переключение прекращается и возобновляется ;с места остановки при повторном нажатии на кнопку ЯТАВТ .****************я***********я**************************** .тпс1цбе "8515бег.тпс" ;.тпс1цбе "в8515бег.тпс" .бее Гевр = г(Б .беК гед 1еб = т20 .еЧц БТАВТ = 0 ;Файл определений для АТБОЯ8515 ;файл определений для Атпеча8515 ;временный регистр ;состояние регистра светодиодов ;0-й разряд порта РП .отд ЯООО ;**"Векторы прерываний*** г)сер 1М1Т г)пр Ятор РВЕЯБЕО ;***Инициализация МК*** 1И1Т: 141 тед 1еб, ОХРЕ 1бт Гевр,Я5Р оцт ЯРЬ, Гепр 1бт тепр,з02 оцт ЯРН,тепр яес яет яет Гепр оцт ООВВ,тепр оцт РОВТВ,тевр с1т тепр оцт ООВО,еепр 1бт Гепр,Ох05 оцт РОВТО,тепр 1бт Гепр,сх7Р оцт Б|МЯК, тепр 1б1 Гепр,Ох00 оцт МСОСВ,тепр яет ХАттЯтАВтс вьтс РТИО,ЯТАВТ ;обработка сброса ;обработка внешнего прерывания 1МТО(БТОР) .установка указателя стека на последнюю ячейку Озу (С=1 ;Т=1 ;инициализация выводов порта РВ на вывод ;погасить светодиоды ;инициализация порта РО на ввод (включение подтягивающих резисторов порта РО ;разрешение прерывания 1ИТО (б бит 01МБК или 01СВ) ;обработка прерывания 1МТО по низкому уровню разрешение прерываний ( ожидание нажатия Задание 2.
Проверить работу программы с помощью отладчика АУК З(цс!!о 4. Изменить параметры задержки, чтобы длительность задержки составила 0,5 с. Запрограммировать микроконтроллер и проверить работу программы. Зас)ание 3. Изменить про( рамму для включения !выключения) светодиодов в одной из заданных последовательностей: а) 7 — 6 — 5 — 4 — 3 — 2 — 1 — 0 — 1 — 2 — 3 — 4-5 — 6 — 7-6-5...
б) в четных разрядах; в) в нечетных разрядах; г) последовательно увеличивая количество включенных !Выключенных) светодиодов до восьми и затем уменьшая до нуля. Отладив программу, загрузите ее в микроконтроллер и проверьте работу. Задание 4. Изменить программу, добавив внешнее прерывание ПЯТ! (сигнал на линии РОЗ, адрес прерывания 002, бит 7 регистра т)пр ХАТТЯТАВТ ЬООРс оцт РОВТВ,гед 1ес( тса11 ОЕЬАХ яег гепр оцт РОВТВ„тепр Ьгтя ЬЕРТ яЬтя гед 1еб,О яет тот гед Ьес( т)вр ЬООР ЬЕРТс яЬгя геЧ 1еб,7 с1г то1 теч 1еб г5пр 1.00Р ;***Обработка прерывания БТОР РРЕБЯЕОс ХА1ТЯТАВТ 2с яЬтс Р1МО,ЯТАВТ т)пр ХАТТБТАВТ 2 теть ;*** Задержка *** ОЕЬАХс 1бф г17,2 б1: 1бт г18,2 б2: бес г18 Ьгпе б2 с1ес т17 Ьтпе б1 тес кнопки ЯТАВТ ;включение светодиодов ;задержка ;выключение светодиодов ;переход, если флаг Т установлен ;пропуск следующей команды, если 0-й разряд геч 1еб установлен ;т=1 ;сдвиг гед 1еб вправо ;пропуск следующей команды, если 7-й разряд гед 1еб установлен ;Т=О ;сдвиг гед 1еб влево от кнопки ЯТОР*** сожидание нажатия 1 кнопки ЯТАРТ 5б 57 2.