سلام بر اساتید محترم انجمن
یه برنامه ای به دستم رسیده به این صورت:
ممنون
یه برنامه ای به دستم رسیده به این صورت:
$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 Displays
'-------------------
Dim A As Long , B As Byte , I As Long
B = 0
'----------------------------
Cls
Locate 1 , 1
Lcd "Frequency meter"
Locate 2 , 1
Lcd "avrprojects.info"
Wait 5
Cls
'-----------------------
Start Timer0
'------------
Do
Loop
End 'end program
'--------------
Displays:
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
طبق اطلاعاتی که من دارم برای به دست آوردن فرکانس پالس ورودی به میکرو اول باید با تایمر یک ثانیه دقیق ساخت(احتمالا با کریسال ساعت)بعد تو این یک ثانیه پالس هارو با کانتر شمرد و....ولی در مور این برنام من متوجه نمیشم چی شده.اون قسمت چرا ifگزاشته بعد مگه میشه اینطوری نوشت؟A=A*counter کلا این برنامه جواب میده؟درسته؟کلا اگه ممکنه زیربرنامه های اینتراپت ها رو واسم توضیح بدین.$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 Displays
'-------------------
Dim A As Long , B As Byte , I As Long
B = 0
'----------------------------
Cls
Locate 1 , 1
Lcd "Frequency meter"
Locate 2 , 1
Lcd "avrprojects.info"
Wait 5
Cls
'-----------------------
Start Timer0
'------------
Do
Loop
End 'end program
'--------------
Displays:
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
ممنون
دیدگاه