SoS
مدیر سایت
وضعيت: آفلاين 11 شهريور ماه ، 1387 تعداد ارسالها: 569 امتياز: 371 تشکر کرده: 15 تشکر شده 334 بار در 201 پست
|
ارسال شده در: يكشنبه، 25 اسفند ماه ، 1387 12:21:20 موضوع مطلب: مدار ارگ الکترونیکی توسط AVR |
|
|
دوست عزیز برای اینکه بتوانبد نوت های موسیقی را تولید کنید میتوانید از برنامه زیر استفاده کنید.
:كد |
'*********************************************
'* This Program Writing By : Hossein Lachini *
'* The AVR Musical Timer *
'* For to get more details visit : *
'* www.HLachini.com *
'* Contact to me by : eLachini@Gmail.com *
'* Mobile/SMS : +98 912 381 2060 *
'*********************************************
$regfile = "m8def.dat"
$crystal = 1000000
'****************************
Config Pinb.0 = Output
Config Pind.0 = Input
Config Portc = Output
Config Pind.1 = Output
Config Timer0 = Timer , Prescale = 1024
On Ovf0 Tim0_isr
'****************************
Musicpin Alias Portb.1
'****************************
Const La = 114
Const Lad = 107
Const Si = 101
Const Doo = 96
Const Dod = 90
Const Re = 85
Const Red = 80
Const Mi = 76
Const Fa = 72
Const Fad = 68
Const Sol = 64
Const Sold = 60
Const Mt = 1
'****************************
Enable Timer0 ' enable the timer interrupt
Enable Interrupts
Dim I As Word
Dim Note As Byte
Dim Length As Byte
Dim Duration As Word
Dim B As Byte
Dim C As Byte
Dim S As Byte
Dim M As Byte
Dim H As Byte
Dim K As Byte
Dim E As Eram Byte
If E > 12 Then E = 0
B = E
C = 0
S = 0
M = 0
H = 0
B = 0
Do
If B = 0 Then Set Portd.1
If Pind.0 = 1 Then
B = B + 2
If B > 12 Then B = 0
K = B * 5
K = K + 100
Sound Musicpin , 100 , K
K = B / 2
For I = 1 To K
Set Portd.1
Waitms 500
Reset Portd.1
Waitms 500
Next I
E = B
C = 0
S = 0
M = 0
H = 0
End If
If H = B And B > 0 Then
C = 0
S = 0
M = 0
H = 0
Set Portd.1
For I = 0 To 149
Note = Lookup(i , Notes)
Note = Note * 2
Length = Lookup(i , Lengths)
Duration = 5000 / Note
Duration = Duration * Length
Sound Musicpin , Duration , Note
Next I
Reset Portd.1
Wait 3
End If
Loop
End
Tim0_isr:
Timer0 = 191
Incr C
If C = 15 Then
C = 0
Incr S
If S = 60 Then
S = 0
Incr M
If M = 60 Then
M = 0
Incr H
If H = 24 Then H = 0
End If
End If
End If
Return
'****************************
Notes:
Data La , Si , Doo , Mi , Fa , Mi
Data Fa , Mi , Fa , Mi , Fa , Mi , Re , Mi
Data Re , Mi , Re , Mi , Re , Mi
Data Re , Doo , Re , Doo , Re , Doo
Data Si , La , Sold , La , Si , Mt
Data Fa , Mi , Mt
Data La , Si , Doo , Mi , Fa , Mi
Data Fa , Mi , Fa , Mi , Fa , Mi , Re , Mi
Data Re , Mi , Re , Mi , Re , Mi
Data Re , Doo , Re , Doo , Re , Doo
Data Si , La , Sold , La , Si , Mt
Data Fa , Mi , Mt ,
Data La , Sol , Fa , Mi , Fa , Mi
Data Re , Fa , Mi , Re , Fa , Sol
Data Fa , Mi , Re , Mi , Re , Doo
Data Mi , Re , Doo , Mi , Fa , Mi
Data Re , Doo , Re , Doo , Si , Re
Data Doo , Si , Re , Re , Mi , Sol
Data Fa , Mi , Sold , La , Mt
Data La , Sol , Fa , Mi , Fa , Mi
Data Re , Fa , Mi , Re , Fa , Sol
Data Fa , Mi , Re , Mi , Re , Doo
Data Mi , Re , Doo , Mi , Fa , Mi
Data Re , Doo , Re , Doo , Si , Re
Data Doo , Si , Re , Mi , Mi , Doo
Data Si , La , Mt
'****************************
Lengths:
Data 4 , 4 , 4 , 8 , 4 , 8
Data 4 , 8 , 4 , 4 , 4 , 4 , 8 , 4
Data 8 , 4 , 8 , 4 , 4 , 4
Data 4 , 8 , 4 , 8 , 4 , 8
Data 4 , 4 , 4 , 4 , 6 , 4
Data 8 , 4 , 4
Data 4 , 4 , 4 , 8 , 4 , 8
Data 4 , 8 , 4 , 4 , 4 , 4 , 8 , 4
Data 8 , 4 , 8 , 4 , 4 , 4
Data 4 , 8 , 4 , 8 , 4 , 8
Data 4 , 4 , 4 , 4 , 6 , 4
Data 8 , 4 , 4
Data 4 , 4 , 4 , 4 , 6 , 2
Data 4 , 6 , 2 , 4 , 8 , 4
Data 4 , 4 , 4 , 6 , 2 , 4
Data 6 , 2 , 4 , 8 , 4 , 4
Data 4 , 4 , 6 , 2 , 4 , 6
Data 2 , 4 , 8 , 4 , 4 , 4
Data 4 , 12 , 12 , 8 , 4
Data 4 , 4 , 4 , 4 , 6 , 2
Data 4 , 6 , 2 , 4 , 8 , 4
Data 4 , 4 , 4 , 6 , 2 , 4
Data 6 , 2 , 4 , 8 , 4 , 4
Data 4 , 4 , 6 , 2 , 4 , 6
Data 2 , 4 , 8 , 4 , 4 , 4
Data 4 , 4 , 16
|
البته این برنامه برای یک تایمر موزیکال است. که من توصیه میکنم برای مشاهده نقشه و توضیحات کاملتر به آدرس زیر مراجعه کنید :
http://www.hlachini.com/article-38--0-0.html
شما با کمی تغییر در مدار میتوانید از آن برای ساخت ارگ استفاده کنید. |
|