Carte Scalp 8052AH Basic

De MicElectroLinGenMet.

Sommaire

Carte Scalp 8052AH Basic (Elektor)

8052AH-BASIC (V1.1)
SCALP: Un Système de Conception Assisté par un Langage Populaire

(Elektor nov. 1987)

Suite article: Carte Scalp 8052AH Basic (2)

Autres documentations:
Manuel du language BASIC 8052AH: ManuelIntel8052ahBasic (html)
The Microcontroller Idea Book: Quick Reference to BASIC-52 / Microcontroller Basics / Inside the 8052-BASIC / Powering Up
Exemple de programmes BASIC: Program listings from The Microcontroller Idea Book


Grands-prêtres du Turbo-PASCAL, épigones du FORTH, caïds de l'assembleur, fanatiques de MODULA, passez votre chemin, ne lisez pas cet article, vous y perdriez votre âme, et peut-être la passion exclusive de votre langage préféré. Le langage populaire dans lequel on programme SCALP est le BASIC. Cris d'horreur. . . enfer et damnation!


Le 8052AH-BASIC est un micro-contrôleur conçu spécialement comme outil de saisie de données, de test d'instrumentation et de commande de processus. Ne vous y trompez pas, le 8052AH-BASIC N'EST PAS UN JOUET. C'est un vrai microprocesseur, avec en plus de très puissantes fonctions d'entrées sorties.

Vous pouvez l'utiliser dans d'innombrables applications domestiques ou industrielles. Sa mise en oeuvre n'est pas difficile, grâce au remarquable travall de conception et de mise au point effectué par Intel, mais aussi grâce au circuit imprimé universel qu'Elektor met à votre disposition. Le choix du BASIC comme langage de programmation n'est sans doute pas du goût de chacun, mais il est parfaitement justifié par le fait qu'il constitue une espèce de plus grand dénominateur commun à tous les programmeurs. En plus, l'interpréteur du 8052AH est loin d'être la dernière des casseroles: il connaît des instructions comme DO-WHILE et DO-UNTIL qui permet tent de mieux structurer les programmes en BASIC (au lieu des GOTO, décriés à juste titre), ses variables peuvent être empilées et dépilées grâce aux instructions PUSH et POP, et, pour en rester là provisoirement dans la longue liste des qualités de ce BASIC, il est rapide: une comparaison avec d'autres sytèmes courants à 8 voire 16 bits ne tourne pas à son désavantage. En résumé, le 8052AH-BASIC allie la puissance et la souplesse d'un micro-contrôleur de type 8051 aux qualités universelles d'un BASIC de bonne lecture et raisonnablement rapide.

Une bonne documentation

La carte que nous vous présentons ici n'est pas (seulement) un circuit d'expérimentation, c'est un véritable système autonome dont la puissance n'a pas fini de vous surprendre. Le seul inconvénient sérieux que l'on puisse lui trouver, c'est le prix du micro-contrôleur, encore relative ent élevé, sans doute parce que le processeur est conçu et produit comme outil (de luxe) pour l'industrie plutôt que pour le grand public. il s'agit néanmoins d'un produit courant pour lequel il ne devrait pas y avoir de difficulté d'approvisionnement. Compte tenu de l'efficacité exceptionnelle du sytème, qui d'ailleurs n'apparalt peut-être pas à première vue, le prix très frappant du micro-contrôleur n'est pas injustifié. Quiconque s'intéresse à ce circuit (figure 1) doit savoir d'emblée qu'Intel a produit un manuel de plus de 200 pages pour les utilisateurs du BASIC. Sans ce manuel, il est impossible de tirer pleinement profit de toutes les subtilités que recèle ce processeur. Ce manuel n'existe malheureusement qu'en langue anglaise, mais il n'est pas difficile de se le procurer: il s'agit du MCS BASIC-52 USERS MANUAL portant la référence 270010-003, que vous pouvez commander au Service de Documentation d'Intel. en joignant votre paiement de 237 FF HT + 18,6% de TVA, et le tour sera joué.


figure 1

