Programme complet annoté
; ============================================
; Interface relais pour microprocesseur 8085
; Active relais 5 secondes, puis désactive
; ============================================
; --- Équates ---
RELAY_PORT EQU 08H ; Adresse port sortie
DELAY_COUNT EQU 05H ; 5 boucles secondes (externe)
; --- Programme principal ---
ORG 1000H ; Adresse début typique
START: MVI A, 00H ; Vider accumulateur
OUT RELAY_PORT ; Assurer relais OFF au début
MVI A, 01H ; Motif relais ON (bit 0 = 1)
OUT RELAY_PORT ; Activer relais
; --- Délai 5 secondes ---
MVI B, DELAY_COUNT ; Boucle externe = 5
OUTER: CALL DELAY_1SEC ; Sous-routine délai 1 seconde
DCR B ; Décrémenter compteur
JNZ OUTER ; Répéter jusqu'à B=0
MVI A, 00H ; Motif relais OFF
OUT RELAY_PORT ; Désactiver relais
HLT ; Arrêter CPU
; --- Sous-routine délai 1 seconde (approx, horloge 3 MHz) ---
DELAY_1SEC: LXI H, 0F424H ; 62 500 décimal (3M/48 ≈ 1s)
DELAY_LOOP: DCX H ; 6 T-states
MOV A, H ; 4 T
ORA L ; 4 T
JNZ DELAY_LOOP ; 10/7 T
RET ; 10 T
END
Explication
- RELAY_PORT (08H) : Connecter driver relais (transistor + diode) au bit 0 de ce port.
- OUT RELAY_PORT : Envoie accumulateur vers port — alimente bobine relais.
- Délai :
DELAY_1SEC utilise paire registres HL comme compteur 16 bits. À 3 MHz, 62 500 boucles ≈ 1 seconde. Boucle externe s'exécute 5 fois. - HLT : Arrête processeur ; relais reste éteint.
Notes matériel
- Utiliser ULN2803 ou 2N2222 + 1N4007 aux bornes bobine.
- Port 08H doit être décodé pour écriture seule.
- Ajuster constante délai selon votre fréquence horloge.