Assembleur 8085 : Compteur BCD ascendant avec interface afficheur 8279
Ci-dessous un programme assembleur 8085 structuré et commenté implémentant un compteur ascendant BCD (Binary-Coded Decimal) affiché via le contrôleur clavier/afficheur programmable 8279. Le code suppose le 8279 mappé sur ports E/S 10H-13H (configuration typique).
Vue d'ensemble programme
- Compte 00-99 en format BCD
- Met à jour afficheur 8279 temps réel
- Inclut délai débouncing pour comptage visible
- Gère retenue BCD entre chiffres
Code assembleur
ORG 1000H ; Adresse début programme ; INITIALISATION 8279 INIT_8279: MVI A, 00H ; Mode set: Affichage seul, 8 digits, entrée gauche OUT 13H ; Port contrôle (13H) MVI A, 80H ; Efface affichage, pas matrice capteur OUT 13H MVI A, 27H ; Prescaler horloge pour scan 100kHz OUT 13H RET ; PROGRAMME PRINCIPAL MAIN: CALL INIT_8279 ; Initialise 8279 LXI H, 0000H ; HL = compteur BCD (L=unités, H=dizaines) MVI B, 00H ; Compteur délai COUNT_LOOP: CALL DISPLAY_BCD ; Affiche compteur actuel CALL DELAY ; Délai visible (~0,5 sec) CALL INCREMENT_BCD ; Incrémente compteur BCD JMP COUNT_LOOP ; Répète indéfiniment ; INCRÉMENT BCD AVEC GESTION RETENUE INCREMENT_BCD: MOV A, L ; Charge chiffre unités ADI 01H ; Ajoute 1 DAA ; Decimal Adjust Accumulator (correction BCD) MOV L, A ; Stocke unités JNC INC_DONE ; Pas de retenue ? Fini MOV A, H ; Charge chiffre dizaines ADI 01H ; Ajoute retenue DAA ; Correction BCD MOV H, A ; Stocke dizaines INC_DONE: RET ; AFFICHAGE VALEUR BCD SUR 8279 (2 CHIFFRES DROITES) DISPLAY_BCD: MOV A, L ; Chiffre unités ANI 0FH ; Masque nibble bas OUT 10H ; Port données A (afficheur le plus à droite) MOV A, H ; Chiffre dizaines ANI 0FH OUT 10H ; Prochain chiffre gauche RET ; DÉLAI LOGICIEL SIMPLE (~0,5 sec @ 3MHz) DELAY: LXI D, 0FFFFH ; Compteur délai max DLY_LOOP: DCX D ; Décrémente DE MOV A, D ORA E ; Vérifie si zéro JNZ DLY_LOOP RET END
Notes implémentation clés
Mapping ports 8279 (Typique)
- 10H : Port Données A (RAM afficheur)
- 11H : Port Données B (clavier/capteur)
- 12H : Commande/Statut
- 13H : Registre Contrôle/Mode
Instructions critiques
DAA(Decimal Adjust Accumulator) — Essentiel arithmétique BCD. Ajuste résultat ALU en BCD valide après ADD/ADI.OUT 10H— Écrit dans RAM afficheur. 8279 auto-incrémente position afficheur selon setting mode.
Connexions matérielles
Assurez RESET 8279 lié reset système, CLK correspond fréquence 8085 (typiquement 3MHz), et sorties afficheur (A0-A3, B0-B3) connectées drivers 7 segments avec afficheurs anode commune.
Personnalisation
- Changez compteur
DELAYpour comptage plus rapide/plus lent - Ajoutez scan clavier (Port 11H) pour contrôle start/stop/reset
- Étendez à 4+ digits en utilisant H/L pour décennies additionnelles
Ce programme démontre arithmétique BCD fondamentale, interface 8279, et mise à jour afficheur temps réel — compétences cœur pour systèmes embarqués base 8085.
