Programe para interface 8085 do motor de passo para girá-lo no sentido horário e anti-horário usando 8255: ```
;Inicializa o ponteiro da pilha em 0FFFH (32767)
LXI SP, 0FFFH
;Definir constantes para controle de motor de passo:
MOV A,#10;Definir valor de atraso para controle de motor de passo (arbitrário)
MOV B,A;Copia o valor do atraso para o registrador B
MOV A,0;Define a direção inicial (0 para sentido horário, 1 para anti-horário)
MOV C,A;Copia a direção para o registrador C
;Configurar porta de E/S 8255:
MVI A,0FFH;Configura todas as linhas de porta como saída (usando palavra de controle PPI)
MOV M,A;Escrever no registro de controle (P1M)
;Defina o endereço da porta de E/S:
MOV A,#10H;Endereço base para 8255 PPI (8255-5)
MOV M,A; Armazena o endereço base no local da memória
;Loop principal para controle do motor de passo:
LOOP:;Rótulo para representar o início do loop principal
;Etapa 1:Gire o motor no sentido horário (direção =0)
MVI A,0;Definir sentido horário
MOV C,A;Copia a direção para o registrador C
;Gerar sequência de sinais de controle para rotação do motor
MVI A,#0B;Palavra de controle para definir as linhas P1.1, P1.2, P1.3 da Porta B como saídas
MOV M,A;Escreve no registrador de controle da Porta B
MVI A,#9BH;Palavra de controle para girar o motor no sentido horário (P1.1=1, P1.2=0, P1.3=1)
MOV M,A;Escrever no registro de dados da Porta B
;Atraso para desacelerar a rotação do motor:
ATRASO:;Subrotina de atraso para controlar a velocidade de rotação do motor
DCR B;Decrementa o valor do atraso no registro B
JZ ENDD;Se o valor do atraso chegar a zero, o atraso está completo
MOV A,B;Copia o valor do atraso do registro B para o registro A
JMP DELAY;Volta para o loop DELAY até que o atraso seja concluído
ENDD:;Fim da sub-rotina de atraso
;Etapa 2:Gire o motor no sentido anti-horário (direção =1)
MVI A,1;Definir sentido anti-horário
MOV C,A;Copia a direção para o registrador C
;Gerar sequência de sinais de controle para rotação do motor
MVI A,#0B;Palavra de controle para definir as linhas P1.1, P1.2, P1.3 da Porta B como saídas
MOV M,A;Escreve no registrador de controle da Porta B
MVI A,#6EH;Palavra de controle para girar o motor no sentido anti-horário (P1.1=0, P1.2=1, P1.3=1)
MOV M,A;Escrever no registro de dados da Porta B
;Atraso para desacelerar a rotação do motor:
DELAY:;Atrasar sub-rotina
RDC B
JZ FIM
MOV A,B
ATRASO JMP
FIM:
;Repita o loop principal para girar continuamente o motor
LOOP JMP
```
Este programa usa o 8255 PPI para controlar o sentido de rotação e a velocidade do motor de passo. Ao definir e limpar os bits apropriados no registro de dados da Porta B do 8255, o programa gera os sinais de controle necessários para rotação no sentido horário ou anti-horário. A subrotina de atraso garante que a velocidade de rotação do motor seja controlada.