Naja, wenn man in der Function den adc nicht startet, ist nix mit Werte auslesen

Zweiter Fehler war, dass ich den kompletten portA auf Output gesetzt habe, jetzt läuft es.

Der Vollständigkeit halber hier der richtige Code.
Habe das Ganze ein wenig umgebaut, jetzt finde ich es eleganter gelöst als oben

Code:
Declare Function Readbuttons() As Byte

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000

Config Adc = Single , Prescaler = Auto                      'für Tastenabfrage
Config Pina.7 = Input                                       'für Tastenabfrage
Porta.7 = 1

Config Porta.0 = Output                                     'für Servo
Config Servos = 1 , Servo1 = Porta.0 , Reload = 10          'für Servo
Config Portc = Output                                       'für LEDs

Enable Interrupts

Dim Button As Byte
Dim Servopos As Byte
Dim Led As Byte
Led = 1
Servopos = 95

Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1

'*******************Main function**************************
Do
   Servo(1) = Servopos
   If Led = 0 Then
      Portc.0 = 0
      Portc.1 = 1
      Portc.2 = 1
   Elseif Led = 1 Then
      Portc.0 = 1
      Portc.1 = 0
      Portc.2 = 1
   Elseif Led = 2 Then
      Portc.0 = 1
      Portc.1 = 1
      Portc.2 = 0
   End If


   Button = Readbuttons()

   If Button <> 0 Then
      Select Case Button
         Case 1
            Servopos = 45
            Led = 2
            Print "Servo rechts"
         Case 2
            Servopos = 95
            Led = 1
            Print "Servo mittig"
         Case 3
            Servopos = 145
            Led = 0
            Print "Servo links"
      End Select
   End If
   Waitms 100
Loop
End

'**********************Functions***********************************

Function Readbuttons() As Byte
Local Ws As Word
   Readbuttons = 0
   Start Adc
   Ws = Getadc(7)
   'Print "ws= " ; Ws
   If Ws < 1010 Then
      Select Case Ws
         Case 400 To 455
            Readbuttons = 1

         Case 335 To 380
            Readbuttons = 2

         Case 250 To 305
            Readbuttons = 3
      End Select
   End If
End Function