Programm für die 8085-Schnittstelle eines Schrittmotors, um ihn mit 8255 im und gegen den Uhrzeigersinn zu drehen:
„
;Stackzeiger bei 0FFFH initialisieren (32767)
LXI SP, 0FFFH
;Konstanten für Schrittmotorsteuerung definieren:
MOV A,#10;Verzögerungswert für Schrittmotorsteuerung definieren (willkürlich)
MOV B,A;Verzögerungswert in Register B kopieren
MOV A,0;Anfangsrichtung definieren (0 für im Uhrzeigersinn, 1 für gegen den Uhrzeigersinn)
MOV C,A;Richtung in Register C kopieren
;8255 I/O-Port konfigurieren:
MVI A,0FFH;Alle Portleitungen als Ausgang festlegen (mittels PPI-Steuerwort)
MOV M,A;In Steuerregister schreiben (P1M)
;I/O-Port-Adresse definieren:
MOV A,#10H;Basisadresse für 8255 PPI (8255-5)
MOV M,A;Basisadresse im Speicherort speichern
;Hauptschleife zur Schrittmotorsteuerung:
LOOP:;Beschriftung zur Darstellung des Beginns der Hauptschleife
;Schritt 1:Den Motor im Uhrzeigersinn drehen (Richtung =0)
MVI A,0;Im Uhrzeigersinn einstellen
MOV C,A;Richtung in Register C kopieren
;Erzeugen Sie eine Folge von Steuersignalen für die Motordrehung
MVI A,#0B;Steuerwort zum Festlegen der Port-B-Leitungen P1.1, P1.2, P1.3 als Ausgänge
MOV M,A;In das Steuerregister von Port B schreiben
MVI A,#9BH;Steuerwort zum Drehen des Motors im Uhrzeigersinn (P1.1=1, P1.2=0, P1.3=1)
MOV M,A;In das Datenregister von Port B schreiben
;Verzögerung zum Verlangsamen der Motordrehung:
DELAY:;Verzögerungsunterprogramm zur Steuerung der Motordrehgeschwindigkeit
DCR B;Verzögerungswert im Register B verringern
JZ ENDD;Wenn der Verzögerungswert Null erreicht, ist die Verzögerung abgeschlossen
MOV A,B;Kopieren Sie den Verzögerungswert von Register B nach Register A
JMP DELAY;Zurück zur DELAY-Schleife springen, bis die Verzögerung abgeschlossen ist
ENDD:;Ende des Verzögerungsunterprogramms
;Schritt 2:Drehen Sie den Motor gegen den Uhrzeigersinn (Richtung =1)
MVI A,1;Linksrichtung einstellen
MOV C,A;Richtung in Register C kopieren
;Erzeugen Sie eine Folge von Steuersignalen für die Motordrehung
MVI A,#0B;Steuerwort zum Festlegen der Port-B-Leitungen P1.1, P1.2, P1.3 als Ausgänge
MOV M,A;In das Steuerregister von Port B schreiben
MVI A,#6EH;Steuerwort zum Drehen des Motors gegen den Uhrzeigersinn (P1.1=0, P1.2=1, P1.3=1)
MOV M,A;In das Datenregister von Port B schreiben
;Verzögerung zum Verlangsamen der Motordrehung:
DELAY:;Unterprogramm verzögern
DCR B
JZ ENDE
MOV A,B
JMP-VERZÖGERUNG
ENDE:
;Wiederholen Sie die Hauptschleife, um den Motor kontinuierlich zu drehen
JMP-SCHLEIFE
„
Dieses Programm verwendet den 8255 PPI, um die Drehrichtung und Geschwindigkeit des Schrittmotors zu steuern. Durch Setzen und Löschen der entsprechenden Bits im Port B-Datenregister des 8255 generiert das Programm die notwendigen Steuersignale für die Drehung im oder gegen den Uhrzeigersinn. Das Verzögerungsunterprogramm sorgt dafür, dass die Motordrehzahl gesteuert wird.