Avant de nous intéresser de plus près à notre système, insistons encore sur le fait qu'il ne sagit pas d'un micro-ordinateur pour lequel vous trouverez des programmes tous faits. C'est un outil de conception: à vous d'apporter les idées d'applications et de les réaliser. Dans Elektor, nous vous avons déjà donné un magnifique exemple de réalisation: l'horloge étalon. Nous vous en donnerons d'autres. Et dès que vous aurez fait vous-même la connaissance de ce système, les idées viendront à une cadence telle que vous n'arrive rez plus à suivre...

Programmation directe

Un premier aspect de notre système 8052AH-BASIC, sans doute inattendu pour de nombreux lecteurs, est la présence sur la carte d'un circuit de programmation d'EPROM. Une gran de force de ce système est précisément. Sa capacité de mettre lui-même en EPROM les programmes en BASIC qu'il exécute ensuite directement et de façon autonome comme logiciel du système (non compilé, mais interprété, ce qui signifie que dans l'EPROM se trouve un programme BASIC, et non un programme en langage machine qui serait le résultat d'une compilation).
La programmation est exrrêmement facile à faire (à l'aide d'instructions spéciales du BASIC); une même EPROM peut contenir un ou plusieurs programmes en BASIC qui s'appellent éventuellement les uns les autres!
Un second aspect de ce système, peut-être un peu déroutant pour le non initié, c'est l'absence de périphériques de commmunication tels un clavier et un écran. Le système 8052AH-BASIC communique avec l'utilisateur par le biais d'un canal sériel bidirectionnel. Il suffit donc d'un terminal pour établir la liaison... un MINITEL par exemple! On utilisera le très sympathique "convertisseur de format sériel pour MINITEL' publié par ELEKTOR dans le numéro d'avril 1987, page 50. Nous reviendrons sur ce point le mois prochain.
Le troisième aspect que nous aime- rions souligner est la flexibilité de la configuration matérielle du système:
on peut y rajouter, en fonction des besoins, aussi bien un UART ou un ACIA qu'un ou plusieurs PIA, ou d'autres circuits périphériques comme par exemple des encodeurs de clavier. Sur l'horloge-étalon, nous avons connecté un afficheur à cristaux liquides et quelques touches d'un clavier à membrane. On peut aussi commander un module d'affichage doté de sa propre intelligence comme le satellite d'affichage de l'horlog-étalon (voir Elektor n°112 page 32 du mois d'octobre 1987). Apportez ce que vous voulez manger...

Dans la plupart des applications que l'on peut envisager pour un 8052AH-BASIC il y aura, peu ou prou, une fonction de temporisation, assortie d'interruptions. A cet égard, le 8052AH-BASIC possède une batterie très complète d'entrées, de registres, de compteurs et d'instructions taillés sur mesure pour de tel les fonctions. La fonction TIME du BASIC met à la disposition de l'utilisateur une horloge en temps réel. Cette fonction permet de créer facilement, puisque c'est en BASIC, des temporisations néanmoins précises à 5 rns près.

