سلام
برنامه زیر برنامه یک فرکانس متر با میکرو در بسکام است
طرز کارشم اینطوریه که با تایمر 0 زمان 1 ثانیه ایجا میشه و کانتر 1 در این زمان تعداد پالسها رو میشماره و فرکانس به دست میاد.
من توی این برنامه یه اشکالی داشتم
متغیر I چی رو نشون میده؟؟؟ وعلت دستور I>30 چیه ؟؟
یه سوال دیگه اینکه زمان 1 ثانیه کجا ایجاد شده ؟
ممنون میشم راهنمایی کنید.
برنامه زیر برنامه یک فرکانس متر با میکرو در بسکام است
طرز کارشم اینطوریه که با تایمر 0 زمان 1 ثانیه ایجا میشه و کانتر 1 در این زمان تعداد پالسها رو میشماره و فرکانس به دست میاد.
من توی این برنامه یه اشکالی داشتم
متغیر I چی رو نشون میده؟؟؟ وعلت دستور I>30 چیه ؟؟
یه سوال دیگه اینکه زمان 1 ثانیه کجا ایجاد شده ؟
$regfile = "m32def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = _
Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
Cursor Off
Config Timer1 = Counter , Edge = Rising
Ddrb.1 = 0
Portb.1 = 1
Config Timer0 = Timer , Prescale = 1024
Enable Timer1
Enable Timer0
Enable Interrupts
On Ovf1 Pulse_counter
On Ovf0 Yazdkit
Dim A As Long , B As Byte , I As Long
B = 0
Start Timer0
Do
Loop
End
Yazdkit:
Incr I
If I > 30 Then
Stop Timer0
Cls
Home
A = B * 65536
A = A + Counter1
Lcd "frequency:"
Locate 2 , 1
Lcd A ; " HZ"
B = 0
I = 0
Counter1 = 0
Start Timer0
End If
Return
Pulse_counter:
Incr B
Counter1 = 0
Return
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = _
Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
Cursor Off
Config Timer1 = Counter , Edge = Rising
Ddrb.1 = 0
Portb.1 = 1
Config Timer0 = Timer , Prescale = 1024
Enable Timer1
Enable Timer0
Enable Interrupts
On Ovf1 Pulse_counter
On Ovf0 Yazdkit
Dim A As Long , B As Byte , I As Long
B = 0
Start Timer0
Do
Loop
End
Yazdkit:
Incr I
If I > 30 Then
Stop Timer0
Cls
Home
A = B * 65536
A = A + Counter1
Lcd "frequency:"
Locate 2 , 1
Lcd A ; " HZ"
B = 0
I = 0
Counter1 = 0
Start Timer0
End If
Return
Pulse_counter:
Incr B
Counter1 = 0
Return
ممنون میشم راهنمایی کنید.