Ich hab Dir mal ein anders Programm geschrieben,
Damit kann man besser erklären wie das mit der Funktion geht:


Code:
'Function Demo

$regfile = "m32def.dat"                                     ' Art des Prozessors bestimmen
$crystal = 16000000                                         ' Taktfrequenz einstellen
$baud = 9600                                                ' Baudrate für Serielle Schnittstelle


Declare Function Test(byval X As Byte) As Byte

Dim Temp1 As Byte
Dim Temp2 As Byte


Hauptprogramm:

'  Demo 1
'  Mittels Temp1 wird ein Wert übergeben
'  und von der Funktion in Temp2 zurückgegeben

   Temp1 = 7
   Temp2 = 0

   Print "Übergabe = Temp1 (";
   Print Temp1;
   Print ") ";
   Print " - Temp2 (";
   Print Temp2;
   Print ") ";

   Temp2 = Test(temp1)

   Print " /// Berechnet = Temp1 (";
   Print Temp1;
   Print ") ";
   Print " - Temp2 (";
   Print Temp2;
   Print ") ";

   Print

' --- --- --- --- --- --- --- --- --- --- --- ---

'  Demo 2
'  Mittels Temp1 wird ein Wert übergeben
'  und von der Funktion wieder in Temp1 zurückgegeben
'  d.h Die Variable wird direkt verändert

   Temp1 = 7

   Print "Übergabe = Temp1 (";
   Print Temp1;
   Print ") " ;


   Temp1 = Test(temp1)

   Print "Berechnet = Temp1 (";
   Print Temp1;
   Print ")"

   Print




End                                                         'end program

' Hier die Funktion
' =================
Function Test(byval X As Byte) As Byte

   Test = 2 ^ X                                             ' Rückgabe der Berechnung = Funktionsname als Variable

End Function

End