Wie gewünscht der Vollständige code alles funkt nur wie oben schon gesagt nicht die 500 Schritt funktion
Code:
Declare Function Tastenabfrage() As Byte
Declare Sub Aendereslaveid()

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

Const Befehl_maxstrom = 1
Const Befehl_endlos_drehen = 6
Const Befehl_ausschalten = 9
Const Befehl_einschalten = 10

Const Motor_links = 0
Const Motor_rechts = 1
Const Motor_beide = 2
Const Motor_links_schritt = 0
Const I2crnmotorslaveadr = &H56                             'I2C SlaveAdresse von RN-Motor Erweiterung
Const I2crnmotorsreadlaveadr = &H57                         'I2C SlaveAdresse von RN-Motor Erweiterung

Dim I2cdaten(6) As Byte                                     'Array um Befehlsfolge auszunehmen
Dim I2cdaten_rechts(6) As Byte
Dim Ton As Integer
Dim Schritt As Integer
Schritt = 0

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1
I2cinit

Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input                                       'Für Tastenabfrage
Porta.7 = 1                                                 'Pullup Widerstand ein
Dim Taste As Byte
Print
Print "**** RN-Motor Test"
Print "Schrittmotorn Test Simple"
Print
Do
   Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
            'Motorstrom auf 200mA begrenzen
            I2cdaten(1) = 10                                'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten(2) = Befehl_maxstrom                   'Befehlscode
            I2cdaten(3) = Motor_links                       '1 Parameter
            I2cdaten(4) = 500 / 10                          '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt)
            I2csend I2crnmotorslaveadr , I2cdaten(1) , 5    'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
            Print "Links Rennt"
            I2cstop

            I2cdaten_rechts(1) = 10                         'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten_rechts(2) = Befehl_maxstrom            'Befehlscode
            I2cdaten_rechts(3) = Motor_rechts               '1 Parameter
            I2cdaten_rechts(4) = 500 / 10                   '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt)
            I2csend I2crnmotorslaveadr , I2cdaten_rechts(1) , 5       'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
            Print "Rechts Rennt"
            I2cstop

            I2cdaten(1) = 10                                'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten(2) = Befehl_einschalten                'Befehlscode
            I2cdaten(3) = Motor_beide                       '1 Parameter
            I2csend I2crnmotorslaveadr , I2cdaten(1) , 5    'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)

         Case 2


            I2cdaten(1) = 10                                'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten(2) = Befehl_endlos_drehen              'Befehlscode
            I2cdaten(3) = Motor_beide                       '1 Parameter
            I2csend I2crnmotorslaveadr , I2cdaten(1) , 5    'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
         Case 3

            I2cdaten(1) = 10                                'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten(2) = Befehl_endlos_drehen              'Befehlscode
            I2cdaten(3) = Motor_rechts                      '1 Parameter

            I2csend I2crnmotorslaveadr , I2cdaten(1) , 5    'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)

         Case 4
                  Do

                  I2cdaten(1) = 10                          'Kennung muss bei RN-Motor immer 10 sein
                  I2cdaten(2) = 7                           'Befehlscode
                  I2cdaten(3) = 0                           '1 Parameter
                  I2csend &H56 , I2cdaten(1) , 5            'Befehl wird gesendet
            Incr Schritt
            Loop Until Schritt = 5
            Wait 1



         Case 5
            I2cdaten(1) = 10                                'Kennung muss bei RN-Motor immer 10 sein
            I2cdaten(2) = Befehl_ausschalten                'Befehlscode
            I2cdaten(3) = Motor_beide                       '1 Parameter
            I2csend I2crnmotorslaveadr , I2cdaten(1) , 5    'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
            I2cstop
            Print "Motoren aus....."

          End Select
   End If

   Waitms 100
Loop




Function Tastenabfrage() As Byte
Local Ws As Word


   Tastenabfrage = 0
   Start Adc
   Ws = Getadc(7)
   If Ws < 1010 Then
      Select Case Ws
         Case 400 To 455
            Tastenabfrage = 1
         Case 335 To 380
            Tastenabfrage = 2
         Case 250 To 305
            Tastenabfrage = 3
         Case 180 To 220
            Tastenabfrage = 4
         Case 100 To 130
            Tastenabfrage = 5
      End Select
   End If

End Function
End