Le 8052AH est un micro-contrôleur à 8 bits; cela signifie qu'il associe des fonctions de processeur et des fonctions de périphériques. Il possède un accumulateur (A), un registre B, un registre d'état PSW (program-status word), un pointeur de pile de 8 bits, un pointeur de données DPTR de 16 bits (ou 2 x 8 bits), quatre ports de 8 bits (E/S et/ou bus d'adresses, de données et de commande), un double registre de communication sérielle SBUF, 3 paires de registres TH0-TL0, TH1-TL1 et TH2-TL2 qui forment ensemble les trois temporisateurs à 16 bits T0, TI et T2, une pai re de registres de saisie intermédiaire RCAP2H-RCAP2L (utilisés pour des fonctions particulières du temporisateur n°2), et enfin une batterie de registres de commande des différentes fonctions: IP (interrupt priority), lE (interrupt enable), TMOD TCON et T2CON pour les temporisateurs, et enfin SCON (serial contrai) et PCON (power control).

Un schéma universel

Si ce tour d'horizon a su vous convaincre de la puissance d'un système basé sur le 8052AH-BASIC, le moment est venu de faire connaissance avec notre carte. Le schéma de la figure 2 n'a rien de spectaculaire. On y retrouve la disposition classique du processeur entouré de ses mémoires vive et morte. L'interpréteur BASIC se trouve dans une ROM de 8 K sur la puce du 8052 lui-même L' EPROM IC6 est destinée aux programmes en BASIC de l'utilisateur. La quantité de mémoire vive minimale nécessaire au fonctionnement du 8052AH-BASIC est de 1 K à partir de l'adresse 0000. Ici nous disposons de 8 K minimum, et de 16 K lorsque les deux 6264 sont implantés (et adressés de 0000h à 3FFFh). Les opérations d'écriture et de lecture dans cette mémoire sont commandées directement par les signaux WR et RD.


Figure 2

D'origine, la structure de la mémoire du 8052AH ne correspond pas au modèle Von Neumann: la mémoire de programme est distincte de la mémoire de données; ceci explique la présence du signal PSEN (pragram store enable = validation des opérations de lecture dans une mémoire de programme extérieure!), combiné par N7 avec le signal de lecture RD pour adresser la mémoire morte (2764 = 8 K = 8000h à 9FFFh; 27128 = 16 K = 8000h à BFFFh).Ceci n'épuise pas toutes les configurations possibles de la mémoire du 8052AH- BASIC, mais il s'agit d'une combinaison pratique et uniiverselle figure 3).

Quand il programme une EPROM, le 8052AH-BASIC l'adresse toujours à partir de l'adresse 8000h nous reviendrons pas sur la programmation aussitôt que nous aurons fait le tour du reste du schéma.

Le décodage d'adresses en blocs contigus de 8 K est assuré par IC3. N6 permet de combiner deux. Signaux de décodage lorsque IC6 est une EPROM de 16 K (27128). Le démuluplexage des données et des octets d'adresse de poids faible est assuré par IC2. Ce démultiplexage est commandé par le signal ALE (address latch enable), sauf pendant la programmation d'une EPROM; dans ce cas. l'octet d'adresse de poids faible doit rester verrouillé (de même que l'octet de poids fort d'ailleurs, et l'octet de donnée) pendant bien plus longtemps qu'un unique cycle de bus de durée du cycle de programmation normale est de 50 ms! Or comme le logiciel de programmation ne peut pas agir de façon interne sur ALE. c'est un blocage extérieur qui a lieu par l'intermédiaire de P1.3 qui passe au niveau logique bas. C'est ainsi que le processeur innibe l'impulsion ALE tans N5.

Les sorties du port 0 sont à drain ouvert lorsque ce port est utilisé comme E/S: il est donc indispensable qu'elles soient munies de résistances de rappel (10 k par exemple). Ces sorties sont utilisees comme entrées/sorties (et non comme port d'adresses et de données) lorsque l'on programme une EPROM.

L'interface sérielle est d'allure modeste et classique, mais parfaitement à la hauteur des exigences. Les niveaux TTL fournis par le 8052AH-BASIC son convertis en niveaux de tensions conformes à ce qu'attend la console de communication sérielle reliée à K3: la tension négative pour la ligne d'émission TxD est prélevée par 2 diodes et un condensateur sur la ligne de réception RxD. Si la console accepte les niveaux TTL, on suppnmera D1 et D2 et on remplace ra C1 par un pont de cablage.

Le port P1

Le connecteur K1 (tableau 1) réunit es 8 lignes du port périphérique P1, les deux entrées d'interruption INT0 et INT1 et les lignes T0 et T1 qui sont les entrées externes des temporisateurs Timer 0 et Timer 1.

Les paires de lignes WR et RD RxD et et INT0 et INT1 et enfin T0 et T1 forment le port P3 du 8052.

