سلام.
من برای ساخت مداری نیاز دارم هر یک میلی ثانیه یه کاری انجام بدم و این زمان خیلی خیلی حساسه.
من خودم اومدم با تایمر 1 با Prescale = 8 و مقدار اولیه Timer1 = 64535 و یه کریستال خارجی 8 مگاهرتز اینکارو کردم. اما زمان دقیق نیست.
کسی میتونه راهنمایی کنه و مشکل برنامه منو بگه؟
تو برنامه زیر هر 1 ثانیه متغیر s یه مقدار زیاد میشه که باهاش ثانیه رو نشون میدم تا بتونم دقت برنامه رو اندازه بگیرم.
این برناممه
$regfile = "m32def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , _
Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2
Cls
Config Timer1 = Timer , Prescale = 8
Enable Timer1
Enable Ovf1
On Ovf1 Ovfroutin
Timer1 = 64535
Stop Timer1
Dim W As Long
Dim S As Byte
Enable Interrupts
Start Timer1
Do
Loop
End
Ovfroutin:
Timer1 = 64535
Incr W
If W = 1000 Then
W = 0
Incr S
If S => 60 Then S = 0
Home : Lcd S ; " "
End If
Return
ممنون.
من برای ساخت مداری نیاز دارم هر یک میلی ثانیه یه کاری انجام بدم و این زمان خیلی خیلی حساسه.
من خودم اومدم با تایمر 1 با Prescale = 8 و مقدار اولیه Timer1 = 64535 و یه کریستال خارجی 8 مگاهرتز اینکارو کردم. اما زمان دقیق نیست.
کسی میتونه راهنمایی کنه و مشکل برنامه منو بگه؟
تو برنامه زیر هر 1 ثانیه متغیر s یه مقدار زیاد میشه که باهاش ثانیه رو نشون میدم تا بتونم دقت برنامه رو اندازه بگیرم.
این برناممه
$regfile = "m32def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , _
Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2
Cls
Config Timer1 = Timer , Prescale = 8
Enable Timer1
Enable Ovf1
On Ovf1 Ovfroutin
Timer1 = 64535
Stop Timer1
Dim W As Long
Dim S As Byte
Enable Interrupts
Start Timer1
Do
Loop
End
Ovfroutin:
Timer1 = 64535
Incr W
If W = 1000 Then
W = 0
Incr S
If S => 60 Then S = 0
Home : Lcd S ; " "
End If
Return
ممنون.
دیدگاه