Hi !
Zum projekt : ich möchte die laufzeit des von einem beeper ausgegeben schalls zum micro messen. Daraus liese sich dann leicht über die schallgeschwindigkeit die enfernung errechnen.

dazu habe ich hier mal ein programm geschrieben:

Code:
$regfile = "m32def.dat"                                    
$crystal = 16000000                                      
$baud = 9600

Dim X As Integer
Dim Ti As Word
Dim Xsave As Integer
Dim Erg As Long
Dim Zwierg As Long


Config Pind.7 = Output
Config Lcdbus = 4                                           
Config Lcdpin = Pin , Db4 = Pinc.7 , Db5 = Pina.5 , Db6 = Pina.6 , Db7 = Pina.4 , E = Pinc.6 , Rs = Pinc.5

Config Lcd = 16 * 4

Config Timer1 = Timer , Prescale = 1

Config Adc = Single , Prescaler = Auto
Start Adc


On Timer0 Tim1_isr

Enable Timer1                                                    
Enable Interrupts
Sound portd.7 , 200 , 450

Do
   If Getadc(2) > 614 Then
      Ti = Timer0
      Xsave = X
      Exit Do
   End If
Loop

Sound Portd.7 , 2000 , 1000

Erg = Ti * 63
Zwierg=   Xsave * 65536
Erg = Erg + Zwierg
Cls
Lcd "berechnung:"
Lowerline
Lcd Erg ; " // " ; Ti

Tim1_isr:

X = X + 1

Return

End
Allerdings funktioniert das noch nicht so ganz... Erg und Ti sind irgendwie immer null. und das programm endet nie, so wie es eigentlich sollte... Könnte das daran liegen, das der Timer weiterhin fleisig überleuft und interrupts produziert ? und dann natürlich wieder zurück in die Schleife springt ?

Würde mich interessieren, was ihr dazu sagt ! (sonst hätte ichs auch net hier rein gestellt ^^)

mfg Javik