Регистр входных данных порта А – PINA
Регистр PINA обеспечивает только возможность чтения, а регистры PORTA и DDRA – возможность чтения и записи. Регистр PINA не является регистром в полном смысле этого слова. Обращение к нему обеспечивает чтение физического состояния каждого вывода порта. Аналогичное устройство и обозначение имеют и регистры портов B, C и D, их адреса приведены в таблице 9.
Таблица 9. Адреса регистров портов ввода/вывода B, C и D
Все порты в качестве цифровых портов ввода/вывода общего назначения работают одинаково: - Каждый вывод порта в любой момент времени. может быть запрограммирован индивидуально на ввод или вывод. Если в регистре направления данных порта DDR для рассматриваемого бита записать “0”, то соответствующий вывод конфигурируется как вход, при записи “1” – как выход. - Биты регистра PORT выполняют двойную функцию. Если вывод функционирует как выход, то этот бит определяет состояние вывода порта. Если бит установлен в 1, на выводе устанавливается напряжение высокого уровня (4,5…5 В). Если бит сброшен в 0, на выводе устанавливается напряжение низкого уровня (0…0,5 В). Нагрузочной способности каждого вывода достаточно для непосредственного управления светодиодным индикатором. - Если вывод функционирует как вход, то бит регистра PORT определяет состояние внутреннего подтягивающего резистора для данного вывода. При установке бита в 1 подтягивающий резистор подключается между выводом микроконтроллера и линией питания (уровень напряжения на выводе неподключенного входа составляет 3,5…4 В, что воспринимается как наличие входного сигнала “1”, но при этом велико влияние помех).
- Все выводы портов незапрограммированного микроконтроллера находятся в третьем состоянии. Контакты ввода/вывода AVR-микроконтроллеров могут иметь дополнительные функции и использоваться различными периферийными модулями. При этом возможны две ситуации. В одних случаях пользователь должен самостоятельно задавать конфигурацию вывода, а в других вывод конфигурируется автоматически при включении соответствующего периферийного устройства. Об этом сказано при рассмотрении соответствующих периферийных устройств. Порт А в микроконтроллере ATmega8535 служит также для ввода аналоговых сигналов в аналого-цифровой преобразователь. Выводы порта В могут выполнять альтернативные функции, указанные в таблице 10 (при этом регистры PORTB, DDRB должны быть установлены соответствующим образом). Таблица 10. Альтернативные функции выводов порта В
У порта С четыре вывода могут выполнять альтернативные функции: выводы PC6 и PC7 выполняют функции TOSC1 и TOSC2 таймера/счетчика 2 (вход и выход для подключения резонатора), выводы PC0 и PC1 выполняют функции SCL (синхронизация) и SDA (данные) для последовательного двухпроводного интерфейса TWI. Выводы порта D могут выполнять альтернативные функции, указанные в таблице 11 (регистры PORTD, DDRD должны быть установлены соответствующим образом).
Таблица 11. Альтернативные функцин выводов порта D
При разработке программ в соответствии с полученными индивидуальными заданиями студенты могут взять за основу примеры программ, приведенных в разделе 4.4. Для выполнения некоторых заданий необходимо обеспечивать временные задержки, которые можно организовать при помощи следующей подпрограммы: wait:; подпрограмма временной задержки ldi r21,$28 loop2: ldi r22,$0ff loop1: ldi r23,$0ff loop: dec r23 brne loop dec r22 brne loop1 dec r21 brne loop2 ret Приведенная подпрограмма, использующая регистры R21 – R23, обеспечивает при тактовой частоте 8 МГц временную задержку примерно в 1 секунду. При необходимости изменения задержки можно изменить число, записываемое в регистр R21. Варианты индивидуальных заданий
1. Организовать сложение двух трехбитных чисел и индикацию результата на семисегментном индикаторе. Три произвольно выбранных тумблера представляют собой первое слагаемое, т.е. возможен набор чисел от 0 до 7. Три других тумблера представляют собой второе слагаемое. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0... E. 2. В памяти записать массив, содержащий 8 ячеек. В ячейках массива находятся шестнадцатеричные цифры (числа от 00 до 0F). С помощью четырех тумблеров вводится еще одна шестнадцатеричная цифра. Программа должна определить, присутствует ли эта цифра в массиве. Если цифра присутствует, то нужно высветить ее в шестнадцатеричном виде на семисегментном индикаторе. Если цифры в массиве нет, на индикаторе высвечивается символ "Н" (нет). 3. При нажатии на одну кнопку загорается цифра 1 и светодиод VD4. При нажатии на другую кнопку загорается цифра 2 и светодиод VD5. При одновременном нажатии этих кнопок загорается цифра 3 и включается светодиод VD6.
4. Организовать умножение двухбитных чисел и индикацию результата на семисегментном индикаторе. Два произвольно выбранных тумблера представляют собой первый сомножитель, т.е. возможен набор чисел от 0 до 3. Два других тумблера представляют собой второй сомножитель. 5. При отключенном тумблере горит светодиод VD4 и на индикаторе HG1 горит цифра 2. При включении тумблера светодиод VD4 и индикатор HG1 гаснут, загорается светодиод VD5 и на индикаторе HG2 загорается цифра 5. При включении другого тумблера все светодиоды и индикаторы гаснут. 6. Организовать сложение двух чисел 3 и 4. При нажатой кнопке на семисегментном индикаторе горит первое слагаемое, при другой нажатой кноп- 7. В массиве из 16 ячеек памяти располагаются шестнадцатеричные числа от 00 до 0F. В массиве есть только одно число, которое повторяется несколько раз. Выявить какое это число и сколько раз оно повторяется. При нажатии на кнопку на семисегментном индикаторе HG1 загорается повторяющееся число. При нажатии на другую кнопку на семисегментном индикаторе HG2 высвечивается число его повторений. Если нет повторяющегося числа, то при нажатии на первую кнопку на индикаторе HG1 загорается символ "Н" (нет). 8. При включении микроконтроллера на семисегментном индикаторе горит "0". Организовать счет и индикацию числа нажатий кнопки на индикаторе в шестнадцатеричном виде, т. е. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 0, 1, 2, 3, 4, …. Нажатие кнопки сопровождается загоранием светодиода VD5. Для упрощения программы мер борьбы с дребезгом контактов можно не предпринимать. 9. В исходном состоянии на семисегментном индикаторе горит цифра 7. При нажатии и отпускании кнопки на индикаторе загорается цифра 5 и включаются светодиоды VD4 и VD6. При нажатии и удержании другой кнопки все индикаторы и светодиоды гаснут, при отпускании возобновляется исходное состояние. 10. В исходном состоянии горят светодиоды VD4 и VD6, и на семисегментном индикаторе горит цифра 4. При нажатии и удержании кнопки светодиоды VD4 и VD6 гаснут, загорается светодиод VD5, а на индикаторе загорается цифра 9. При отпускании кнопки схема приходит в исходное состояние.
11. В исходном состоянии горит светодиод VD1, а на семисегментном индикаторе высвечивается цифра 1, то есть номер светодиода. При нажатии и отпускании кнопки светодиод VD1 гаснет, а VD2 загорается, то есть происходит сдвиг свечения влево. На индикаторе загорается цифра 2. При каждом очередном нажатии на кнопку свечение сдвигается влево, то есть наблюдается свечение VD3, VD4, VD5, VD6, VD7, VD8, затем снова VD1 и так далее. При этом на индикаторах высвечиваются соответственно цифры 3, 4, 5, 6, 7, 8, 1 и так далее. При нажатии и отпускании другой кнопки схема работает аналогично, но сдвиг свечения происходит вправо. 12. Реализовать на микроконтроллере схему управления светофором. При включении тумблера светофор работает в дневном режиме, то есть чередование сигналов следующее: зеленый (VD1), желтый (VD2), красный (VD3), желтый, зеленый, желтый и так далее. При отключении тумблера светофор работает в ночном режиме, то есть мигает желтый светодиод VD2. В дневном режиме работы на семисегментном индикаторе горит буква “d”, в ночном режи-ме – буква “H”. 13. Организовать «бегущий» огонь по сегментам семисегментного индикатора HG1 и HG2. При «беге» по часовой стрелке чередование сегментов следующее: a, b, c, d, e, f, a, b … и так далее. При включенном тумблере реализуется «бегущий» огонь по часовой стрелке, при отключенном – против часовой стрелки. При другом включенном тумблере «бегущий» огонь реализуется по сегментам индикатора HG1, при отключенном – по сегментам индикатора HG2. 14. Организовать счет числа нажатий двух кнопок. В исходном состоянии на семисегментном индикаторе горит число 0. При каждом очередном нажатии на одну кнопку число на индикаторе увеличивается на единицу. Счет возможен до F. Если счет достиг числа F, то дальнейшие нажатия этой кнопки число не меняют. При каждом очередном нажатии на другую кнопку число на индикаторах уменьшается на единицу. При достижении числа 0 дальнейшие нажатия этой кнопки число не меняют. 15. Организовать счет числа нажатий кнопки. В исходном состоянии все светодиоды и индикаторы погашены. Каждое очередное нажатие кнопки считается микроконтроллером. После 10 нажатий загорается светодиод VD4, а на семисегментном индикаторе загорается цифра 1. После второго десятка нажатий дополнительно загорается светодиод VD5, а на индикаторе цифра 2. Дальнейшие нажатия кнопки не меняют состояния схемы. Нажатие другой кнопки гасит все светодиоды и индикатор, и микроконтроллер приходит в исходное состояние.
16. Реализовать последовательное формирование свечения цифры 3 на семисегментном индикаторе. В исходном состоянии индикатор погашен. При включении тумблера включаются сегменты индикатора HG1 в последовательности a, b, c, d, g. На индикаторе горит цифра 3. При отключении тумблера гаснут сегменты индикатора HG1 в последовательности g, d, c, b, a.
6.3. Лабораторная работа № 2. Система внешних Цель работы Изучить организацию прерываний в микроконтроллере ATmega8535 и обслуживание подсистемы внешних прерываний. Пояснения к работе Микроконтроллер ATmega8535 использует 21 источник прерывания. Эти прерывания располагают отдельными векторами в пространстве памяти программ. Каждому прерыванию присвоен свой бит разрешения, который должен быть установлен совместно с битом I регистра состояния SREG. Перечень векторов прерывания представлен в таблице 12. Таблица 12. Вектора прерываний микроконтроллера ATMega8535
Прерывания с младшими адресами имеют больший уровень приоритета. RESET имеет наивысший уровень приоритета, следующим является запрос внешнего прерывания INT0 и т. д. При возникновении прерывания бит I разрешения глобального прерывания очищается, и все прочие прерывания запрещаются. Пользовательское программное обеспечение, с тем, чтобы разрешить вложенные прерывания, может установить бит I внутри подпрограммы обработки прерывания. Выход из подпрограммы обработки прерывания происходит по команде RETI, при этом бит I устанавливается в состояние 1. Все имеющиеся прерывания можно разделить на два типа. Прерывания первого типа генерируются при наступлении некоторого события, в результате которого устанавливается флаг прерывания. Затем, если прерывание разрешено, в счетчик команд загружается адрес вектора соответствующего прерывания. При этом флаг прерывания аппаратно сбрасывается. Он также может быть сброшен программно, записью логической единицы в бит регистра, соответствующий флагу. Если условия прерываний возникли, когда очищен бит разрешения всех прерываний, поступающие прерывания устанавливают свои флаги, и они будут сохранены в таком состоянии, пока не возникает разрешение глобального прерывания, и будут обработаны в порядке приоритетов. Прерывания второго типа не имеют флагов прерываний и генерируются в течение всего времени, пока присутствуют условия, необходимые для генерации прерывания. Например, внешние прерывания по уровню сигнала флага не имеют и условия прерывания сохраняются, пока активен внешний сигнал. Соответственно если условия, вызывающие прерывание, исчезнут до разрешения прерывания, генерации прерывания не произойдет. Необходимо иметь в виду, что регистр состояния автоматически не сохраняется при переходе к прерывающей подпрограмме, т.е. при необходимости он должен быть программно сохранён и при возвращении из прерывающей подпрограммы восстановлен. Микроконтроллер ATmega8535 содержит общий регистр управления прерываниями GICR и общий регистр флагов внешних прерываний GIFR.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|