![]() |
Главная Микроконтроллеры [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [ 70 ] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] ReadNote: Idi Idi mov Isl add inc 1pm mov inc 1pm sbrc rjmp mov SetFreq: Idi Idi Isl out inc ; Чтение длительности и номера одной ноты r31,High(2»ProgramTab) ; Freqlndex = Lo ProgramTab[Step] гЗО,Low(2«ProgramTab) : FreqDelay = Hi ProgramTab[Step] rO,Step rO гЗО,rO Step Freqlndex,rO гЗО rO.7 SleepReset FreqDelay.rO Step++ ; Если старший бит установлен, то ; это означает, что мелодия закончилась : Настройка таймера 1 на вывод частоты текущей ноты r31.High(2«SoundTab) ; 0CR1A = SoundTab[FreqIndex] гЗО,Low(2«SoundTab) Freqlndex гЗО,Freqlndex 0CR1AL,rO гЗО 0CR1AH,rO Wait; tst FreqDelay brne Wait rjmp ReadNote SleepReset: Idi гЗО,$3F out MCUCR,гЗО sleep rjmp Reset Ожидаем заданное время, пока проигрывается текущая нота ; Подготовка к переходу в режим Power Down ; Отключение микроконтроллера : Эта команда в данной версии программы не : должна исполняться никогда .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,19-12,1732,1568 ; третья октава ; При необходимости таблицу можно продолжить ProgramTab: ; Таблица последовательности нот, ; формат таблицы: байт длительности/кода операции, байт номера частоты ; В зтом примере записано проигрывание гаммы .DW $1001, $1002, $1003, $1004, $1005, $1006, $1007
Основу схемы составляет микроконтроллер AT90S8515, он подключен к компьютеру через последовательный порт, а для управления внешними устройствами используются выводы трех свободных портов - А, В и С. Для упрощения схемы данные передаются только в одну сторону - от компьютера к микроконтроллеру, никаких под- .DW $1008. $1009, $100А, $10СВ, $10СС, $100D, $1С0Е .DW $2C0D, $2006, $2009, $2007, $2005, $2003, $2001 DW $8000 .EXIT Автор: Сафонников В. В. (E-mail: sw@ufanet.ru). 6.13. Универсальный расширитель последовательного порта Назначение Схема предназначена для управления с помощью компьютера различными устро11ствами: бытовыми электроприборами, шаговыми двигателями, электромагнитами и т. д. Можно ее также использовать как основу для программирования микросхем памяти, микроконтроллеров или других разработок. Для подключения к внешним устройствам имеются 24 универсальных выхода, совместимых с TTL, состояние и режим работы каждого из них можно задать с помощью управляющей программы. Она может быть написана на любом языке, поддерживающем технологию СОМ (ActiveX), например Delphi, MS Visual С++, MS Visual Basic, JavaScript, VBS и т. д. Характеристики устройства Vcc=5B Vcc=5B
VOH(B) ![]() Vra.(B) Рис. 6.14. Нагрузочные характеристики выводов микросхемы Р TxDo- VD1 КД102 D1 AT90S8S1S GNDO-1 R2 10к LJs.iK 17 16 15 14 13 12 11 10 VT1 КТ315 С3 1 20 г i ВМГц 5?нк- С1 O.lMK PD7/RD PD6WR PD5/OC1A PD4 PD3/INT1 PD2/INT0 Р01ЯХ0 PDC/RXD XTAL1 XTAL2 reset PA7/AD7 PA6/AD6 PA5/AD5 PA4/AD4 PA3/AD4 PA2/AD2 PA1/AD1 РАС/ADO PA7/SCK PB6/MISO PB5/MOSI PB4/SS PB3/AIN1 PB2/ANI0 PBinl рвол-о PC0/A8 PC1/A9 PC2/A10 PC3/A11 PC4/A12 PC5/A13 PC6/A14 PC7/A15 о о. <u S <a Рис. 6.15. Электрическая принципиальная схема тверждений не возвращается, запросить состояния выводов компьютер тоже не может, хотя программа микроконтроллера поддерживает такой режим работы. Уровни последовательного порта преобразуются в TTL с помощью схемы на транзисторе VT1. Если вы собираетесь использовать эту схему для управления устройствами, работающими с высоким на1фяжением, вместо транзистора следует использовать оптопару. [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [ 70 ] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] 0.0011 |