Witam! Mam napisac program do mierzenia czestotliwosci w Bascomie, a potem zasymulowaæ to w Proteusie. Narazie poprawnie podaje mi czestotliwosc, ale tylko dla jednego impulsu, przy za³o¿eniu ¿e wype³nienie to 50%. Niestety je¶li pod³±czê zegar, to g³upieje. Pisze na AT89c52. Sygna³ zegara pod³±czany do ~INT0. Je¶li kto¶ wie, napiszcie co jest nie tak.
Pozdrawiam, Teres
Tutaj jest schemat do Proteusa
'LCD CONFIGURATION Config Lcdpin = Pin , Db4 = P0.2 , Db5 = P0.3 , Db6 = P0.4 , Db7 = P0.5 , E = P0.1 , Rs = P0.0
$crystal = 1200000 '1,2Mhz Config Lcd = 16 * 4 Enable Interrupts 'wlaczenie przerwan Enable Int0 Set Tcon.0 'reaguje na zobcze Config Timer0 = Timer , Gate = External , Mode = 1 'ustawienie licznika
'reaguje na podanie sygnalu na int0 Dim Tmp As Integer , Wynik As String * 9 , Tmp2 As Long , Tmp3 As Long Set Tcon.4 Lcd "test" 'wlacza TR0 On Int0 Wypisz 'procedura obslugi przerwania
Cls Home Tmp3 = 0 Lcd "Witaj" Do 'nieskoñczona pêtla konca programu Loop
End
Wypisz: Reset Tcon.4
Tmp = Tl0 Tmp2 = Th0 Tl0 = 0 Th0 = 0
Shift Tmp2 , Left , 8 'przesuwamy o
8 miejsc starsza czesc licznika Tmp3 = Tmp + Tmp2 Tmp3 = Tmp3 * 2 'wypelnienie
50%
Cls Tmp3 = Tmp3 Tmp3 = 100000 / Tmp3 Lcd "czestotliwosc=" Lowerline Lcd Tmp3 ; " Hz" Tl0 = 0 Th0 = 0 Waitms 5000 Disable Int0 Enable Int0 Return Return