Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> Computer Programming Languages >> .

Qual è il programma in linguaggio assembly per l'interfacciamento 8085 del motore passo-passo per ruotarlo in senso orario e antiorario utilizzando 8255?

Programma per l'interfacciamento 8085 del motore passo-passo per ruotarlo in senso orario e antiorario utilizzando 8255:

```

;Inizializza il puntatore dello stack su 0FFFH (32767)

LXI SP, 0FFFH

;Definizione delle costanti per il controllo del motore passo-passo:

MOV A,#10;Definire il valore di ritardo per il controllo del motore passo-passo (arbitrario)

MOV B,A;Copia il valore del ritardo nel registro B

MOV A,0;Definisce la direzione iniziale (0 per orario, 1 per antiorario)

MOV C,A;Copia la direzione nel registro C

;Configurare la porta I/O 8255:

MVI A,0FFH;Imposta tutte le linee della porta come uscita (utilizzando la parola di controllo PPI)

MOV M,A;Scrivi nel registro di controllo (P1M)

;Definire l'indirizzo della porta I/O:

MOV A,#10H;Indirizzo base per 8255 PPI (8255-5)

MOV M,A;Memorizza l'indirizzo di base nella posizione di memoria

;Loop principale per il controllo del motore passo-passo:

LOOP:;Etichetta per rappresentare l'inizio del loop principale

;Passo 1:ruotare il motore in senso orario (direzione =0)

MVI A,0;Imposta la direzione oraria

MOV C,A;Copia la direzione nel registro C

;Genera sequenza di segnali di controllo per la rotazione del motore

MVI A,#0B;Parola di controllo per impostare le linee P1.1, P1.2, P1.3 della porta B come uscite

MOV M,A;Scrive nel registro di controllo della porta B

MVI A,#9BH;Parola di controllo per ruotare il motore in senso orario (P1.1=1, P1.2=0, P1.3=1)

MOV M,A;Scrive nel registro dati della porta B

;Ritardo per rallentare la rotazione del motore:

DELAY:;Subroutine di ritardo per controllare la velocità di rotazione del motore

DCR B;Decrementa il valore del ritardo nel registro B

JZ ENDD;Se il valore del ritardo raggiunge lo zero, il ritardo è completo

MOV A,B;Copia il valore del ritardo dal registro B al registro A

JMP DELAY;Torna al ciclo DELAY fino al completamento del ritardo

ENDD:;Fine della subroutine di ritardo

;Passo 2:ruotare il motore in senso antiorario (direzione =1)

MVI A,1;Imposta la direzione antioraria

MOV C,A;Copia la direzione nel registro C

;Genera sequenza di segnali di controllo per la rotazione del motore

MVI A,#0B;Parola di controllo per impostare le linee P1.1, P1.2, P1.3 della porta B come uscite

MOV M,A;Scrive nel registro di controllo della porta B

MVI A,#6EH;Parola di controllo per ruotare il motore in senso antiorario (P1.1=0, P1.2=1, P1.3=1)

MOV M,A;Scrive nel registro dati della porta B

;Ritardo per rallentare la rotazione del motore:

DELAY:;Subroutine di ritardo

DCR B

JZ FINE

MOV A, B

RITARDO JMP

FINE:

;Ripetere il ciclo principale per ruotare continuamente il motore

CICLO JMP

```

Questo programma utilizza l'8255 PPI per controllare la direzione di rotazione e la velocità del motore passo-passo. Impostando e cancellando i bit appropriati nel registro dati della porta B dell'8255, il programma genera i segnali di controllo necessari per la rotazione in senso orario o antiorario. La subroutine di ritardo garantisce il controllo della velocità di rotazione del motore.

 

Programmazione © www.354353.com