سلام.. من یه بار قبلا توضیح داده بودم...
فرکانس یعنی چی؟؟ یعنی تعداد پالس در 1 ثانیه...
پس شما باید توسط یک تایمر 1 ثانیه رو ایجاد کنی و توسط یک کانتر تعداد پالس هاش رو بخونی...
کد:
$regfile = "m8def.dat"
تعریف میکرو و فرکانس کاری
$crystal = 8000000
'----------
خاموش کردن مکان نما
Cursor Off
'-----------
تایمر 1 رو کانتر تعریف کرده که حساس به لبه بالا رونده است
Config Timer1 = Counter , Edge = Rising
Ddrd.5 = 0
Portd.5 = 1
'-------
تایمر صفر رو تاینمر تعریف کرده و به خاطر اینکه میخواد سر 1 ثانیه سرریز کنه مقدار prescal رو گذاشته 1024 یعنی
8000000 تقسیم بر 256(8 بیتی بودن تایمر 0) و جوابش تقسیم بر 1024 میشه 30... یعنی اگر از 30 تا شمارشش بیشتر شد 1 ثانیه شده
Config Timer0 = Timer , Prescale = 1024
'---------------
فعال کرده تایمر 1 و 0 و وقفه کلی میکرو
Enable Timer1
Enable Timer0
Enable Interrupts
'---------------------
ovf0 اگر تایمر 0 خورد بپر به
و اگر تایمر 1 که 16 بیتی است و مقدارش با 65536 پر میشه سرریز کرد انوقت برو به
On Ovf1 Pulse_counter
On Ovf0 Yazdkit
'-------------------
تعریف متغییر ها
Dim A As Long , B As Byte , I As Long
B = 0
'----------------------------
پاک کردن ال سی دی
Cls
'-----------------------
شروع کار تایمر
Start Timer0
'------------
حلقه برنامه
Do
Loop
End 'end program
'--------------
زیر برنامه برای تایمر
یعنی هر بار ی که برش میکنه به این زیر برنامه یکی به i اضافه میکنه تا زمانی که مقدارش بیشتر از 30 شد
انوقت میفهمیم که 1 ثانیه شده و باید مقدار کانتر رو بخونیم...
Yazdkit:
Incr i
اگر مقدار i از 30 تا بیشتر شد انوقت
If I > 30 Then
تایمر خاموش
Stop Timer0
Cls
اگر کانتر مقداری که خونده بود از 65536 بیشتر شده یکی به b در برنامه اضافه میشه و اینجا
د ر 65536 ضرب میشه تعداد باری که سریز کرده و بعد مقدارش ریخته میشه تو ی a
A = B * 65536
مقدار a جمع میشه با کانتر
A = A + Counter1
اینچا متغیر ها صفر میشن
که دقیقا همین جا باید مقادیر رو روی ال سی دی نمایش بدی
B = 0
I = 0
Counter1 = 0
Start Timer0
End If
Return
'----------------------
اینجا همون جاییه که اگر کانتر 1 کا 16 بیتی است و با 65535 پر میشه و با 65536 سرریز میکنه
و یکی به b اضافه میکنه
فرض کن تعدا پالس که خونده در 1 ثانیه 1000000 پاس بود انوقت مقدار b 15 است
Pulse_counter:
Incr B
Counter1 = 0
Return
ابراهیم خوانین زاده
ساعت کار بدن انسان بیشتر وقتها, کمتر از 657.000 ساعت است و بعد از آن از کار می افتد :():کمی فکر کنیم.....
259-734
[/url]
وبلاگ من
وب سایت من
[url=http://www.ebka-intelligent.com/]
آموزش کار با rfm12b,آموزش کامل ای سی ds1307, آموزش اتصال ماژول em18,سنسور رنگ ,سنسور گاز, و ... در وبلاگ من خواهید دید