Hallo,
Ich habe ihr ein Assemblercode zur Ansteuerung von Servosfür eine C-Control main unit.
Der Code ist weder von mir geschrieben noch Compeliert.
Ich möchte das Programm jedoch mit einer höheren Frequenz betreiben und den Zeitbereich anpassen. Ich verwende den compiler von Workbench in dem Code einige fehler erkennt. Die Anpassungen kann ich machen, jedoch kann ich die Fehler nicht korrigieren.
Bitte seht euch den Code mal an. Ich freue mich auf jede Hilfe.
Der Fehler liegt vor allem in der Warteschleife.
Ich habe die Fehlermeldungen in den Code Geschrieben.
Code:;--------------------------------------- ; Servo-Steuerung an port 1 ; ; Title: Setzen eines Servos ; ; Parameter: ; mask, Adresse $0A1, Bitmaske des Servos ; pos , Adresse $0A2, Zielposition des Servos 127=Mitte ; ; Beschreibung: ; Es wird ein Setzimpuls an den Servo an Port B gesendet. ; Die Bitmaske bezeichnet den Servo, der gesteuert werden ; soll. Es können auch mehrere Servos synchron gesteuert ; werden. ; ; Diese Routine sollte pro Positionierung 20 mal ; aufgerufen werden. ; ; Copyright Mario Boller-Olfert 2000 portb .equ 1 ;Daten Port B dirb .equ 5 ;Datenrichtung Port B .org $101 ;--- setzen der Bits entsprechend der mask lda $0A1 ; dirb = dirb OR mask ora dirb sta dirb sei ;abschalten interrupts wg. zeitkritischer verarbeitung lda $0A1 ; portb = portb OR mask ora portb sta portb ;--- warten entsprechend der Pulslaenge lda #$FF ;1 ms warten jsr wart lda $0A2 ;warten entsprechend der Position jsr wart ;--- ruecksetzen der Bits entsprechend Servo lda $0A1 ; portb = portb AND NOT mask coma ;[Fehler](44): Unbekannter Befehl.(1) and portb sta portb cli rts ;--- warteschleife wart beq ret ;[Fehler](51): ungültige Anzahl der Parameter.(2) ;Abfangen der Pulslaenge 0 looph nop ;[Fehler](52): Unbekannter Befehl.(1) ;eigentliche Warteschleife deca bne looph ret rts .end







Zitieren

Lesezeichen