moin!


für einen servocontroller brauch ich kommazahlen (um nicht nur die maximalpositionen bei einer pulslänge von 1 oder 2 anfahren zu können). das doofe ist, dass mein basic-compiler nur ganze zahlen bei einer wait-operation zulässt. ich hatte das so vor:

Code:
         define var pls as byte   'variable für die pulslänge
         low rb.0
         let pls = 1
pulse:
         wait 20
         high rb.0
         wait pls
         low rb.0               'einmal 20 ms low und dann high für pulslänge
         if rb.1 = high then goto increase  'wenn taste an rb.1 gedrückt
         goto pulse

increase:
         let pls = pls + 0.1       'zu pls 0,1 addieren
         if pls > 2 then pls = 1      'pls nicht zu groß werden lassen
         wait 500             'kurze pause
         goto pulse
das prog soll bei tastendruck den servo ein stück weiterfahren und bei endposition wieder an die anfangsposition gehen.
der compiler macht allerdings aus dem "+0,1" "+1", wodurch mein servo bei tastendruck die jeweils andere endposition (1 oder 2) anfährt.
jetzt hab ich mir überlegt, ich könnte das ganze in assembler vielleicht beheben, so dass ich den assembler-code direkt bearbeite und da eintrage, dass er nicht 1 sondern 0,1 dazuaddieren soll. der assembler-code den der compiler erstellt sieht an der stelle so aus:

Code:
;ø~ø00039         let pls = pls + 0.1     'addiere 0,1ms zu pls
          movf      64,w
          movwf     16
          movf      64+1,w
          movwf     ARG0+1
          movlw     1
          movwf     18
          clrf      ARG1+1
          call      $$ADD16
          movf      16,w
          movwf     64
          movf      ERG+1,w
          movwf     64+1
          clrwdt    
;ø~ø00040                 'fertig
das was hinter den kryptischen zeichen (zeilennummern vermute ich) steht, ist er basiccode, direkt drunter dann der assembler

nun hab ich von assembler wenig ahnung und wollte mal die freaks hier fragen, was ich verändern muss.... hoffe ihr werdet schlau aus dem problem!