Wie wäre es die Sache mit dem Schrittmotor zeitunkritisch in Assembler zu programmieren? Dann hat der Rest genug Zeit um sich um die Sensorik zu kümmern. Um einen Motor drehen zu lassen reicht es völlig einen 16-Bit Integerwert zu nehmen und die Bits 0 und 1 auszumaskieren und diese beiden Bits auf 4 Ports aufzulösen. Damit hat man als Wort die Ist-Position die man vergleichen kann per CC-Basic um die Drehrichtung zu bestimmen in die er drehen muss. Bei jedem Schritt positiv plus 1 zählen und bei jeden Schritt negativ eben -1 zählen in der Ist-Wert Variablen. Der Rest ergibt sich dann von alleine. Wenn das alles in Assembler geschrieben ist kann man das sogar als Interrupt programmieren und den Interrupt extern takten durch einen NE555, mit dem man dann einfach die Routinenaufrufe steuern kann. Den Interrupt kann man ins Assembler-Programm verbiegen und spart sich den Sys-Aufruf im CC-Basic was Zeit spart für die Routine.