Menu English Ukrainian Russe Accueil

Bibliothèque technique gratuite pour les amateurs et les professionnels Bibliothèque technique gratuite


ENCYCLOPÉDIE DE LA RADIOÉLECTRONIQUE ET DU GÉNIE ÉLECTRIQUE
Bibliothèque gratuite / Schémas des appareils radio-électroniques et électriques

Programmation modulaire des systèmes de contrôle sur MCS48. Encyclopédie de l'électronique radio et de l'électrotechnique

Bibliothèque technique gratuite

Encyclopédie de l'électronique radio et de l'électrotechnique / microcontrôleurs

Commentaires sur l'article Commentaires sur l'article

On sait qu'un même microcontrôleur peut contrôler à la fois un équipement technologique complexe et un moulin à café domestique ou une horloge électronique. L'adaptation à un objet spécifique s'effectue en modifiant le programme du microcontrôleur, le matériel n'est presque pas affecté. L'article proposé est consacré aux techniques de programmation des microcontrôleurs de la série MCS48, qui sont largement utilisés dans les systèmes de contrôle à des fins diverses. Ses principales dispositions sont également valables pour les appareils plus modernes.

Le développement et la modernisation des programmes de contrôle sont grandement facilités s'ils sont construits selon un principe modulaire. Dans ce cas, après avoir acquis une certaine expérience, et surtout, notre propre bibliothèque de modules débogués, programmer un nouveau système de contrôle (CS) revient à remplacer certains modules d'un programme déjà existant et débogué et, éventuellement, à le compléter avec des fragments qui tenir compte des spécificités d'un système particulier.

Ce principe est intégré dans la structure de nombreux langages de haut niveau (PASCAL, C++), et le programmeur est littéralement obligé de le suivre. Malheureusement, les ASSEMBLEURS (y compris pour MSS48), tout en donnant au programmeur une plus grande liberté de choix des moyens et des méthodes de résolution des problèmes, ne surveillent généralement pas du tout le respect de la discipline de programmation. Cela conduit souvent à la création de programmes si déroutants que même leurs auteurs ne peuvent pas comprendre ce qui a été fait après un certain temps, sans parler de l'utilisation de fragments débogués dans d'autres programmes. L'adhésion consciente aux concepts modulaires communs facilite et accélère grandement la programmation des microcontrôleurs. Un exemple de programme modulaire typique pour CS est donné dans le tableau. Sa syntaxe correspond à l'ASSEMBLAGE tabulaire TASM pour le microprocesseur 8048.

Comme vous pouvez le voir, au début du texte du programme, les directives EQU donnent des noms aux constantes et attribuent des valeurs. L'utilisation de constantes nommées est toujours préférable à la spécification de valeurs numériques directement dans les instructions du processeur exécutable. Par exemple, le retard mis en œuvre par l'un des sous-programmes décrits ci-dessous est défini par trois nombres. Ils sont donnés par les constantes N1, N2 et N3. Si vous avez besoin de changer la vitesse d'obturation, il suffit de spécifier de nouvelles valeurs dans les opérateurs EQU. Sinon, il faudrait chercher dans tout le programme des instructions avec des opérandes égaux à ces nombres, décider si chacun d'eux se réfère à une temporisation et indiquer de nouvelles valeurs dans les cas nécessaires.

Évidemment, un tel travail demande beaucoup de temps et souvent ne va pas sans erreurs. Cela est particulièrement compliqué par le fait que certaines commandes peuvent ne pas utiliser le nombre entier, mais, par exemple, son octet haut ou bas. ASSEMBER déjà au stade de la traduction du programme est capable de calculer certaines constantes en fonction des valeurs des autres. Cette possibilité est illustrée par le calcul des octets de poids fort (N3N) et de poids faible (N3L) du nombre NXNUMX.

Ensuite, le programme alloue de la mémoire pour les variables. Ils le font avec les mêmes directives EQU, mais contrairement aux descriptions de constantes, ils ne spécifient pas les valeurs numériques des variables, mais les adresses des cellules mémoire qu'elles occupent.

Programmation modulaire des systèmes de contrôle sur MCS48
(cliquez pour agrandir)

