'-------------------------- Описание проекта ---------------------------------
'Проект : birthday
'Автор :
'
'Версия : 1.0.0 от 10.09.2010
'
'-------------------------- Опции компилятора --------------------------------
Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные
Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR
Declare Reminders = OFF ' Выключить напоминания компилятора
Declare Warnings = OFF ' Выключить предупреждения компилятора
Declare Optimiser_Level 3 ' Включить оптимизацию программы
;-------------------------- Общие настройки------------------------------------
Device = 16F628A ' Используемый микроконтроллер
Xtal = 4 ' Частота осциллятора 4 МГц
'-------------------------- Конфигурация программирования --------------------
Config BODEN_OFF, BOREN_OFF, CP_ON, DATA_CP_ON, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT
'-------------------------- Настройки портов ---------------------------------
PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
Declare All_Digital = On ' Установить все порты цифровыми входами/выходами
'-------------------------- Начало -------------------------------------------
' Это таблица нот, скопированная из интернета. Константы соответствуют частоте звучания
Symbol R = 0
Symbol C = 82
Symbol _DB = 85
Symbol D = 87
Symbol Eb = 89
Symbol E = 92
Symbol F = 94
Symbol Gb = 95
Symbol G = 97
Symbol Ab1 = 99
Symbol A1 = 73
Symbol Bb1 = 76
Symbol BE1 = 79
Symbol C1 = 82
Symbol _DB1= 85
Symbol D1 = 87
Symbol Eb1 = 89
Symbol E1 = 92
Symbol F1 = 94
Symbol Gb1 = 95
Symbol G1 = 97
Symbol Ab2 = 99
Symbol A2 = 101
Symbol Bb2 = 102
Symbol BE2 = 104
Symbol C2 = 105
Symbol _DB2 = 106
Symbol D2 = 108
Symbol E2 = 110
Symbol F2 = 111
Symbol Gb2 = 112
Symbol G2 = 113
Symbol Bb3 = 115
Symbol Bm3 = 116
Symbol C3 = 117
Symbol D3 = 118
Symbol PIN =PORTB.1 'Вывод на пищалку
Symbol FOT = PORTB.0 'Вход фотоэлемента
Symbol LED = PORTB.3 'Выход управления светодиодом
TRISB = 1 'PORTB.0 - на вход
'-------------------------- Главная программа -------------------------
MainProgram:
DelayMS 1000 'Задержка для того, чтобы по окончании мелодии, она начиналась не сразу
If FOT = 1 Then 'Если фотоэлемент засвечен, то
LED = 1 'Зажжем светодиод
GoSub Sound_1 'Играем первый фрагмент
GoSub Sound_2 'Играем второй фрагмент
DelayMS 1000 'Задержка
GoSub Sound_1 'Опять играем первый фрагмент
GoSub sound_3 'Играем третий фрагмент
Else
LED = 0 'Погасим светодиод
EndIf
GoTo MainProgram
Sound_1:
Sound PIN,[C,30,C,15,D,40,C,40,F1,40, E1,60, R, 40, C,30,C,15,D,40,C,40,G1,40, F1,60, R, 40, C,30,C,15,C2,45, A2,40,F,40,E,40,D,40]
Return
Sound_2:
Sound PIN, [R,50,Bb2,30,Bb2,20,A2,40,F1,40,G1,40,F1,50]
Return
sound_3:
Sound PIN,[R,70,Bb2,50,Bb2,30,A2,50,F1,50,G1,80,F1,140]
Return
|