Table des matières:
- Fournitures
- Étape 1: Installez Z80asm sur votre Z80-mbc2
- Étape 2: copiez le code source sur vous Z80-mbc2
- Étape 3: compiler et exécuter le programme
Vidéo: Z80-mbc2 Z80 Code Flash LED utilisateur : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Il s'agit d'un exemple de programme utilisateur LED écrit en assembleur Z80 pour l'ordinateur z80-mbc2.
J'ai fait cet exercice de test et de révision pour moi, c'est mon premier programme Z80 depuis plus de 35 ans.
Prendre plaisir
Fournitures
ordinateur Z80-mbc2
Une copie de Z80ASM de SLR Systems Rel. 1.32, téléchargeable à partir de nombreuses archives cp/m
Un éditeur, j'ai utilisé ZDE16, car il était déjà sur l'image de démarrage CP/M pour le z80-mbc2
Étape 1: Installez Z80asm sur votre Z80-mbc2
Je suppose que vous êtes familiarisé avec les outils dont vous disposez pour votre Z80-MBC2, à savoir quelle que soit la version de cpmtools que vous utilisez. Voici les étapes si vous utilisez les versions en ligne de commande:
- Obtenez les fichiers z80asm.com et z80asm.doc (facultatif) dans un répertoire quelque part sur votre PC hôte
- Mettez votre carte SD dans le même PC, je suppose ci-dessous qu'elle s'affiche en tant que lecteur E: ci-dessous.
- J'ai mis l'assembleur sur mon disque CP/M A, pour cp/m 2.2 ce serait l'image disque DS0N00. DSK
- La commande: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: copiera le fichier z80asm.com sur l'image
- La commande cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: copiera la documentation sur le disque (facultatif)
Lorsque vous démarrez cp/m 2.2 sur votre z80-mbc, vous devriez maintenant avoir z80asm.com et z80asm.doc (facultatif) sur le lecteur A
Étape 2: copiez le code source sur vous Z80-mbc2
Connectez-vous au z80-mbc à l'aide de votre programme de terminal
Je vous suggère d'utiliser un disque non rempli pour enregistrer le code source, par exemple f: pour choisir ce type de lecteur:
F:
après quelques secondes, vous verrez l'invite F:.
utilisez maintenant le programme zde16 sur le lecteur A pour éditer un fichier vierge:
a:zde16 myled.z80
Cela créera un fichier appelé myled.z80 sur le disque F:, note: le.z80 est requis dans le nom pour que z80asm fonctionne.
Maintenant, copiez et collez le code ci-dessous, en fonction de la vitesse de votre terminal, etc., vous devrez peut-être copier et coller par petites sections. Ou saisissez-le ! retrouvez également cette sensation des années 1980.
;
; Tester la LED utilisateur et la clé utilisateur; BDOS equ 05h;cp/m Point d'entrée BDOS USRLED equ 0;opcode pour le contrôle de la LED utilisateur USRKEY equ 80h;opcode pour le contrôle du commutateur utilisateur DPORT equ 0;DATA port i/o CPORT equ 1;Command port output; org 0100h; ld (estack), sp; conserve les informations existantes pour le retour à cp/m ld sp, stack; ld hl, msg;hello message call _puts lp: ld a, 1;allumer = 1 appel led retard d'appel;retarder et attendre la (les) touche(s) jr nz, terminer;non zéro signifie touche/interrupteur enfoncé xor a;a= 0 appel led retard d'appel; retarder ou attendre touche/interrupteur jr z, lp; si zéro, pas de touche/interrupteur, recommencer; finition: xou a;touche ou commutateur a été enfoncé, donc fait appel led ld hl, bye;dire bye call _puts;affichage msg HL= ld sp, (estack);pile d'origine ret;retour à cp/m; led: push af; sauvegarde la valeur de la led 0 ou 1 ld a, USRLED out (CPORT), a; optcode envoyé pop af out (DPORT), a; data envoyé ret;;Delay loop qui vérifie la touche enfoncée sur le terminal ou le délai de la touche utilisateur: ld bc, 00e00h; environ 1/2 s 8 mhz CPU, pure conjecture boucle de travail2: dec bc; compter la boucle push bc; enregistrer les regs lors de l'appel BDOS push de ld c, 6;BDOS raw i/o vérifie si la touche est enfoncée ld e, 0ffh appelle BDOS pop de; récupère nos valeurs de la pile pop bc ou a; vérifie si la touche est enfoncée sur le terminal ret nz;yes return (maintient également l'indicateur nz défini) ld a, USRKEY; maintenant vérifier la clé utilisateur (CPORT), a; port de commande dans a, (DPORT); lire la clé et a, 1; uniquement intéressé par le bit 0 ret nz; revenir si la clé utilisateur est enfoncée ld a, b; ou est bc=0 ou c jr nz, loop2;pas fini de compter, recommencer xor a;mettre le drapeau z à 0 ret;retour aucune touche enfoncée, fin du délai; _puts: push bc;sauvegarder nos regs prêts pour les appels bdos push de nxt: ld a, (hl);get char ou a;test si c'est 0, end of msg jr z, done;yes so done ld e, a; configurer l'appel à BDOS pour imprimer un char ld c, 2 push hl; enregistrer le pointeur de texte appeler BDOS; l'imprimer pop hl inc hl; prochain char jr nxt; continuer à faire: pop de; terminé la restauration des regs pop bc ret; et revenir; msg db 'User LED test, any key to exit' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0
Enregistrez le fichier en utilisant ESC x. Voir le guide d'utilisation de ZDE16 pour plus d'informations, c'est un peu comme wordstar pour la plupart des éditions, sauf que les options Ctrl-K sont différentes.
Étape 3: compiler et exécuter le programme
Une fois que vous avez votre code source sur la machine.
Taper:
F>
F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 par SLR Systems Rel. 1.32 MYLED/A Fin du fichier Réussite 1 0 Erreur(s) détectée(s). 406 octets absolus. 16 symboles détectés.
Cela recherchera le fichier myled.z80 et produira un fichier binaire (.com), c'est ce que signifie l'option /a.
Voir le fichier z80asm.doc pour plus d'informations.
Pour exécuter le programme, tapez:
F>myled
Test LED utilisateur, n'importe quelle touche pour quitter Exit F>
Appuyez soit sur le bouton utilisateur, soit sur une touche du terminal pour quitter.
Terminé.
Conseillé:
Système de sécurité électronique avec RTC et code PIN défini par l'utilisateur : 7 étapes
Système de sécurité électronique avec RTC et code PIN défini par l'utilisateur : Salut les gars ! Il s'agit d'un projet que j'ai réalisé à l'aide d'un microcontrôleur pic, c'est un système de sécurité par code PIN électronique avec horloge en temps réel et fonctionnalités de code PIN définies par l'utilisateur, cette page contient tous les détails pour en créer un vous-même. SON FONCTIONNEMENT ET CONCEPT : Eh bien
Convertisseur Boost basé sur Esp8266 avec une incroyable interface utilisateur Blynk avec régulateur de rétroaction : 6 étapes
Convertisseur Boost basé sur Esp8266 avec une incroyable interface utilisateur Blynk avec régulateur de rétroaction : dans ce projet, je vais vous montrer un moyen efficace et courant d'augmenter les tensions CC. Je vais vous montrer à quel point il peut être facile de construire un convertisseur boost à l'aide d'un Nodemcu. Construisons-le. Il comprend également un voltmètre à l'écran et un retour
Testeur de batterie Arduino avec interface utilisateur WEB. : 5 étapes
Testeur de batterie Arduino avec interface utilisateur WEB.: Aujourd'hui, les équipements électroniques utilisent des batteries de secours pour enregistrer l'état dans lequel l'opération a été laissée lorsque l'équipement a été éteint ou lorsque, par accident, l'équipement a été éteint. L'utilisateur, à la mise sous tension, revient au point où il était resté
Analyseur logique avec interface utilisateur Android : 7 étapes
Analyseur logique avec interface utilisateur Android : Le monde est déjà inondé de tant d'analyseurs logiques. Dans mon passe-temps électronique, j'en avais besoin pour le dépannage et le débogage. J'ai cherché sur internet mais je ne trouve pas celui que je cherche. Alors me voici, vous présentant…"ENCORE Un autre Lo
Interface utilisateur facile à mettre en œuvre -- Écran OLED avec joystick et boutons : 6 étapes
Interface utilisateur facile à mettre en œuvre || Écran OLED avec joystick et boutons : ce module dispose d'un écran OLED avec deux boutons, un joystick à 5 directions et un accéléromètre à 3 axes. Ceci est utile pour configurer l'interface utilisateur d'un projet. Hé, quoi de neuf les gars ? Akarsh ici de CETech. Aujourd'hui, nous allons jeter un œil à un module tout-en-un qui