Les lignes du port P1 ne sont pas seulement des entrées/sorties: elles sont également utilisées pour centaines fonctions spéciales. Ainsi, P1.0 et P1. peuvent servir à déclencher le temporisateur T2 et à le cadencer (il s'agit là d'une fonction standard du 8052, et non d'une particularité de la version BASIC). Les lignes P1.3, P1.4 et P1.5 sont utilisées par l'interpréteur BASIC pour générer tous les signaux nécessaires à la programmation de la plupart des types d'EPROM et d'EEPROM connus ac tuellement (nous reviendrons sur cet aspect). La ligne P1.6 associée à l'en trée INT0 permet de réaliser facilement un dispositif de DMA (direct memory access). La sortie P1.7 peut servir de canal sériel direct vers une imprimante par exemple, en association notamment avec les instructions LIST# et PRINT#. D'autres instructions du BASIC sont d'ailleurs liées directement au port P1: l'instruction PORT1 lit ou écrit directement sur ce port; la sortie P1.2 peut être commandée directement par l'instruction PWM pour produire un signal modulé en largeur d'impulsion, pour ne citer que ces deux exemples.

Les fonctions des lignes P1.2 ... P1.7 décrites ci-dessus sont spécifiques à la version BASIC.

Sur le connecteur K2 (tableau 1) apparaissent les lignes ADO... AD7,A0... .A15 et les lignes du bus de commande. ce qui permet d'étendre le système (adjonction de périphériques par exemple) ou de créer un accès direct à la mémoire DMA. Il est possible en effet de bloquer le processeur dans un mode idle. et de ménager l'accès à la mémoire pour un autre processeur ou micro-contrôleur pendant ce temps. Il nous est malheureusement impossible d'entrer dans ce genre de détails dans le cadre du présent article Précisons néanmoins que le mode idle du 8052AH-BASIC est commandé directement par une instruction du BASIC. et que cela permet de mettre le micro-contôleur en état de "veille passive" de manière générale chaque fois qu'il ne se passe rien.

L' oscillateur d'horloge du 8052AH-BASIC est résident: il suffit de rajouter deux condensateurs et un quartz pour qu'il fonctionne. La fréquence de résonance par défaut (11,0592 MHz) doit être respectée scrupuleusement, car elle régit toutes les fonctions chronologiques du micro-contrôleur, dont notamment la communication sérielle et la durée des impulsions de programmation d'EPROM. Si l'on veut utiliser une autre fréquence, par exemple 12 MHz, il faut le signaler au 8052AH-BASIC à l'aide de l'instruc tion XTAL (par exemple XTAL = 12000000). Ceci peut avoir des con séquences sur la précision des opérations de comptage. Le quartz de 11,0592 MHz ne porte souvent que la mention "11,059", ce qui n'est pas un inconvénient puisqu'en réalité il s'agit bien d'un quartz de 11,0592 MHz.

L'initialisation est automatique lors de la mise sous tension (R22/C4) ou manuelle (S1). L'entrée EA (external address) est au niveau logique haut en permanence, parce que la mémoire de programme (l'interpréteur BASIC) est intérieure et non extérieure (auquel cas EA serait au niveau logique bas).

La programmation d'(E)EPROM

Nous voici arrivés au commentaire de la partie du circuit que nous avons gardée pour la fine bouche: la programmation des (E)EPROM. Cet aspect du 8052AH-BASIC est sans doute le plus intéressant de tous. Il ne s'agit pas d'une fonction de programmateur d'EPROM universel, mais d'un système de sauvegarde aisée des programmes d'application de l'utilisateur: le 8052AH-BASIC grille dans l'EPROM le ou les fichiers BASIC que vous avez écrits, testés et corrigés en communiquant avec lui par l'intermédiaire d'un terminal, et que maintenant vous désirez sauvegarder définitivement Le logiciel résident du 8052AH-BASIC se charge de compacter (tokenize) ce(s) fichier(s) avant la programmation, et il y rajoute, selon le mode de programmation choisi, certaines informations complémentaires, utilisées ultérieurement lorsque les programmes seront exécutés: il s'agit du débit de transmission (baud rate), de la valeur de la demière adresse de la mémoire (MTOP), d'un indicateur permettant d'exécuter automatiquement après la mise sous tension le programme sauvegardé en première position dans l'EPROM, et en fin d'un indicateur permettant de supprimer l'opération d'initialisation de la mémoire après une remise à zéro (indispensable quand la mémoire vive est sauvegardée par pile ou accu). Il existe même une possibilité de programmer l'EPROM en BASIC, et de demander l'exécution après une RAZ, d'un programme néanmoins en assembleur.

Mais revenons au circuit et aux signaux de programmation.

Pour commencer, la ligne P1.5 (broche 6 du 8052) passe au niveau logique bas, ce qui provoque l'application à travers la cascade de transis tors T3, T4 et T5 de la tension de programmation à la broche Vpp de l'EPROM. Cette tension varie selon le type d'EPROM utilisé (voir ta bleau 2).
Avant que le bit 4 du port P1 (broche 5 du 8052) ne passe au niveau logique bas pour activer l'entrée PGM d'IC6 (impulsion de programmation), le 8052AH-BASIC va placer l'octet d'adresse de poids faible sur les lignes AD0... AD7, puis il iniibe le signal ALE en mettant P1.3 au niveau bas (l'octet d'adresse reste verrouillé dans IC2 pour le reste de ce cycle de programmation), il place l'octet d'adresse de poids fort sur les lignes A8... .A15, et les 8 bits de la donnée sur les lignes D0... D7 de l'(E)EPROM à programmer. Le durée de l'impulsion issue de P1.4 est de 50 ms Si l'instruction de programmation est du type PROG, et de 1ms si cette instruction est FPROG. Dans ce demier cas, il est fait appel à l'algorithme de programmation INTELligent (qui requiert également le passage de la tension d'alimentation de l'EPROM de 5 V à 6 V; cette fonction n'existe pas sur SCALP). En tout état de cause, la durée de l'impulsion de programmation est déterminée par la fréquence d'horloge elle-même fixée par le quartz. Il importe donc que l'opérateur XTAL soit redéfini le cas échéant.

L 'inverseur S2 permet de bloquer les trois signaux de programmation lorsqu'il est en position "PROG.DIS"; cette mesure de sécurité est nécessaire, notamment lorsque le port P1 est utilisé aussi pour d'autres fonctions que la programmation.

Comme nous l'avons déjà laissé entendre, ce n'est pas un seul fichier BASIC que l'on peut programmer dans une même EPROM, mais 255! Il est peu vraisemblable qu'en pratique on atteigne jamais ce chiffre; on se limite plus généralement à quel ques programmes qui peuvent d'ailleurs éventuellement s'appeler les uns les autres. Chaque fois que l'on donne la commande PROG au 8052AH-BASIC, celui-ci donne le numéro qu'il attribue au fichier dans l'EPROM à programmer. Cette numérotation est mise à jour automatiquement. Ensuite, pour exécuter un tel fichier, il suffit de donner la commande ROM X (oû X représente le numéro du programme à exécuter) suivie de la commande RUN. Pour transférer un tel fichier d'EPROM en RAM, on donnera la commande XFER.

Un demier aspect remarquable de notre système mérite d'être mentionné: le 8052AH-BASIC met à la disposition de l'utilisateur une bibliothèque de routines de l'interpréteur. D'autre part, le BASIC est capable d'appeler des routines en langage assembleur extérieures. écrites par l'utilisateur. Les possibilites de ce chassé-croisé sont considérables, mais elles ne sont exploitables que si l'on dispose d'un assembieur 8051 et d'une solide expérience.C'est pourquoi nous ne nous étendrons pas sur ce sujet malgré son intérêt incontestable.

En résumé, pour mettre sur silicium un programme en BASIC, il suffit de mettre une EPROM dans le support d'IC6, d'appliquer la tension de programmation appropriée, de mettre S1 en position "PROG EN.". et de donner une commande PROG. Une fois que nous aurons vu comment réaliser la carte que nous venons de décrire. nous verrons comment communiquer avec elle.

La réalisation

Comme beaucoup de montages publiés dans ce magazine, celui-ci fait figure de porte ouverte sur un nouveau monde. Nous l'avons déjà dit, il s'agit d'un outil de conception et il ne vaudra que par l'usage que vous en ferez. Ne vous jetez donc pas dans l'aventure sans avoir bien réfléchit auparavant à ce que vous voulez faire. Si vous recherchez un système qui vous permette de réaliser rapidement et aisément des applications d'automatisation. même (et surtout) Si elles sont compliquées et/ou exigeantes pour ce qui concerne la vitesse. même (et surtout) s'il faut jongler 'en BASIC'.) avec les interruptions faites par des périphériques sériels ou parallèles. même (;et surtout) s'il y a des corrections ou des modifications à effectuer de temps à autre, foncez... et vous ne le regretterez pas.

Le circuit imprimé de la figure 4 est a double-face, ses trous sont métalli sés. En ces temps (parfois) difficiles où certains lecteurs nous reprochent arnèrement de publier ici ou là des dessins de circuits imprimés qui ne sont pas dans le style d'ELEKTOR (ô infamie!), nous sommes fiers de présenter cette nouvelle platine au dessin très réussi et 100% NAO*. Commencez par vous procurer le 8052AH-BASIC version 1.1 et le quartz qui sont les deux composants un tant soit peu particuliers. Utilisez des supports de bonne qualité pour le processeur et les deux RAM, et éventuellement pour les quatre circuits intégrés HCT. Pour l'EPROM qui sera changée fréquemment, il faut un support a force d'insertion nulle, ou un très bon support à tulipes. Pour K3. nous avons prévu un support DIN femelle à 5 broches à implanter directement sur la platine. Ces connecteurs sont très robustes et sont enrobés dans une matière plastique isolante. K1 est un connecteur mâle à 20 broches au pas de 2,54 mm coudées à 90°, équipé de préférence de leviers éjecteurs du connecteur femelle correspondant. K2 est un connecteur du même type, mais à 40 broches.

Pour limiter les frais occasionnés au début par l'acquisition de ce système, on peut envisager de se passer de K1 et/ou de K2 qui ne seront utilisés que dans le cadre d'extensions. On peut aussi n'implanter qu'IC4 et laisser IC5 de côté pour l'instant (la mémoire vive disponible pour vos programmes en BASIC n'est alors que de 7 K environ). Les résistances R9... R16 pourront être un réseau de 8 résistances Si on en trouve. Sinon ce seront des résistances ordinaires de petite taille, soudées comme indiqué sur la figure 5. La LED verte D6 n'a d'autre fonction que d'indiquer la présence d'une tension d'alimentation. La LED rouge D4 signale que la programmation d'IC6 est autorisée.


Figure 4

Pour les tensions d'alimentation et de programmation, on utilisera des picots ou un bornier à vis. Prenez toutes les précautions nécessaires pour que vous-mêmes (ou d'autres) ne confondiez jamais VCC et VPP... Pour S1, nous avons prévu un poussoir du type Digitast. Pour S2 (programmation) on peut utiliser un inverseur ou une rangée de trois picots en barrette sécable sur lesquels on installera un cavalier. Il en va de même pour S3 (choix de l'EPROM). L'EPROM IC6 n'est pas nécessaire pour faire fonctionner le système. Ce composant (vierge) n'est indispensable qu'à partir du moment où l'on souhaite y programmer des fichiers BASIC (2764 ou 27128).

Comme alimentation, il faut un circuit fournissant 5 V/500 mA. Pour la tension de programmation, un courant de 50 mA suffit amplement. La valeur de tension sera déterminée en fonction du type d'EPROM.

Avant d'implanter le processeur et la mémoire, vérifiez la présence de la tension de 5V sur leurs broches concernées, et vérifiez scrupuleusement l'absence de court-circuit au voisinage de la broche 28 d'IC5: la tension de programmation passe à proximité. Implantez tous les composants et jetez un ultime coup d'oeil à votre réalisation. Le moment est venu de mettre le circuit sous tension.

Le mois prochain, nous vous donnerons les informations primordiales pour communiquer avec le système
8052AH-BASIC.



Suite article: Carte Scalp 8052AH Basic (2)





27 décembre 2002


Administration wiki