>> Technologie Électronique >  >> Audio personnel >> Radios-réveils

Programme assembleur 8085 : compteur binaire continu avec délai 1 seconde

Code assembleur 8085 complet et commenté

Le programme suivant initialise un compteur 16 bits à 0000H, l'incrémente continuellement, affiche la valeur (via port de sortie simulé), et insère un délai ~1 seconde entre comptages en utilisant une boucle imbriquée calibrée pour horloge 3 MHz.

ORG 1000H ; Adresse début programme LXI H, 0000H ; Initialise compteur 16 bits (H-L) à 0 MVI B, 00H ; Octet haut compteur délai (boucle externe) MVI C, 00H ; Octet bas compteur délai (boucle interne) AFFICHAGE: ; Routine sortie simulée MOV A, L ; Récupère octet bas compteur OUT 01H ; Sortie port 01H (ex. LEDs/afficheur) MOV A, H ; Récupère octet haut OUT 02H ; Sortie port 02H INCREMENT: INX H ; Incrémente compteur 16 bits (HL = HL + 1) DELAI_1S: ; ~1 seconde délai @ 3 MHz (approx 1M cycles) LXI B, 0F424H ; Charge BC avec 62,500 (0xF424) pour boucles externe+interne BOUCLE_DELAI: DCX B ; Décrémente BC (10 T-states) MOV A, B ; Vérifie octet haut (4 T-states) ORA C ; OU avec octet bas (4 T-states) JNZ BOUCLE_DELAI ; Saut si non zéro (10/7 T-states) ; Total ~ 62,500 * 28 ≈ 1,75M T-states ≈ 0,58s @ 3MHz ; Ajuster constante pour 1s exact (ex. 0x10000 = 65,536) JMP AFFICHAGE ; Répète indéfiniment 

Points clés

  • INX H est la seule instruction d'incrémentation 16 bits ; elle n'affecte pas les drapeaux.
  • La boucle de délai utilise DCX B + JNZ pour décrémentation 16 bits. La constante 0F424H donne ~0,58s à 3 MHz ; utiliser 10000H pour ~1s.
  • Remplacer instructions OUT par routine d'affichage réelle de votre matériel (ex. afficheur mémoire-mappé, sortie série).
  • Pour temporisation précise, utiliser timer matériel (ex. 8253/8254) au lieu boucles logicielles.

Résumé flux

  1. Initialiser compteur et constantes délai
  2. Afficher compteur actuel
  3. Incrémenter compteur
  4. Exécuter boucle délai calibrée
  5. Boucler vers affichage
Radios-réveils