ldi r30,$3F ; Подготовка к переходу в режим Power Down
out MCUCR,r30
sleep; Отключение микроконтроллера
rjmp Reset; Эта команда в данной версии программы не должна исполняться никогда
.ORG $100
SoundTab:
; Таблица констант соответствующим нотам
; Желательно выровнять таблицу по границе 256 байтов, чтобы упростить программу, отказавшись от операций с 16-битовыми словами.
.DW 11364,10292,9322,8443,7647,6926,6273; 440 Гц — нота "ля"
.DW 5682,5146,4661,4222,3824,3463,3137: вторая октава
.DW 2841,2573,2330,2111,1912,1732,1568; третья октава
; При необходимости таблицу можно продолжить
ProgramTab:
; Таблица последовательности нот,
; формат таблицы: байт длительности/кода операции, байт номера частоты
; В этом примере записано проигрывание гаммы
.DW $1001, $1002, $1003, $1004, $1005, $1006, $1007
.DW $1008, $1009, $100А, $100В, $10 °C, $100D, $100Е
.DW S200D, $2006, $2009, $2007, $2005, $2003, $2001
.DW $8000
EXIT
Автор: Сафонников В. В. (E-maiclass="underline" sw@ufanet.ru).
6.13. Универсальный расширитель последовательного порта
Назначение
Схема предназначена для управления с помощью компьютера различными устройствами: бытовыми электроприборами, шаговыми двигателями, электромагнитами и т. д. Можно ее также использовать как основу для программирования микросхем памяти, микроконтроллеров или других разработок. Для подключения к внешним устройствам имеются 24 универсальных выхода, совместимых с TTL, состояние и режим работы каждого из них можно задать с помощью управляющей программы. Она может быть написана на любом языке, поддерживающем технологию COM (ActiveX), например Delphi, MS Visual C++, MS Visual Basic, JavaScript, VBS и т. д.
Основу схемы составляет микроконтроллер AT90S8515, он подключен к компьютеру через последовательный порт, а для управления внешними устройствами используются выводы трех свободных портов — А, В и С. Для упрощения схемы данные передаются только в одну сторону — от компьютера к микроконтроллеру, никаких подтверждений не возвращается, запросить состояния выводов компьютер тоже не может, хотя программа микроконтроллера поддерживает такой режим работы.
Рис. 6.14. Нагрузочные характеристики выводов микросхемы
Рис. 6.15. Электрическая принципиальная схема
Уровни последовательного порта преобразуются в TTL с помощью схемы на транзисторе VT1. Если вы собираетесь использовать эту схему для управления устройствами, работающими с высоким напряжением, вместо транзистора следует использовать оптопару.
При работающей программе микроконтроллера на выводе 17 должны быть импульсы с частотой около мегагерца — это сделано для упрощения отладки.
После включения питания все порты переводятся в третье состояние.
Комплект программ для этой конструкции находится на компакт диске, прилагаемом к книге.
Автор: Сафонников В. В. (E-maiclass="underline" sw@ufanet.ru).
6.14. Таймер
1. Краткое описание и назначение прибора
Таймер представляет собой электронное устройство для включения и выключения в заданное время в соответствии с расписанием подключенных к нему электроприборов. Расписание набирается с помощью специальной программы на компьютере, а затем загружается в таймер через последовательный порт. В качестве корпуса лучше всего подходит удлинитель с несколькими розетками.
2. Схема конструкции показана на рис. 6.16.
Рис. 6.16. Электрическая принципиальная схема
3. Программа
Для компилирования программы использовался AVR macro assembler version 1.21 и файл 2313def.inc с описанием периферии микроконтроллера, оба они доступны на сайте Atmel. Программа может быть перенесена для работы с другими микроконтроллерами семейства AVR. Для этого замените файллпс, а константе ENDJDATAAREA присвойте новое значение в соответствии с размером доступной памяти.
Текст программы:
INCLUDE "2313def.inc"; @ 8 МГц
.DEF tmp=r0
.DEF SSREG=r1
.DEF tem=r25
.DEF temp=r26
.DEF TheByte=r27
.DEF Time0=r16
.DEF Time1=r17
.DEF Time2=r18