Hallo!
Ich hab da ein kleines Problem mit einer Function. Ich möchte, je nach dem was über die SPI-Schnittstelle angekommen ist, einen ADC auslesen.
Da ich 3 Werte des ADC auslesen möchte und einen Mittelwert daraus berechnen will, hab ich mir gedacht das ich dafür eine Funktion benutze (hab ich bisher noch nie gemacht).
In der Simulation klappt das aber nicht so recht, hier mal ein paar Code-Fetzen:

Code:
Declare Function Adcx(byval Adcnummer As Byte) As Byte
.
.
Adcsr = &B10000101 'ADC konfigurieren
.
.
Select Case A 'Je nachdem was über SPI gekommen ist...
   Case 0 : C = Adcx(32) 
   Case 1 : C = Adcx(&B00100001)
End Select
.
.
Function Adcx(byval Adcnummer As Byte) As Byte

Local B0 As Byte , B1 As Byte , B2 As Byte , B3 As Byte , B4 As Byte
Local X0 As Byte

   Admux = Adcnummer
   X0 = 0

   For B4 = 0 To 2

   Adcsr.adsc = 1

   While Adcsr.adif = 0
   Wend

   Select Case B4
      Case 0 : B1 = Adch
      Case 1 : B2 = Adch
      Case 2 : B3 = Adch
   End Select

   Next

   B0 = B1 + B2
   B0 = B0 + B3
   B0 = B0 / 3

   Adcx = B0


End Function
Laut dem Simulator von Bascom wird anstatt der Zahl "32" nur "186" übergeben, und das Bit im Register Adcsr.adsc (also ADC Starten) wird auch nicht gesetzt.
In folge dessen kommt das Programm auch nicht mehr aus der While...Wend Schleife (wenn der ADC nicht läuft kann das Flat Adif auch nicht gesetzt werden).
Kann ich überhaupt Zahlen in eine Function übergeben und dort Register ändern?

MfG
Basti