Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
5 Мб
Скачать
☆

3.3.4 Простейшая задача

МК применяются для программного управления какими-либо устройствами – телевизорами, музыкальными центрами, стиральными машинами, радиостанциями и т. д.

Разработка любой программы начинается с разработки алгоритма.

Алгоритм – это последовательность действий, которую должен произвести МК или МП, чтобы достичь требуемого результата. Простые алгоритмы описываются словами, сложные – схемой.

84

Начинать будем с простейшей задачи, бессмысленной, но удобной для обучения.

«Разработать устройство управления светодиодным индикатором одной кнопкой. При нажатии кнопки светодиод должен загореться, а при отпускании – погаснуть».

Принципиальная схема. Светодиод необходимо подключить к одному из портов ввода-вывода, который управляющей программой должен быть настроен на вывод, а кнопку – к другому порту, который надо будет настроить на ввод.

Выбираем МК, имеющий не менее двух портов, например ATtiny2313. Эта ИМС размещена в корпусе с 20-ю выводами и содержит: два основных порта (В и D), два таймера-счетчика, два канала SPI, один канал TWI (12C), один канал UART. Объём Flach-памяти программ – 2 Кбайт, EEPROM – 126 байт, ОЗУ – 256 байт.

Светодиод включаем в младший разряд порта В (PB0) через резистор R1, за счёт чего ток не превышает допустимого значения – 20 мА. А кнопку – в младший разряд порта D (PD0). Принципиальная схема приведена на рисунке 3.1.6. На кнопку подано напряжение +5 В через резистор, находящийся внутри МК. При её замыкании напряже

ние на PD0 падает до «0». При размыкании +5 В соответствуют «1». Чтобы зажечь све

тодиод, на вывод PB0 должен быть подан «0». При подаче «1» светодиод погаснет.

Кварцевый резонатор обеспечивает работу встроенного тактового генератора. Он подключен к МК через согласующие конденсаторы С1 и С2. При включении питания МК сбрасывается внутренней системой сброса.

Рисунок 3.1.6 – Схема устройства управления светодиодом

3.3.5 Описание программы

Текст программы начинается с шапки, в виде нескольких строк комментариев, со- держащей название программы, её версию и дату написания. Шапка позволяет отличать одну программу от другой. Программа содержит 18 строк.

1-я строка – псевдокоманда .include, которая присоединяет к основному тексту программы файл описаний микроконтроллера АТ tiny2313 "tn2313def . inc".

(Все файлы описаний находятся в стандартном пакете AVR-Studio. Для каждого МК – свой файл. Все стандартные файлы описаний находятся в директории «C:\ Program Files\Atmel\AVR Tools\AvrАssembler\Appnotes\.»)

При программировании нужно выбрать нужный файл и включить в программу. Если файл описаний находится в директории, то в команде include достаточно указать полное имя с расширением. Полный путь указывать не надо.

85

2-я строка .list – включение генерации листинга.

3-я строка .def – команда макроопределения, по которой регистру r16 присваивается имя temp (временный). Этот регистр будет временно хранить промежуточные величины. Выбран регистр r16, так как он имеет больше возможностей, чем r0 - r15 и может работать с командой ldi загрузки в РОН числовой константы. При нескольких регистрах удобнее пользоваться их именами, а не номерами.

4-я строка .cseg – выбор программного сегмента памяти. Используя директиву и «указатель текущего адреса», транслятор автоматически размещает команды в памяти.

5-я строка .org – принудительное позиционирование указателя текущего адреса. Директива позволяет разместить фрагмент программы в конкретном месте 90рограммной памяти. В описываемой программе устанавливаем на «0».

6-я и 7-я строки. Инициализация стека. В регистр стека записывается адрес вершины стека (с.124 Белов) (файл описаний - ?)

Строки 8-12 – настройка портов ввода-вывода осуществляется с использованием регистра temp, в который сначала записывается соответствующий код, а затем он переносится в нужный регистр. На рисунке 3.1.16 PВ – ввод, PВ – вывод.

Строка 8. В регистр temp заносим нули.

Строка 9. Содержимое регистра temp переносим в регистр DDRD, который настраивает порт PORTD на ввод.

Строка 10. В регистр temp заносим единицы, т.е. записываем 1111 1111 = ff

Строка 11. Содержимое регистра temp переносим в регистр DDRВ, который настраивает порт PORTВ на вывод.

Строка 12. Чтобы потушить светодиод, на вывод РВ1 надо подать «1», для чего заносим в РВ во все разряды 111 1111, которые уже записаны в регистр temp.

Строка 13. Чтобы включить внутренние резисторы к выводам порта РD, записываем содержимое регистра temp в порт PORTD. Внутренние резисторы исключают короткое замыкание источника питания через кнопку.

Строки 14 и 15 – отключение компаратора, для чего в регистр temp записывается число 0х80, а потом из регистра заносится ACSR, предназначенный для управления компаратором, Константа 0х80, занесённая в регистр ACSR, отключает компаратор.

Строки 1-15 – подготовительная часть программы по настройке МК.

Строки 16-18 – основной цикл программы.

Строка 16. Чтение содержимого порта PD (нажата или не нажата кнопка) и запоминание в регистре temp.

Строка 17. Пересылка содержимого регистра в порт РВ.

Строка 18. Оператор безусловного перехода передаёт управление по метке main.

86

87

ПРИЛОЖЕНИЕ 3.4 Параметры микроконтроллеров AVR

ПРИЛОЖЕНИЕ 3.5