Programme pour l'interfaçage 8085 du moteur pas à pas pour le faire tourner dans le sens des aiguilles d'une montre et dans le sens inverse des aiguilles d'une montre en utilisant 8255 :
```
;Initialiser le pointeur de pile à 0FFFH (32767)
LXI SP, 0FFFH
;Définir les constantes pour le contrôle du moteur pas à pas :
MOV A,#10 ; Définir la valeur du retard pour le contrôle du moteur pas à pas (arbitraire)
MOV B,A ; Copier la valeur du retard dans le registre B
MOV A,0 ; Définir la direction initiale (0 pour le sens des aiguilles d'une montre, 1 pour le sens inverse des aiguilles d'une montre)
MOV C,A ; Copier la direction vers le registre C
;Configurer le port d'E/S 8255 :
MVI A,0FFH ; Définir toutes les lignes de port comme sortie (en utilisant le mot de contrôle PPI)
MOV M,A ; Écrire dans le registre de contrôle (P1M)
;Définir l'adresse du port d'E/S :
MOV A,#10H ; Adresse de base pour 8255 PPI (8255-5)
MOV M,A ; Stocker l'adresse de base dans un emplacement mémoire
;Boucle principale pour le contrôle du moteur pas à pas :
LOOP : ;Étiquette pour représenter le début de la boucle principale
;Étape 1 : Tourner le moteur dans le sens des aiguilles d'une montre (sens =0)
MVI A,0 ; Régler dans le sens des aiguilles d'une montre
MOV C,A ; Copier la direction vers le registre C
; Générer une séquence de signaux de commande pour la rotation du moteur
MVI A,#0B ; Mot de contrôle pour définir les lignes du port B P1.1, P1.2, P1.3 comme sorties
MOV M,A ; Écrire dans le registre de contrôle du port B
MVI A,#9BH ; Mot de contrôle pour faire tourner le moteur dans le sens des aiguilles d'une montre (P1.1=1, P1.2=0, P1.3=1)
MOV M,A ; Écrire dans le registre de données du port B
;Délai pour ralentir la rotation du moteur :
DELAY :;Sous-programme de retard pour contrôler la vitesse de rotation du moteur
DCR B ; Décrémenter la valeur du retard dans le registre B
JZ ENDD ; Si la valeur du délai atteint zéro, le délai est terminé
MOV A,B ; Copier la valeur du retard du registre B vers le registre A.
JMP DELAY ; Revenir à la boucle DELAY jusqu'à ce que le délai soit terminé.
ENDD :; Fin du sous-programme de délai
;Étape 2 : Tourner le moteur dans le sens inverse des aiguilles d'une montre (sens =1)
MVI A,1 ; Régler dans le sens inverse des aiguilles d'une montre
MOV C,A ; Copier la direction vers le registre C
; Générer une séquence de signaux de commande pour la rotation du moteur
MVI A,#0B ; Mot de contrôle pour définir les lignes du port B P1.1, P1.2, P1.3 comme sorties
MOV M,A ; Écrire dans le registre de contrôle du port B
MVI A,#6EH ;Mot de contrôle pour faire tourner le moteur dans le sens inverse des aiguilles d'une montre (P1.1=0, P1.2=1, P1.3=1)
MOV M,A ; Écrire dans le registre de données du port B
;Délai pour ralentir la rotation du moteur :
DELAY :; Sous-programme de retard
DCR B
JZ FIN
MOUVEMENT A, B
RETARD JMP
FIN :
;Répétez la boucle principale pour faire tourner le moteur en continu
BOUCLE JMP
```
Ce programme utilise le 8255 PPI pour contrôler le sens de rotation et la vitesse du moteur pas à pas. En définissant et en effaçant les bits appropriés dans le registre de données du port B du 8255, le programme génère les signaux de contrôle nécessaires pour la rotation dans le sens horaire ou antihoraire. Le sous-programme de retard garantit que la vitesse de rotation du moteur est contrôlée.
|