Si l'ASSEMBLEUR le permet, la possibilité d'utiliser des macros ne doit pas être négligée. Chacun d'eux est en quelque sorte une nouvelle instruction qui effectue une opération non directement prévue par le système d'instructions du processeur. Décrivant une instruction macro, le programmeur lui donne un nom (qui, bien sûr, ne coïncide avec le nom d'aucune des instructions "réelles") et spécifie les actions requises sous la forme d'une séquence d'instructions machine. Chaque fois qu'il rencontre une instruction macro dans un programme, l'ASSEMBLEUR la remplace par la séquence spécifiée. Dans cet exemple, deux macros sont utilisées. L'un d'eux transfère le contenu de l'accumulateur à la cellule de mémoire de données spécifiée par le paramètre macro, et l'autre - en retour.

Après la mise sous tension (ou l'envoi d'un signal de réinitialisation), le microcontrôleur commence à exécuter le programme à partir de l'adresse zéro. Cette adresse est généralement utilisée pour écrire une commande de saut inconditionnel au point de départ réel du programme (dans ce cas, l'étiquette START). Cela est nécessaire car les interruptions matérielles transfèrent toujours le contrôle aux adresses fixes 3 et 7 (pour d'autres types de microcontrôleurs, les adresses peuvent être différentes, mais elles sont toujours situées au début de la mémoire programme). Les commandes de transition inconditionnelle vers les routines de service des interruptions correspondantes situées à ces adresses doivent être "contournées" par le programme principal.

L'étape suivante consiste à définir les modes de fonctionnement du contrôleur (par exemple, sélectionner les banques de mémoire et les registres), à initialiser les variables et les périphériques externes. Une erreur typique des programmeurs novices est de supposer qu'immédiatement après le démarrage du programme, les variables ont déjà des valeurs définies. Cette idée fausse est renforcée par le fait que certains langages de haut niveau (comme le BASIC) définissent automatiquement toutes les variables à une valeur initiale de zéro. Dans les programmes en langage assembleur (et dans de nombreux autres langages), le programmeur lui-même doit veiller à ce qu'avant la première lecture de la valeur d'une variable, quelque chose ait déjà été écrit dans la cellule mémoire qui lui est allouée. Un bon style de programmation nécessite que des valeurs initiales soient attribuées aux variables au tout début du programme. Dans ce cas, cela est fait par le sous-programme 1INIT.

La section d'initialisation de l'appareil externe ressemble généralement à un appel alternatif aux sous-programmes, chacun réinitialisant l'un d'eux (convertisseur analogique-numérique, indicateur LED, clavier, etc.) et peut être facilement remplacé lors de la finalisation et de l'amélioration du système. Souvent, ces mêmes routines vérifient la santé des appareils.

Ensuite, la plupart des programmes de contrôle entrent dans une boucle principale qui se répète sans fin, dont l'exécution n'est suspendue que pour gérer les interruptions. Le cycle se compose de sous-programmes pour interroger le clavier et d'autres capteurs, vérifier les drapeaux définis par les sous-programmes de gestion des interruptions (par exemple, le drapeau pour l'expiration d'un intervalle de temps spécifié ou la fin du convertisseur analogique-numérique), traiter les informations reçues conformément à l'algorithme de contrôle spécifié, transmettant des actions de contrôle aux actionneurs , affichant des informations sur l'état du processus technologique sur un écran à cristaux liquides ou d'autres indicateurs. La sortie de la boucle principale n'est généralement prévue qu'en cas d'urgence, par exemple si, pour éliminer les conséquences d'une panne, il est nécessaire de répéter l'initialisation de toutes les variables et périphériques externes, ainsi que lors du traitement des interruptions.

Ainsi, un programme construit sur une base modulaire est un ensemble de sous-programmes. Si, par exemple, un clavier différent est utilisé dans le nouveau système de contrôle, il suffira de remplacer le sous-programme BUTT. Pour qu'un tel remplacement soit simple et indolore, certaines règles doivent être élaborées et toujours respectées. Les sous-programmes, si possible, doivent enregistrer le contenu de tous les registres du contrôleur, recevoir les données initiales et émettre les résultats dans les mêmes registres et cellules de mémoire, utiliser le même codage de caractères, etc.

Il faut lutter contre le désir naturel (surtout pour les programmeurs qui ont surmonté les premières difficultés et commencent à se sentir comme des professionnels) de simplifier le programme en s'éloignant des règles strictes et en utilisant des techniques non standard. Apparemment, à première vue, une complication injustifiée sera pleinement payante en facilitant le débogage et en retravaillant le programme dans son ensemble.

Considérons quelques caractéristiques des sous-programmes. I NCREM et DESREM effectuent le nécessaire dans de nombreux cas, l'opération d'augmentation ou de diminution d'une valeur donnée d'un nombre binaire de 16 bits (ses octets haut et bas sont respectivement dans les registres R6 et R5). Les constantes qui spécifient la quantité d'incrément sont décrites au début du programme.

Étant donné que tout microcontrôleur fonctionne beaucoup plus rapidement que les équipements technologiques, il est très important de pouvoir organiser le délai dans le programme. Dans ce cas, le compteur/timer interne du processeur est utilisé. Il a une capacité limitée et déborde en millisecondes. Chaque débordement génère une demande d'interruption. La routine de service d'interruption de minuterie (TIME) les compte et, lorsque le nombre spécifié est atteint, définit l'indicateur de temporisation FLT sur un. Tous les sous-programmes dont le travail dépend du temps, il reste à analyser l'état de ce drapeau. Il est donc possible de réaliser des vitesses d'obturation de plusieurs secondes voire minutes.

Pour commencer à compter un nouvel intervalle, il est nécessaire d'entrer les valeurs initiales dans les cellules de travail du sous-programme TIME et d'activer la minuterie. Le sous-programme SET2M, par exemple, fixe la temporisation à 2 minutes. Le calcul des valeurs initiales comporte plusieurs subtilités.

On sait que dans les microcontrôleurs de la série MSS48, les impulsions arrivent à l'entrée du compteur/timer interne à une fréquence 480 fois inférieure à la fréquence de l'oscillateur à quartz. Par exemple, avec une fréquence de résonateur à quartz de 7 MHz, le nombre écrit dans le compteur change toutes les 480/7000000 = 0,00006857 s = 68,57 µs. Ainsi, le compteur débordera (et générera une demande d'interruption) en 68,57 -(256-N1) µs, où N1 est le nombre écrit à l'origine dans le compteur. Si à chaque fois que vous démarrez un nouveau comptage à partir de ce nombre, alors N0,1 = 2 0,1/[7000000 (1480-N256)] les débordements se produiront en 1 s (délai minimum).

Évidemment, le même retard temporel peut être obtenu avec différents N1 et N2, mais comme ces nombres ne peuvent pas être fractionnaires, il sera implémenté avec une certaine erreur. La tâche consiste à sélectionner une telle paire de valeurs pour laquelle l'erreur est minime. Dans le cas considéré, la meilleure option est N1 = 13, N2 = 6. Une temporisation de 2 min est obtenue en répétant la procédure décrite N3 = 1200 fois.

Il est souvent nécessaire d'utiliser différentes procédures pour traiter les mêmes interruptions matérielles dans différents modes de fonctionnement du programme. Une manière de procéder est illustrée par le sous-programme INTER. Il analyse le code de type d'interruption entré par le programme principal dans la cellule INTT et, selon sa valeur, appelle l'une des routines de service d'interruption ISR1 ou ISR2. Notez que les deux se terminent par RET, pas RETR. Il est facile d'augmenter le nombre d'options de traitement et même de faire en sorte que pour une certaine valeur de code, plusieurs sous-programmes différents soient appelés les uns après les autres.

Il n'est pas nécessaire d'écrire tous les sous-programmes nécessaires dans le fichier texte du programme principal. Les modules débogués et utilisés à plusieurs reprises dans différents programmes peuvent être situés dans des fichiers séparés et connectés au programme principal à l'aide des directives INCLUDE. Chaque fichier inclus peut contenir une ou plusieurs routines. L'inconvénient de cette méthode est que les noms des variables, des constantes et des étiquettes dans tous les modules utilisés ne doivent pas être répétés. Privée de ce défaut, la méthode de traduction séparée des modules avec leur fusion ultérieure au niveau du code objet n'est malheureusement pas prise en charge par l'ASSEMBLAGE TASM.

Auteur : D. Ryzhov, Vladimir

Voir d'autres articles section microcontrôleurs.

Lire et écrire utile commentaires sur cet article.

<< Retour

Dernières nouvelles de la science et de la technologie, nouvelle électronique :

Inauguration du plus haut observatoire astronomique du monde 04.05.2024

L'exploration de l'espace et de ses mystères est une tâche qui attire l'attention des astronomes du monde entier. Dans l’air pur des hautes montagnes, loin de la pollution lumineuse des villes, les étoiles et les planètes dévoilent leurs secrets avec plus de clarté. Une nouvelle page s'ouvre dans l'histoire de l'astronomie avec l'ouverture du plus haut observatoire astronomique du monde, l'Observatoire Atacama de l'Université de Tokyo. L'Observatoire d'Atacama, situé à 5640 XNUMX mètres d'altitude, ouvre de nouvelles opportunités aux astronomes dans l'étude de l'espace. Ce site est devenu l'emplacement le plus élevé pour un télescope au sol, offrant aux chercheurs un outil unique pour étudier les ondes infrarouges dans l'Univers. Bien que l'emplacement en haute altitude offre un ciel plus clair et moins d'interférences de l'atmosphère, la construction d'un observatoire en haute montagne présente d'énormes difficultés et défis. Cependant, malgré les difficultés, le nouvel observatoire ouvre de larges perspectives de recherche aux astronomes. ...>>

Contrôler des objets à l'aide des courants d'air 04.05.2024

Le développement de la robotique continue de nous ouvrir de nouvelles perspectives dans le domaine de l'automatisation et du contrôle d'objets divers. Récemment, des scientifiques finlandais ont présenté une approche innovante pour contrôler des robots humanoïdes à l'aide de courants d'air. Cette méthode promet de révolutionner la manière de manipuler les objets et d’ouvrir de nouveaux horizons dans le domaine de la robotique. L'idée de contrôler des objets à l'aide de courants d'air n'est pas nouvelle, mais jusqu'à récemment, la mise en œuvre de tels concepts restait un défi. Des chercheurs finlandais ont développé une méthode innovante qui permet aux robots de manipuler des objets à l'aide de jets d'air spéciaux servant de « doigts d'air ». L'algorithme de contrôle du flux d'air, développé par une équipe de spécialistes, repose sur une étude approfondie du mouvement des objets dans le flux d'air. Le système de contrôle du jet d'air, réalisé à l'aide de moteurs spéciaux, permet de diriger des objets sans recourir à des ...>>

Les chiens de race pure ne tombent pas malades plus souvent que les chiens de race pure 03.05.2024

Prendre soin de la santé de nos animaux de compagnie est un aspect important de la vie de tout propriétaire de chien. Cependant, il existe une hypothèse répandue selon laquelle les chiens de race pure sont plus sensibles aux maladies que les chiens mixtes. Une nouvelle recherche menée par des chercheurs de la Texas School of Veterinary Medicine and Biomedical Sciences apporte une nouvelle perspective à cette question. Une étude menée par le Dog Aging Project (DAP) auprès de plus de 27 000 chiens de compagnie a révélé que les chiens de race pure et mixtes étaient généralement également susceptibles de souffrir de diverses maladies. Bien que certaines races puissent être plus sensibles à certaines maladies, le taux global de diagnostic est pratiquement le même entre les deux groupes. Le vétérinaire en chef du Dog Aging Project, le Dr Keith Creevy, note qu'il existe plusieurs maladies bien connues qui sont plus courantes chez certaines races de chiens, ce qui conforte l'idée selon laquelle les chiens de race pure sont plus sensibles aux maladies. ...>>

Nouvelles aléatoires de l'Archive

Amitié à long terme avec les requins 31.01.2024

Des scientifiques de l'Université internationale de Floride, observant un groupe de requins gris, révèlent de nouveaux aspects de leur comportement, montrant que ces prédateurs ont non seulement des traits individuels, mais démontrent également des stratégies d'interaction collective.

La recherche sur le comportement des requins élargit notre compréhension des interactions sociales dans le monde des prédateurs marins. Comprendre la dynamique des communautés de requins peut aider à protéger et à conserver les écosystèmes marins.

Les requins, connus pour leur agressivité, se réunissent en petites communautés après la chasse et entretiennent des liens à long terme entre eux, formant des structures sociales complexes.

L'étude, dirigée par Yiannis Papastamatyou, a examiné le comportement des requins gris sombres près de l'atoll de Palmyra, dans l'océan Indien. À l'aide d'un réseau de 65 microphones, les scientifiques ont suivi les mouvements des requins, révélant leurs préférences individuelles et leurs interactions sociales.

Les résultats de l’étude ont montré que les requins forment des « entreprises » stables et démontrent des préférences pour certains partenaires de la société. Certains individus entretiennent des relations pendant des années et se retrouvent à la base après une chasse.

Bien que le comportement des requins puisse sembler dénué de sens dans le contexte de leur agressivité, cette recherche met en évidence la complexité et la variété des stratégies utilisées par les animaux pour réussir à survivre.

Autres nouvelles intéressantes :

▪ Dispositif de mesure des caractéristiques des matériaux diélectriques et magnétiques

▪ Voiture de course du futur

▪ Porte sur le monde des rêves

▪ Capteur de température TMP117

▪ Un dîner tardif endommage la mémoire

Fil d'actualité de la science et de la technologie, nouvelle électronique

 

Matériaux intéressants de la bibliothèque technique gratuite :

▪ section du site Expériences en chimie. Sélection d'articles

▪ article Junker Schmidt veut se suicider avec un pistolet. Expression populaire

▪ article Pourquoi la curiosité de l'orthographe automatique s'appelle-t-elle l'effet Cupertino ? Réponse détaillée

▪ serveur d'articles. Description de l'emploi

▪ article Tête coaxiale dans le haut-parleur du canal central. Encyclopédie de l'électronique radio et de l'électrotechnique

▪ article Convertisseur de tension réversible. Encyclopédie de l'électronique radio et de l'électrotechnique

Laissez votre commentaire sur cet article :

Nom:


E-mail (facultatif) :


commenter:





Toutes les langues de cette page

Page principale | bibliothèque | Articles | Plan du site | Avis sur le site

www.diagramme.com.ua

www.diagramme.com.ua
2000-2024