Programma voor de 8085-interface van de stappenmotor om deze met de klok mee en tegen de klok in te draaien met behulp van 8255:
```
;Initialiseer de stapelaanwijzer op 0FFFH (32767)
LXI SP, 0FFFH
;Definieer constanten voor stappenmotorbesturing:
MOV A,#10;Definieer vertragingswaarde voor stappenmotorbesturing (willekeurig)
MOV B,A;Kopieer de vertragingswaarde naar register B
MOV A,0;Beginrichting definiëren (0 voor rechtsom, 1 voor linksom)
MOV C,A;Kopieerrichting naar register C
;Configureer 8255 I/O-poort:
MVI A,0FFH;Stel alle poortlijnen in als uitvoer (met behulp van PPI-stuurwoord)
MOV M,A; Schrijven naar besturingsregister (P1M)
;Definieer het I/O-poortadres:
MOV A,#10H; Basisadres voor 8255 PPI (8255-5)
MOV M,A;Sla het basisadres op in de geheugenlocatie
;Hoofdlus voor stappenmotorbesturing:
LOOP:;Label dat het begin van de hoofdlus aangeeft
;Stap 1:Draai de motor met de klok mee (richting =0)
MVI A,0;Instelrichting met de klok mee
MOV C,A;Kopieerrichting naar register C
;Genereer een reeks stuursignalen voor de motorrotatie
MVI A,#0B; Stuurwoord om poort B-lijnen P1.1, P1.2, P1.3 in te stellen als uitgangen
MOV M,A;Schrijf naar poort B-controleregister
MVI A,#9BH;Besturingswoord om de motor rechtsom te draaien (P1.1=1, P1.2=0, P1.3=1)
MOV M,A;Schrijf naar poort B-gegevensregister
;Vertraging om de rotatie van de motor te vertragen:
DELAY:;Vertragingssubroutine om de snelheid van de motorrotatie te regelen
DCR B; Verlaag de vertragingswaarde in register B
JZ ENDD;Als de vertragingswaarde nul bereikt, is de vertraging voltooid
MOV A,B;Kopieer de vertragingswaarde van register B naar register A
JMP DELAY;Spring terug naar de DELAY-lus totdat de vertraging voltooid is
ENDD:;Einde van de vertragingssubroutine
;Stap 2:Draai de motor tegen de klok in (richting =1)
MVI A,1;In tegenwijzerzin instellen
MOV C,A;Kopieerrichting naar register C
;Genereer een reeks stuursignalen voor de motorrotatie
MVI A,#0B; Stuurwoord om poort B-lijnen P1.1, P1.2, P1.3 in te stellen als uitgangen
MOV M,A;Schrijf naar poort B-controleregister
MVI A,#6EH;Besturingswoord om de motor linksom te draaien (P1.1=0, P1.2=1, P1.3=1)
MOV M,A;Schrijf naar poort B-gegevensregister
;Vertraging om de rotatie van de motor te vertragen:
DELAY:;Vertraging subroutine
DCR B
JZ ENDD
VERPLAATS A,B
JMP-VERTRAGING
EINDE:
;Herhaal de hoofdlus om de motor continu te laten draaien
JMP-LUS
```
Dit programma gebruikt de 8255 PPI om de draairichting en snelheid van de stappenmotor te regelen. Door de juiste bits in het poort B-dataregister van de 8255 in te stellen en te wissen, genereert het programma de noodzakelijke stuursignalen voor rotatie met de klok mee of tegen de klok in. De vertragingssubroutine zorgt ervoor dat de rotatiesnelheid van de motor wordt geregeld. |