Program for 8085-grensesnitt for trinnmotor for å rotere den med klokken og mot klokken ved hjelp av 8255:
```
;Initialiser stabelpekeren på 0FFFH (32767)
LXI SP, 0FFFH
;Definer konstanter for trinnmotorkontroll:
MOV A,#10;Definer forsinkelsesverdi for trinnmotorstyring (vilkårlig)
MOV B,A;Kopier forsinkelsesverdi til register B
MOV A,0;Definer startretning (0 for med klokken, 1 for mot klokken)
MOV C,A;Kopier retning til register C
;Konfigurer 8255 I/O-port:
MVI A,0FFH;Sett alle portlinjer som utgang (ved hjelp av PPI-kontrollord)
MOV M,A;Skriv til kontrollregister (P1M)
;Definer I/O-portadresse:
MOV A,#10H;Basisadresse for 8255 PPI (8255-5)
MOV M,A;Lagre baseadresse i minneplassering
;Hovedsløyfe for trinnmotorkontroll:
LOOP:;Etikett for å representere starten på hovedsløyfen
;Trinn 1:Roter motoren med klokken (retning =0)
MVI A,0;Sett med klokken
MOV C,A;Kopier retning til register C
;Generer sekvens av styresignaler for motorrotasjon
MVI A,#0B;Kontrollord for å sette port B-linjer P1.1, P1.2, P1.3 som utganger
MOV M,A;Skriv til port B kontrollregister
MVI A,#9BH;Kontrollord for å rotere motoren med klokken (P1.1=1, P1.2=0, P1.3=1)
MOV M,A;Skriv til port B dataregister
;Forsinkelse for å bremse motorrotasjonen:
FORSINKELSE:;Underrutine for forsinkelse for å kontrollere hastigheten på motorrotasjonen
DCR B; Reduser forsinkelsesverdien i register B
JZ ENDD;Hvis forsinkelsesverdien når null, er forsinkelsen fullført
MOV A,B;Kopier forsinkelsesverdien fra register B til register A
JMP DELAY;Hopp tilbake til DELAY loop til forsinkelsen er fullført
ENDD:;Slutt på forsinkelsessubrutine
;Trinn 2:Roter motoren mot klokken (retning =1)
MVI A,1;Sett mot klokken
MOV C,A;Kopier retning til register C
;Generer sekvens av styresignaler for motorrotasjon
MVI A,#0B;Kontrollord for å sette port B-linjer P1.1, P1.2, P1.3 som utganger
MOV M,A;Skriv til port B kontrollregister
MVI A,#6EH;Kontrollord for å rotere motoren mot klokken (P1.1=0, P1.2=1, P1.3=1)
MOV M,A;Skriv til port B dataregister
;Forsinkelse for å bremse motorrotasjonen:
FORSINKELSE:;Forsinket subrutine
DCR B
JZ ENDD
MOV A,B
JMP FORSINKELSE
ENDD:
;Gjenta hovedsløyfen for å rotere motoren kontinuerlig
JMP LOOP
```
Dette programmet bruker 8255 PPI til å kontrollere trinnmotorens rotasjonsretning og hastighet. Ved å sette og slette de riktige bitene i 8255s Port B-dataregister, genererer programmet de nødvendige kontrollsignalene for rotasjon med eller mot klokken. Forsinkelsessubrutinen sikrer at motorrotasjonshastigheten kontrolleres.