سلام
برنامه تست شده وکارمیکنه .عکسش روبرات میزارم.فرکانس موردنظرداده شده 9999 هرتزمیباشدکه توی عکس 9977نمایش داده شده باخطای خیلی کم.برای ساخت درعمل بایدپایه ای فرکانس واردمیشودبایک مقاومت 4.7کیلوپول آپ شود تادقیق نشان دهد.اینم برنامه.شماهم موفق باشین.
$regfile = "m16def.dat"
$crystal = 16000000
Config Clock = Soft , Gosub = Sectic
Config Timer1 = Counter , Edge = Rising
Enable Interrupts
Enable Ovf1
On Ovf1 Pulse
Dim Aa As Long
Config Portd = Output
Config Debounce = 50
Ddrc.0 = 1 : Portc.0 = 0 : S1 Alias Portc.0
Ddrc.1 = 1 : Portc.1 = 0 : S2 Alias Portc.1
Ddrc.2 = 1 : Portc.2 = 0 : S3 Alias Portc.2
Ddrc.3 = 1 : Portc.3 = 0 : S4 Alias Portc.3
Dim Hezar As Word , Sad As Word , Dah As Word
Dim Yek As Word , X As Word , Y As Word
Dim B As Byte
Declare Sub Hesab
Ddrb.1 = 0 : Portb.1 = 1
Sectic:
Aa = Aa * 65536
Aa = Aa + Counter1
Counter1 = 0
Do
Call Hesab
B = Lookup(hezar , Dat)
Reset S1 : Set S2 : Set S3 : Set S4
B = Not B
Portd = B
Waitus 500
Portd = 0
'==============
B = Lookup(sad , Dat)
Set S1 : Reset S2 : Set S3 : Set S4
B = Not B
Portd = B
Waitus 500
Portd = 0
'==============
B = Lookup(dah , Dat)
Set S1 : Set S2 : Reset S3 : Set S4
B = Not B
Portd = B
Waitus 500
Portd = 0
'==============
B = Lookup(yek , Dat)
Set S1 : Set S2 : Set S3 : Reset S4
B = Not B
Portd = B
Waitus 500
Portd = 0
Loop
End
'***************************************************
Hesab:
Hezar = Aa / 1000
X = Hezar * 1000
Y = Aa - X
Sad = Y / 100
X = Sad * 100
X = Y - X
Dah = X / 10
Yek = Dah * 10
Yek = X - Yek
Return
L1:
Aa = 0
Return
Pulse:
Incr Aa
Counter1 = 0
Return
Dat:
Data &H03 , &H9F , &H25 , &H0D , &H99 , &H49
Data &H41 , &H1F , &H01 , &H09