'------------------------------------------------------------------- ' TIM1.BAS Dzehzahlmesser mit 90S8515 ' Messung der Impulszeiten mit T1 '------------------------------------------------------------------- $regfile = "8515def.dat" $crystal = 4000000 ' 4 MHz Takt Config Pinb.3 = Input Dim Impulse As Byte Dim V As Long Dim W As Long Dim W1 As Long Dim W2 As Long Dim W3 As Long Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , Rs = Portc.3 , E = Portc.1 Config Lcd = 16 * 2 On Ovf1 Ontvf1 On Icp1 Oncapture Enable Icp1 Enable Ovf1 Enable Interrupts Main: V = 0 W3 = 0 Impulse = 0 Cls Cursor Off Lcd "Drehzahl" Locate 2 , 1 Lcd V Lcd " UpM " Tcnt1l = 0 ' Loesche Timer1 Tcnt1h = 0 Do Loop End Oncapture: Disable Icp1 Disable Ovf1 W3 = Timer1 Timer1 = 0 W2 = W2 + W3 Incr Impulse If Impulse = 10 Then ' 10 Impulse Zaehlen damit ruhiger Zaehler W1 = W2 * 3200 ' Taktzeit bei Presc. 256 + 8,0 MHz ' wg. der t 32 us W = W1 / 100 ' Dann das ganze durch 100 Teilen ' 1 / W2 * 60 wird ersetzt durch ' ' 600000000 erspart das malnehmen mit 6 V = 600000000 / W Locate 2 , 1 Lcd V Lcd " UpM " W = 0 W2 = 0 W3 = 0 V = 0 Impulse = 0 Else End If Enable Icp1 Enable Ovf1 Return Ontvf1: Disable Icp1 Disable Ovf1 V = 0 Locate 2 , 1 Lcd V Lcd " UpM " W = 0 W2 = 0 V = 0 Enable Icp1 Enable Ovf1 Timer1 = 0 Return