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

Qu’est-ce que le PIC ? Encyclopédie de la radioélectronique et de l'électrotechnique. Encyclopédie de la radioélectronique et de l'électrotechnique

Bibliothèque technique gratuite

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

Commentaires sur l'articleCommentaires sur l'article

Introduction. Les PIC16CXX sont des microcontrôleurs RISC 8 bits fabriqués par Microchip Technology. Cette famille de microcontrôleurs se caractérise par un prix bas, une faible consommation d'énergie et une vitesse élevée.

Les microcontrôleurs disposent d'un programme EEPROM intégré, d'une RAM de données et sont disponibles en paquets de 18 et 28 sorties.

Les PIC OTP sont des contrôleurs ponctuels programmables par l'utilisateur, conçus pour des produits entièrement testés et finis qui ne subiront pas d'autres modifications de code. Ces contrôleurs sont disponibles dans des boîtiers en plastique bon marché avec un type prédéfini d'oscillateur externe - quartz ou RC.

Pour le débogage des programmes et le prototypage, une version de contrôleurs avec effacement ultraviolet est disponible. Ces contrôleurs autorisent un grand nombre de cycles d'écriture/effacement et ont un temps d'effacement très court - généralement 1 à 2 minutes.

Cependant, le prix de ces contrôleurs est nettement plus élevé que ceux programmés une fois, il n'est donc pas rentable de les installer en production en série.

Pour les produits dont le programme peut changer ou contient des parties variables, des tableaux, des paramètres d'étalonnage, des clés, etc., un contrôleur PIC16C84 effaçable et reprogrammable électriquement est disponible. Il contient également une ROM de données flashable électriquement. C'est ce contrôleur que nous utiliserons pour les expériences.

Pour tirer le meilleur parti de cet article, vous aurez besoin d'un ordinateur personnel compatible IBM PC, d'un programmateur connecté au port parallèle de l'ordinateur, d'une puce PIC16C84, d'une breadboard, de 8 LED avec résistances, d'une alimentation +5V et d'une prise pour la puce.

Nous allons taper de petits morceaux de logiciel PIC, les assembler, les mettre sur la puce, puis regarder les résultats sur les LED. Nous utiliserons les mnémoniques de base de MICROCHIP dans cet article afin que vous puissiez utiliser plus facilement les autres exemples d'applications et les listes fournies dans le manuel de contrôle intégré.

FAMILLE PIC16CXX Nous commencerons par une description détaillée de la famille de microcircuits PIC avec les caractéristiques et avantages qui distinguent ces microcontrôleurs des autres. Pour les applications de sécurité des données, chaque PIC dispose d'un bit de sécurité qui peut être programmé pour désactiver la lecture du code du programme et de la ROM de données. Lors de la programmation, le code du programme est d'abord écrit, vérifié pour une écriture correcte, puis le bit de sécurité est défini. Si vous essayez de lire la puce avec le bit de sécurité défini, alors pour le PIC16C5X, les 8 bits supérieurs du code seront lus comme 0 et les 4 bits inférieurs seront brouillés 12 bits de la commande. Pour PIC16C84, de même, les 7 bits de poids fort seront lus comme des zéros, et les 7 bits de poids faible représenteront les 14 bits brouillés de la commande. Les données EEPROM PIC16C84 ne peuvent pas être lues lorsque le bit de sécurité est défini. La figure 1 montre tous les microcontrôleurs actuellement produits et donne leurs brèves caractéristiques. (Figure à la page 2-1) La famille de microcontrôleurs PIC dispose d'un jeu d'instructions très efficace composé de seulement 35 instructions. Toutes les instructions sont exécutées en un cycle, à l'exception des sauts conditionnels et des instructions modifiant le compteur du programme, qui sont exécutées en 2 cycles. Un cycle d'exécution d'instruction se compose de 4 cycles d'horloge. Ainsi, à une fréquence de 4 MHz, le temps d'exécution de l'instruction est de 1 µs. Chaque instruction est constituée de 14 bits, divisibles par l'opcode et l'opérande (manipulation possible avec les registres, les emplacements mémoire et les données immédiates). Le jeu de commandes des microcontrôleurs PIC16CXX est illustré à la figure 2. (Tableau 7.2 à la page 2-569) La vitesse élevée d'exécution des commandes dans le PIC est obtenue en utilisant une architecture Harvard à deux bus au lieu de la traditionnelle Von Neumann à bus unique. architecture. L'architecture Harvard est basée sur un ensemble de registres avec des bus séparés et un espace d'adressage pour les instructions et pour les données. Un ensemble de registres signifie que tous les objets logiciels, tels que les ports d'E/S, les cellules mémoire et un temporisateur, sont des registres matériels physiquement implémentés.

La mémoire de données (RAM) du PIC16CXX est de 8 bits, la mémoire de programme (PROM) est de 12 bits pour le PIC16C5X et de 14 bits pour le PIC16CXX. L'utilisation de l'architecture Harvard vous permet d'atteindre une vitesse élevée d'opérations sur les bits, les octets et les registres. De plus, l'architecture Harvard permet l'exécution d'instructions en pipeline, lorsque l'instruction en cours est exécutée et la suivante est lue en même temps. Dans l'architecture traditionnelle de Von Neumann, les commandes et les données sont transférées via un seul bus partagé ou multiplexé, limitant ainsi les possibilités de pipeline. La figure 3 montre un schéma fonctionnel de la structure à double bus PIC16CXX. (Figure B à la page 2-536) Comme vous pouvez le constater, les composants physiques et logiques internes qui composent le PIC16CXX sont similaires à tout autre microcontrôleur avec lequel vous avez pu travailler jusqu'à présent. Par conséquent, écrire des programmes pour le PIC n’est pas plus difficile que pour n’importe quel autre processeur. La logique, et seulement la logique...

Bien entendu, l'architecture Harvard et la grande taille des commandes permettent de rendre le code PIC beaucoup plus compact que pour les autres microcontrôleurs et d'augmenter considérablement la vitesse d'exécution du programme.

PIC REGISTER SET Tous les objets logiciels avec lesquels le PIC peut travailler sont des registres physiques. Pour comprendre le fonctionnement du PIC, vous devez comprendre de quels registres il dispose et comment travailler avec chacun d'eux. La figure 4 montre tous les registres du PIC16C84. (photo 3.7.1 à la p.

2-541) Commençons par un ensemble de registres opérationnels. Cet ensemble comprend le registre d'adresses indirectes (f0), le registre de minuterie/compteur (f1), le compteur de programme (f2), le registre de mots d'état (f3), le registre de sélection (f4) et les registres d'entrée/sortie ( f5,f6).

Il est impératif que vous compreniez comment utiliser ces registres, car ils représentent l'essentiel des objets accessibles par logiciel du microcontrôleur. Puisque nous avons surtout besoin de comprendre « comment gérer » et non « comment cela se fait en interne », nous avons inclus des exemples très simples montrant les utilisations possibles de chaque registre.

f0...REGISTRE D'ADRESSES INDIRECTES IND0 Le registre d'adresses indirectes f0 n'existe pas physiquement. Il utilise le registre de sélection f4 pour sélectionner indirectement l'un des 64 registres possibles.

Toute instruction qui utilise f0 accède en fait au registre de données pointé par f4.

f1... REGISTRE MINUTERIE/COMPTEUR TMR0 Le registre minuterie/compteur TMR0 peut être écrit et lu comme n'importe quel autre registre. TMR0 peut être augmenté par un signal externe appliqué à la broche RTCC, ou par une fréquence interne correspondant à la fréquence de commande.

L'utilisation principale du minuteur/compteur est de compter le nombre d'événements externes et de mesurer le temps. Le signal provenant d'une source externe ou interne peut également être pré-divisé à l'aide du diviseur programmable intégré du PIC.

f2...COMPTEUR DE PROGRAMME PCL Le compteur de programme (PC) est utilisé pour générer une séquence d'adresses de cellules ROM de programme contenant des instructions de 14 bits. Le PC a une capacité de 13 bits, ce qui vous permet d'adresser directement des cellules ROM 8Kx14. Cependant, pour le PIC16C84, seules 1K cellules sont physiquement disponibles. Les 8 bits inférieurs du PC peuvent être écrits et lus via le registre f2, les 5 bits supérieurs sont chargés à partir du registre PCLATCH, qui a l'adresse 0Ah.

f3... REGISTRE D'ÉTAT Le registre de mots d'état est similaire au registre PSW que l'on trouve dans la plupart des microprocesseurs. Il contient les bits de retenue, de retenue décimale et zéro, ainsi que les bits de mode d'activation et les bits de pagination.

f4...REGISTRE DE SÉLECTION FSR Comme déjà mentionné, le registre de sélection FSR est utilisé conjointement avec le registre d'adressage indirect f0 pour sélectionner indirectement l'un des 64 registres possibles. Physiquement impliqués sont 36 registres RAM utilisateur situés aux adresses 0Ch-2Fh et 15 registres de service situés à des adresses différentes.

f5, f6... REGISTRES D'E/S PORTA, PORTB Les registres f5 et f6 correspondent aux deux ports d'E/S disponibles sur le PIC16C84. Le port A dispose de 5 bits PA4-PA0, qui peuvent être programmés individuellement comme entrées ou sorties à l'aide du registre TRISA à l'adresse 85h. Le port B a 8 bits PB7-PB0 et est programmé à l'aide du registre TRISB avec l'adresse 86h. Le réglage 1 dans le bit du registre TRIS programme le bit de port correspondant comme entrée. Lors de la lecture du port, l'état immédiat de la sortie est lu, lors de l'écriture sur le port, l'écriture a lieu dans le registre tampon.

f8, f9... REGISTRES EEPROM EEDATA, EEADR Le PIC16C84 dispose d'une EEPROM intégrée de 64 octets qui peut être lue et écrite à l'aide du registre de données EEDATA et du registre d'adresses EEADR. L'écriture d'un nouvel octet dure environ 10 ms et est contrôlée par une minuterie intégrée. Le contrôle de l'écriture et de la lecture s'effectue via le registre EECON1, qui porte l'adresse 88h. Pour un contrôle supplémentaire sur l'enregistrement, le registre EECON2, qui porte l'adresse 89h, est utilisé.

REGISTRES À USAGE GÉNÉRAL Les registres à usage général sont des RAM statiques situées aux adresses 0Ch-2Fh. Un total de 16 cellules RAM peuvent être utilisées dans le PIC84C36.

REGISTRES SPÉCIAUX W, INTCON, OPTION Enfin, regardons les registres spéciaux PIC. Ceux-ci incluent le registre de travail W, utilisé comme registre accumulateur dans la plupart des commandes, ainsi que les registres INTCON et OPTION. Le registre d'interruption INTCON (adresse 0Bh) est utilisé pour contrôler les modes d'interruption et contient des bits d'activation d'interruption provenant de diverses sources et des indicateurs d'interruption. Le registre de mode OPTION (adresse 81h) est utilisé pour définir les sources de signaux pour le pré-échelonneur et le temporisateur/compteur, ainsi que pour définir le facteur de division du pré-échelonneur, le front actif du signal pour RTCC et l'entrée d'interruption. De plus, à l'aide du registre OPTION, les résistances de terminaison peuvent être activées pour les bits du port B programmés comme entrées.

WDT WDT Watchdog Le chien de garde WDT est conçu pour éviter les conséquences catastrophiques d'échecs accidentels de programmes. Il peut également être utilisé dans des applications de synchronisation telles qu'un détecteur d'impulsions manquées. L'idée d'utiliser une minuterie de surveillance est de la réinitialiser régulièrement sous le contrôle d'un programme ou d'une influence externe avant que son délai n'expire et que le processeur ne se réinitialise. Si le programme fonctionne normalement, l'instruction de réinitialisation du chien de garde CLRWDT doit s'exécuter régulièrement pour empêcher la réinitialisation du processeur. Si le microprocesseur dépasse accidentellement les limites du programme (par exemple, à cause d'une forte interférence dans le circuit d'alimentation) ou reste bloqué dans une partie du programme, la commande de réinitialisation du chien de garde ne sera probablement pas exécutée dans un délai suffisant, et une réinitialisation complète du processeur se produira, initialisant tous les registres et mettant le système en état de fonctionnement.

La minuterie de surveillance du PIC16C84 ne nécessite aucun composant externe et fonctionne sur l'oscillateur RC intégré, et la génération ne s'arrête pas même en l'absence de fréquence d'horloge du processeur. La période de surveillance typique est de 18 ms. Vous pouvez connecter un préscaler au minuteur de surveillance et augmenter sa période jusqu'à 2 secondes.

Une autre fonction de la minuterie de surveillance est d'allumer le processeur à partir du mode faible consommation, dans lequel le processeur est transféré par la commande SLEEP. Dans ce mode, le PIC16C84 consomme très peu de courant – environ 1 µA. Vous pouvez passer de ce mode au mode de travail soit par un événement externe d'appui sur un bouton, de déclenchement d'un capteur, soit par une minuterie de surveillance.

GÉNÉRATEUR D'HORLOGE Quatre types de générateur d'horloge peuvent être utilisés pour les microcontrôleurs de la famille PIC : Résonateur à quartz XT Résonateur à quartz haute fréquence HS Processus de programmation de puce de circuit RC à micro-consommation LP. Si les options XT, HS et LP sont définies, un résonateur à quartz ou en céramique ou une source d'horloge externe est connecté au microcircuit, et si l'option RC est définie, une résistance et un condensateur sont connectés. Bien sûr, un résonateur en céramique et, en particulier, à quartz est beaucoup plus précis et stable, mais si une précision de synchronisation élevée n'est pas nécessaire, l'utilisation d'un générateur RC peut réduire le coût et la taille de l'appareil.

CIRCUIT DE RÉINITIALISATION La famille de microcontrôleurs PIC utilise un circuit de réinitialisation à la mise sous tension interne en combinaison avec une minuterie de démarrage d'oscillateur, éliminant ainsi le besoin d'une résistance et d'un condensateur traditionnels dans la plupart des situations.

Connectez simplement l'entrée MCLR à une source d'alimentation. Si des surtensions ou des surtensions sont susceptibles de se produire lors de la mise sous tension, il est préférable d'utiliser une résistance série 100-300 ohms. Si la montée en puissance est très lente (moins de 70 ms) ou si vous travaillez à des vitesses d'horloge très faibles, un circuit traditionnel de réinitialisation de résistance et de condensateur doit être utilisé.

DE LA THÉORIE À LA PRATIQUE...

Nous avons brièvement pris connaissance des principaux éléments qui composent les microcontrôleurs de la famille PIC. Passons maintenant aux exercices pratiques.

Nous allons écrire des programmes courts, les assembler, les écrire dans un microcircuit et voir ce qui se passe.

Pour ce faire, nous avons besoin des éléments suivants : - puce PIC16C84 ; - assembleur MPALC ; - Programmeur PROPIC ; - alimentation en courant continu ou alternatif 18-36 V ; - carte de prototypage avec dispositif d'affichage.

Le schéma de principe du dispositif d'affichage, que nous utiliserons pour démontrer le fonctionnement des commandes de base du PIC16C84, est présenté dans la figure 5. (doit être dessiné) Comme vous pouvez le voir, le dispositif se compose simplement de 8 LED avec des résistances de limitation de courant et des éléments de réglage de fréquence. Chaque sortie des microcontrôleurs de la famille PIC peut contrôler directement la LED sans amplificateurs supplémentaires.

Qu'est-ce que le PIC ?

Commençons par décrire le code de base qui sera utilisé dans nos exemples. Lorsque vous commencez à écrire du code pour votre projet, la section d'en-tête (tout le code jusqu'à la ligne ORG 0) doit être spécifique à votre application. La section d'en-tête définit les noms logiques de toutes les ressources utilisées dans le projet - ports, variables de bits et d'octets et registres. Notre en-tête définit également les ports d'E/S de sorte que tous les bits des ports A et B soient définis comme sorties après l'exécution des commandes suivantes : MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB À la mise sous tension, le PIC16C84 définit tous les bits de ports A et B pour entrer et commencer à exécuter le programme à partir de l'adresse 000h. Le code de base est présenté dans la figure 6. (besoin de dessiner) Quelque chose comme ceci : ; Exemple de code de base pour le programme de démonstration ; LISTE P=16C84, E=2 ; ; Section d'en-tête ; ; description des registres de fonctionnement TMR0 EQU 01h PC EQU 02h STATUS EQU 03h FSR EQU 04h ; Registres d'E/S CNTRLPORT EQU 05h DATAPORT EQU 06h ; Emplacements RAM SCRATCH EQU 0Ch DIGIT EQU 0Dh ; bits de registre STATUS C EQU 0h DC EQU 1h Z EQU 2h PD EQU 3h TO EQU 4h RP EQU 5h ; registres de contrôle TRISA EQU 85h TRISB EQU 86h ; mots d'initialisation des ports d'E/S INITA EQU B'00000000' INITB EQU B'00000000' ; ; Section de travail ; ; début du code exécutable ORG 0 GOTO BEGIN ; ORG 100h BEGIN MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB ; ; Collez l'exemple de code ici ; FIN ; Reportez-vous à la figure 4 si nécessaire pendant que nous discutons du code de base. Premièrement, toutes les lignes commençant par ";" sont traitées comme des commentaires par l'assembleur. Passons à l'expression TMR0. Nous avons dit à l'assembleur qu'à chaque fois que le mot TMR0 est rencontré, il doit le remplacer par la valeur 01h (01 hex). Le mot « EQU » signifie égalité. Ainsi, nous avons attribué à TMR0 la valeur 1h. Comme vous pouvez le voir sur la figure 4, le registre TMR0 a effectivement l'adresse 1h. Vous pouvez utiliser 01h à chaque fois que vous souhaitez adresser le registre TMR0, mais cela sera beaucoup plus difficile à déboguer car vous devez vous rappeler que 01h signifie RTCC tout le temps. Vous pouvez également avoir des données égales à 01h. L'utilisation de noms symboliques élimine toute ambiguïté et facilite la lecture du texte source. Vous pouvez également voir les expressions pour les registres PC, STATUS et FSR. Le nom PC correspond à l'adresse du registre 02h, le nom STATUS correspond à l'adresse du registre 03h, le nom FSR correspond à l'adresse du registre 04h, et ainsi de suite. Nous avons également donné des noms aux ports d'E/S, CNTRLPORT (05h) et DATAPORT (06h). Les cellules RAM peuvent également avoir des noms. Nous avons choisi les noms "SCRATCH" pour la cellule à 0Ch et "DIGIT" pour la cellule à 0Dh. Si vous lisez jusqu'à la fin de ce texte, vous verrez que nous n'utilisons le PC directement nulle part, bien que ce nom soit défini. Il n'y a pas d'erreur à cela - vous pouvez définir des noms et ne pas les utiliser, même si, bien sûr, vous ne pouvez pas utiliser un nom s'il n'a pas été défini au préalable. Ne vous inquiétez pas trop : le travail de l'assembleur consiste à vérifier le texte par rapport à toutes les règles, et vous recevrez des messages d'erreur si quelque chose ne correspond pas. Non seulement vous pouvez nommer des registres, mais vous pouvez également nommer des bits individuels dans les registres. Notez la section qui définit le registre STATUS. La figure 7 montre en quoi consiste le registre STATUS. (Figure 3.9.1 à la page 2-544) Le symbole C est défini sur 0h car C, ou CARRY, est le bit zéro du mot d'état STATUS. Chaque fois que nous aurons besoin de vérifier le bit CARRY (bit 0), nous utiliserons le caractère prédéfini "C". Chaque fois que nous voudrons accéder au bit 2, ou au bit ZÉRO, nous utiliserons le caractère "Z" au lieu de 02h. Vous pouvez définir la structure complète des bits d'un registre, même si vous ne les utilisez pas tous par la suite. Nous comprenons maintenant comment les registres sont décrits et nous pouvons passer au code exécutable. Avant de démarrer le code exécutable, nous devons définir l'expression ORG sur 0. Il s'agit d'un pointeur vers l'assembleur que le code suivant cette expression commence à l'adresse EEPROM zéro. L'expression « ORG » est utilisée pour attribuer des segments de code à différentes adresses dans la taille de l'EEPROM. Une autre expression ORG se produit avant l'étiquette BEGIN à l'adresse 100h, telle que donnée par l'expression ORG 100h. Le code exécutable doit se terminer par une directive END, ce qui signifie qu'aucune commande exécutable ne suit cette directive. A la mise sous tension, le PIC16C84 passe à l'adresse 000h. La première instruction à exécuter par le processeur est la commande GOTO BEGIN, qui transférera le contrôle à l'adresse 100h et la suite des travaux se poursuivra à partir de cette adresse. BEGIN est un nom d'étiquette sélectionnable par l'utilisateur (les étiquettes doivent toujours commencer à la première position de la ligne) que l'assembleur utilise comme référence. Pendant le fonctionnement, l'assembleur détermine l'emplacement du label BEGIN et se souvient que si ce nom est rencontré à nouveau, l'adresse du label lui sera substituée. Les commandes CALL et GOTO utilisent des étiquettes pour les liens dans le texte source. Examinons maintenant les commandes suivantes exécutées par le processeur. L'instruction MOVLW INITA charge la valeur affectée au nom INITA dans le registre de travail W. Cette valeur est précisée dans l'en-tête et est égale à B'00000000', soit 00h. Les caractères B' signifient que les données sont données au format binaire. On pourrait écrire 0 (décimal) ou 0h (hexadécimal) au même endroit et obtenir le même résultat. La représentation binaire est plus pratique à utiliser dans les cas où une opération avec des bits dans un registre est attendue. L'instruction MOVWF TRISA suivante charge la valeur du registre de travail W dans le registre de contrôle de configuration du port TRISA A. La mise à 0 d'un bit de ce registre spécifie que le bit du port A correspondant est une sortie. Dans notre cas, tous les bits du port A sont définis par des sorties. Notez que le port A n'a que 5 bits et que les 3 bits supérieurs de la valeur écrite dans le registre TRISA, qui a également 5 bits, ne sont pas utilisés. Si nous voulions, par exemple, définir le bit faible du port A comme entrée, nous définirions la valeur d'INITA sur B'00000001' dans la section de description du registre. Si au cours du programme nous devons redéfinir l'affectation des bits de port individuels, par exemple lors d'une transmission bidirectionnelle, il est alors plus pratique de spécifier tous les mots de configuration nécessaires dans la section de description, comme nous l'avons fait pour INITA et INITB. Les deux commandes suivantes MOVLW INITB et MOVWF TRISB définissent la configuration du port B. Nous pourrions économiser de l'argent en n'écrivant pas la commande MOVLW INITB, car dans notre cas, INITB vaut également 0h. Cependant, nous ne l'avons pas fait, car cela peut conduire à des erreurs difficiles à détecter si nous devons ensuite modifier l'affectation d'un bit. Au lieu de changer un seul bit sur un port, deux bits portant le même numéro sur deux ports changeront. Par conséquent, tant que le programme n'est pas terminé, il n'est pas souhaitable de réaliser de telles économies, même si à la fin, au stade de l'optimisation du code, ces répétitions peuvent être supprimées. Qu'avons-nous déjà fait ? 1. Avec les lignes EQU, nous indiquions à l'assembleur quels noms de symboles nous allions utiliser. 2. Nous avons défini le vecteur de réinitialisation sur l'adresse 000h. 3. Nous avons fixé l'adresse de début de l'exécution du programme du label BEGIN à l'adresse 100h. 4. Nous avons configuré tous les bits des ports A et B comme sorties. Nous pouvons désormais insérer l'exemple de code entre l'en-tête et la fin de notre code de base au lieu de la ligne commentée "Insérer un exemple de code ici". Nous allons remplacer cette ligne par de vraies commandes, assembler le programme résultant, l'écrire sur un microcircuit, réorganiser le microcircuit sur une carte de prototypage avec un dispositif d'indication et voir ce qui se passe. PREMIER PROGRAMME Pour le premier programme, nous n'avons besoin que de trois commandes : MOVLW k MOVWF f GOTO k Nous avons déjà utilisé ces commandes dans l'en-tête de notre code de base. L'instruction MOVLW charge un littéral d'octet ou une constante dans le registre de travail W. L'instruction MOVWF suivante déplace un octet du registre de travail W vers le registre f donné. La commande GOTO transfère le contrôle à l'adresse k. Le programme suivant écrit la valeur 01010101 dans le registre de travail W puis écrit son contenu sur le port B. Après avoir démarré ce programme, vous verrez la lueur de quatre LED. MOVLW B'01010101' ;charger 01010101 dans le registre W MOVWF DATAPORT ;écrire W dans le port B (DATAPORT) GOTO $ ;boucler pour toujours La directive assembleur "$" signifie la valeur actuelle du compteur de programme (PC). Par conséquent, la commande GOTO $ signifie sauter là où nous nous trouvons actuellement. Une telle boucle est infinie, puisqu’il n’y a aucun moyen (autre que l’interruption) d’en sortir. La commande GOTO $ est souvent utilisée pour arrêter le code pendant le débogage. ASSEMBLAGE Nous utiliserons le macro assembleur MPALC, car il est distribué gratuitement par MICROCHIP et contient toutes les fonctionnalités dont nous avons besoin. Si vous préférez utiliser un autre assembleur, utilisez sa description pour assembler notre programme. La ligne de commande pour exécuter l'assembleur de macros MPALC est très simple : MPALC <texte_source> [options] où <texte_source> est le nom du fichier contenant le texte source à assembler, et il peut y avoir pas mal d'options. La description complète des options est donnée par l'assembleur sur l'option /? Au début, nous n’avons pas besoin de spécifier d’options. La seule chose qu'il nous reste à faire est de spécifier le type de processeur pour lequel notre programme est écrit et le type d'erreurs que l'assembleur doit produire. Cela se fait à l'aide de la directive assembleur LIST (Fig. 6). L'extension du fichier source par défaut est .ASM. Une autre extension doit être spécifiée explicitement. Alors, prenons le fichier EXAMPLE.ASM contenant le texte montré dans la figure 6 et exécutez l'assembleur : MPALC EXAMPLE À la suite de l'assembleur, des fichiers avec les extensions suivantes sont créés : * Fichier objet OBJ * Fichier de liste LST * Erreur ERL et fichier d'avertissement * Fichier de symboles SYM Le fichier objet est créé au format hexadécimal et contient du code qui doit être écrit sur la puce. Le fichier de liste contient la liste complète du programme ainsi que le code de démarrage. Le fichier d'erreurs et d'avertissements enregistre toutes les erreurs et avertissements qui se produisent pendant le processus d'assemblage. Ils sont également présents dans le fichier listing. Le tableau des étiquettes symboliques, qui est écrit dans un fichier symbolique, est destiné à un travail ultérieur avec le débogueur. Après avoir traité notre programme, l'assembleur aurait dû émettre le message "Aucune erreur n'a été trouvée par l'assembleur", ce qui signifie qu'aucune erreur n'a été trouvée. Le fichier d'erreur ne doit pas avoir été créé. Si votre assembleur a généré des messages d'erreur ou si les fichiers EXAMPLE.OBJ, EXAMPLE.LST et EXAMPLE.SYM n'ont pas été créés, vérifiez à nouveau si vous avez tout fait correctement. PROGRAMMATION Vous disposez maintenant d'un fichier objet, EXAMPLE.OBJ, qui doit être écrit sur la puce. L'enregistrement s'effectue à l'aide du programmateur et du programme PROPIC. La ligne de commande pour exécuter le programme PROPIC est similaire à la ligne pour exécuter l'assembleur : PROPIC <object_file> [options] où <object_file> est le nom du fichier objet créé par l'assembleur et les options déterminent le mode d'écriture dans la puce. La liste des options est donnée par l'option /? Comme dans le cas de l’assembleur, au début nous n’avons pas besoin de spécifier d’options. Prenez le programmateur, connectez son câble au connecteur du port imprimante (au premier port imprimante si votre machine possède 2 ou 3 ports imprimante).

Qu'est-ce que le PIC ? Qu'est-ce que le PIC ?

Prenez une alimentation 18...36 V DC ou AC capable de fournir jusqu'à 100 mA et connectez-la au programmateur. Préparez la puce PIC16C84, mais ne l'insérez pas encore dans la prise du programmateur. Vous pouvez maintenant démarrer le programmeur :

EXEMPLE PROPIC { doit être inséré ici sur le fonctionnement du programme du programmeur. } Vous avez maintenant une puce programmée et vous pouvez voir comment elle fonctionnera. ESSAI

Prenez une planche à pain et assemblez dessus le circuit illustré à la figure 5. Il n'y a aucune pièce critique dans ce circuit. Toutes les résistances peuvent présenter un écart par rapport à la valeur nominale de + -30 %, les LED - toutes avec un courant nominal ne dépassant pas 10 mA. Pour installer la puce PIC16C84, utilisez le socket. Pour alimenter notre circuit, vous pouvez utiliser la même alimentation que celle que vous avez utilisée lors de la programmation du microcircuit. Vous pouvez également utiliser une alimentation de laboratoire de 5 V. Dans ce cas, le stabilisateur KR142EH5A, le pont de diodes et le condensateur électrolytique ne sont pas nécessaires et une tension de 5 V est fournie au point 2 du schéma.

Une fois le circuit assemblé, vérifiez soigneusement que tout est correctement assemblé, que les LED sont installées dans la bonne polarité, que l'alimentation du microcircuit arrive aux bonnes broches et dans la bonne polarité. Prenez la puce programmée, insérez-la dans la prise de la planche à pain et mettez sous tension. 4 LED doivent s'allumer (après une). Votre premier programme fonctionne ! JEU DE COMMANDES PIC

Maintenant que vous avez appris à assembler un programme, à l'écrire sur une puce et à le tester sur une maquette, nous pouvons décrire l'ensemble des instructions pour les microcontrôleurs de la famille PIC. Nous continuerons à nous concentrer sur le PIC16C84, même si presque tout ce dont nous parlerons est applicable aux autres microcontrôleurs de la famille PIC. Au cours de la description, nous réaliserons des programmes courts afin de mieux comprendre le fonctionnement de certaines commandes. Vous pouvez brancher ces programmes dans le code de base, les assembler, les mettre sur une puce, brancher la puce sur une maquette et voir comment elle fonctionne. Si tout est absolument clair pour vous dans le paragraphe suivant, vous ne pouvez pas l'essayer, mais passer directement au paragraphe suivant. NON

Commençons notre description par la commande NOP. Il est difficile de voir le résultat de cette commande car elle ne fait rien. Cette instruction est généralement utilisée dans les boucles de temporisation ou pour affiner le temps d'exécution d'une section particulière du programme. CLRW

Cette commande efface le registre de travail W. Ajoutons une ligne à notre exemple et voyons que toutes les LED s'allument.

MOVLW B'01010101' ; charger 01010101 dans le registre W

CLRW ; effacer le registre W

MOVWF DATAPORT ; écrire W sur le port B (DATAPORT)

GOTO $ ;boucle pour toujours CLRF f

CLRF fait pour n'importe quel registre ce que CLRW fait pour le registre de travail W. La commande suivante définira le port B sur 0h.

CLRF DATAPORT ; effacer le port B (DATAPORT) SUBWF f,d ADDWF f,d

Soustrayez le registre de travail W de n’importe quel registre f. Cette commande définit également les indicateurs CARRY, DIGIT CARRY et ZERO dans le registre STATUS. Après avoir exécuté la commande, vous pouvez vérifier ces signes et déterminer si le résultat est nul, positif ou négatif. Le caractère d après la virgule signifie l'adresse où sera placé le résultat de la commande. Si d=0, alors le résultat est placé dans le registre de travail W, et si d=1, alors le résultat est écrit dans le registre f utilisé dans la commande.

Dans notre exemple, la valeur 0FFh est chargée dans le registre SCRATCH, et la valeur 01h est chargée dans le registre W. Ensuite, la commande SUBWF est exécutée et le résultat est affiché sur les LED.

MOVLW 0FFh ; charger 0FFh dans le registre W

MOVWF SCRATCH ; charger le contenu de W dans le registre SCRATCH

MOVLW 01h ; charger 01h dans le registre W

SUBWF SCRATCH,0 ; les LED de soustraction doivent afficher 11111110 où 1 est éteint et 0 est allumé.

La commande ADDWF fonctionne exactement de la même manière, en ajoutant le registre de travail W à n'importe quel registre f et en définissant les mêmes indicateurs. L'exemple suivant montre le fonctionnement de la commande ADDWF.

MOVLW 0h ; charger 0 dans le registre W

MOVWF SCRATCH ; charger le contenu de W dans le registre SCRATCH

MOVLW 1h ; charger 01h dans le registre W

ADDWF SCRATCH,0 ; les LED supplémentaires doivent afficher 00000001.

Notez qu'il y a un "0" devant la valeur FFh dans l'exemple de soustraction. Le symbole "0" pour assembleur signifie qu'il s'agit d'un nombre et non d'une étiquette. S'il n'y avait pas de symbole 0, l'assembleur commencerait à rechercher une étiquette portant le nom FFh, qui n'existe pas dans ce programme et, par conséquent, une erreur se produirait. le caractère "h" qui suit la valeur 0FF signifie que la valeur est spécifiée au format hexadécimal. SUBLW k ADDLW k

Ces deux commandes fonctionnent exactement de la même manière que celle décrite ci-dessus, sauf que l'opération est effectuée entre le registre de travail W et la constante d'octet spécifiée dans la commande. La commande SUBLW soustrait le registre de travail W de la constante k et la commande ADDLW ajoute le registre de travail W à la constante k. Ces commandes définissent également les indicateurs CARRY, DIGIT CARRY et ZERO. Le résultat de la commande est placé dans le registre de travail W. L'exemple suivant décrémentera SCRATCH de 5.

MOVLW 0FFh ; charger 0FFh dans le registre W

MOVWF SCRATCH ; charger le contenu de W dans le registre SCRATCH

SUBLW 05h ;soustraire 5 du registre de travail

MOVWF SCRATCH ; le nouveau contenu des LED SCRATCH doit afficher 11111010. DECF f,d INCF f,d

La commande DECF décrémente le registre donné de 1 et INCF incrémente le registre donné de 1. Le résultat peut être replacé dans le registre donné (pour d=1) ou dans le registre de travail W (pour d=0). Suite à l'exécution de ces commandes, le signe ZÉRO peut être défini dans le registre STATUS. Voici un exemple d'utilisation de ces commandes :

MOVLW 0FFh ; charger 0FFh dans le registre W

MOVWF SCRATCH ; charger le contenu de W dans le registre SCRATCH

DECF SCRATCH,0 ;décrémenter SCRATCH de 1

Cet exemple incrémentera SCRATCH de 0 à 1.

CLRF SCRATCH ; effacer SCRATCH

INCF SCRATCH,0 ;Incrémente SCRATCH de 1 IORWF f,d ANDWF f,d XORWF f,d

Ces trois commandes effectuent des opérations logiques OU, ET et OU EXCLUSIF. L'opération d'addition logique OU est le plus souvent utilisée pour définir des bits individuels dans des registres. Ces bits sont ensuite réinitialisés par une opération logique ET. Lorsqu'une opération OU EXCLUSIF est effectuée sur des bits identiques, le résultat est 0. Par conséquent, l'opération OU EXCLUSIF est souvent utilisée pour vérifier l'état (à 1 ou à XNUMX) de certains bits dans un registre. La procédure suivante définira le bit XNUMX sur le port B à l'aide de la commande IORWF :

PORT DE DONNÉES CLRF ; effacer le port B

MOVLW B'00000010' ; définir le masque dans le registre W

IORWF DATAPORT,1 ; définir les bits dans le port B par le masque W

GOTO $ ;loop Forever Les LED doivent afficher 00000010. Effacez maintenant 2 bits avec l'instruction ANDWF :

MOVLW B'11111111' ; Charger 0FFh dans le registre W

MOVWF DATAPORT ; définit tous les bits du port B

MOVLW B'00000101' ; définir le masque dans le registre W

ANDWF DATAPORT,1 ; efface les bits du port B par le masque W

GOTO $ ;loop Forever Les LED devraient afficher 00000101.

Disons que nous avons utilisé le registre SCRATCH et que nous voulons savoir s'il est égal à 04h. C'est le bon moment pour utiliser la commande XORWF :

MOVLW 04h ; charger 04h dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

XORWF SCRATCH,0 ; vérifier si W et SCRATCH sont égaux Puisque SCRATCH et W sont égaux, le résultat de l'opération XORWF est nul (toutes les LED sont allumées). Le registre STATUS définira le bit ZÉRO, que le programme réel pourra ensuite vérifier et traiter. IORLW k ANDLW k XORLW k

Ces trois commandes effectuent les mêmes actions que leurs homologues décrites ci-dessus, sauf que l'opération est effectuée entre le registre de travail W et le masque spécifié dans la commande. Le résultat de l'exécution de la commande est placé dans le registre de travail W. Par exemple :

MOVLW 0FFh ; charger 0FFh dans le registre W

ANDLW 040h ; laisser les LED du 6ème bit affichera 01000000.

MOVLW 10h ; charger 10h dans le registre W

IORLW 09h ; les bits définis 0 et 3 LED afficheront 00011001.

MOVLW B'00100000' ; charger 40h dans le registre W

XORLW B'11111111' ; les LED W inversées affichent 11011111. MOVF f, d

Cette commande est principalement utilisée pour déplacer un registre vers le registre de travail W (d=0). Si vous définissez d=1, alors cette commande chargera le registre dans lui-même, mais le bit ZÉRO dans le registre STATUS sera défini conformément au contenu du registre. Par exemple, nous souhaitons charger 0Fh dans le registre SCRATCH, puis charger le registre SCRATCH dans le registre de travail W.

MOVLW 0Fh ; Charger 0Fh dans le registre de travail W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

CLRW ; effacer W

MOVF SCRATCH,0 ; Charger SCRATCH dans le registre W

MOVF SCRATCH,1 Le bit ZÉRO du registre STATUS sera mis à 0 si la condition est remplie (SCRATCH = XNUMXh). COMFf,d

Cette commande inverse n'importe quel registre donné. Lorsque d=0, le résultat est inscrit dans le registre de travail W, et lorsque d=1, le contenu du registre spécifié est inversé. A titre d'exemple, inversons la valeur 01010101 :

MOVLW B'01010101' ; charger 01010101 dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

COMF SCRATCH,0 ; les LED SCRATCH inversées afficheront 10101010. DECFSZ f,d INCFSZ f,d

Au fur et à mesure que vous acquerrez une certaine expérience avec l’assembleur PIC, vous utiliserez ces commandes très souvent. Avec d=1, l'instruction DECFSZ décrémente de un, et INCFZ incrémente le registre spécifié de un et saute l'instruction suivante si le registre devient zéro. Avec d=0, le résultat est écrit dans le registre W et la commande suivante est ignorée si le registre de travail W devient nul. Ces commandes permettent de générer des temporisations, des compteurs, des boucles, etc. Voici un exemple typique d'utilisation d'une boucle : START

MOVLW 0FFh ; charger FFh dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH LOOP

DECFSZ SCRATCH,1 ;décrémenter SCRATCH de 1

GOTO LOOP ; et boucle en arrière jusqu'à = 0

MOVF DIGIT ; charger le registre DIGIT dans W

PORT DE DONNÉES MOVWF ; sortie vers les LED

DECF DIGIT,1 ; décrémente le registre DIGIT de 1

GOTO START ;aller au démarrage En conséquence, les LED clignoteront à des rythmes différents. La LED de poids faible clignotera le plus souvent et la LED de poids fort clignotera le moins. Avec une fréquence d'horloge de 4 MHz, la fréquence de clignotement de la LED d'ordre le plus élevé sera d'environ 8 Hz, et chacune des suivantes clignotera deux fois plus souvent. Voyons maintenant comment nous avons procédé. La commande DECFSZ fonctionne ici dans une boucle de retard composée de deux commandes - DECFSZ et GOTO LOOP. Parce que nous avons préchargé le registre SCRATCH avec 0FFh, cette boucle s'exécutera 255 fois jusqu'à ce que SCRATCH devienne zéro. Avec une fréquence d'horloge de 4 MHz, cela donne un retard de 1 µs/instruction * 2 instructions * 255 = 510 µs. Dans le registre DIGIT, nous n'avons rien écrit au préalable, il peut donc y avoir n'importe quelle valeur qui s'affiche sur les LED au premier passage. Ensuite, le registre DIGIT est décrémenté de 1 et la boucle se répète depuis le début. En conséquence, le registre DIGIT parcourt toutes les valeurs en 256 cycles, c'est-à-dire pendant environ 130 ms.

Le même code peut être utilisé avec l'instruction INCFSZ en modifiant la valeur chargée dans le registre SCRATCH de FFh ​​à 0h. Les LED clignoteront de la même manière si la commande DECF est remplacée par la commande INCF. SWAF f,d

Cette commande échange les quartets dans n'importe quel registre. Comme pour les autres commandes, lorsque d=0 le résultat est écrit dans le registre de travail W, et lorsque d=1 reste dans le registre. Voici un exemple simple d'utilisation de cette commande :

MOVLW B'00001111' ; charger 0Fh dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

SWAPF SCRATCH,0 ; les LED des quartets d'échange afficheront 11110000. RRF f,d RLF f,d

Il existe deux instructions de décalage dans l'assembleur PIC : un décalage vers la droite via le bit CARRY de n'importe quel registre RRF et un décalage vers la gauche via le bit CARRY de n'importe quel registre RRF. Comme pour les autres commandes, lorsque d=0 le résultat du décalage est écrit dans le registre W, et lorsque d=1 reste dans le registre. Les instructions de décalage sont utilisées pour effectuer des opérations de multiplication et de division, pour le transfert de données en série et à d'autres fins. Dans tous les cas, le bit décalé hors du registre de 8 bits est écrit dans le bit CARRY du registre STATUS, et le bit CARRY est écrit à l'autre extrémité du registre, en fonction du sens du décalage. Le décalage à gauche écrit RLF CARRY dans le bit le moins significatif du registre, et le décalage à droite écrit RRF CARRY dans le bit le plus significatif du registre.

STATUT CLRF ; effacer le registre STATUT

MOVLW 0FFh ; charger 0FFh dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

RRF SCRATCH,0 ;shift right Les LED doivent afficher 01111111 car CARRY a été chargé dans le bit haut. Passons maintenant à gauche :

STATUT CLRF ; effacer le registre STATUT

MOVLW 0FFH ; charger 0FFh dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH

RLF SCRATCH,1 ; les LED de décalage vers la gauche doivent afficher 11111110. BCF f,b BSF f,b

Les commandes Clear BCF Bit et Set BSF Bit sont utilisées pour opérer sur des bits individuels dans les registres. Le paramètre b désigne le numéro de bit avec lequel l'opération est effectuée, et peut prendre des valeurs de 0 à 7. Essayons d'allumer la LED à l'aide de la commande BCF :

MOVLW 0FFh ; charger 0FFh dans le registre W

PORT DE DONNÉES MOVWF ; éteindre les LED

BCF DATAPORT,7 ;effacer le bit 7 dans le port B

GOTO $ ;loop Forever Cela allumera la LED correspondant au bit 7. Rappelons que nous avons fait la même chose avec l'utilisation d'un masque et de la commande ANDWF. La différence est que les instructions ANDWF et IORWF nécessitent que le masque soit préformé et stocké dans un registre, mais en même temps elles sont capables de définir ou d'effacer plusieurs bits en même temps. Les instructions BCF et BSF fonctionnent sur un seul bit. De plus, les instructions BCF et BSF ne modifient pas le registre STATUS, elles sont donc souvent utilisées dans les cas où une vérification ultérieure du registre d'état n'est pas requise. BTFSC f,b BTFSS f,b

Les instructions de saut conditionnel BTFSC et BTFSS vérifient l'état d'un bit donné dans n'importe quel registre et sautent l'instruction suivante en fonction du résultat. La commande BTFSC ignore la commande si le bit spécifié est clair et la commande BTFSS s'il est défini. Voici un exemple simple :

MOVLW 0FFh ; charger 0FFh dans le registre W

PORT DE DONNÉES MOVWF ; éteindre les LED

MOVLW B'00000001' ; charger 01h dans le registre W

MOVWF SCRATCH ; charger le registre W dans SCRATCH LOOP

BTFSS CNTRLPORT,0 ;vérifie le bit 0 dans CNTRLPORT

GOTO LOOP ; attendez que le bit 0 soit activé

BCF DATAPORT,7 ; allumer la LED

GOTO $ ;loop Forever Cet exemple vérifie le bit 0 du port A (broche 17 de la puce) et, si cette broche est réglée à un niveau haut, allume la LED. Essayez de remplacer BTFSS par BTFSC dans cet exemple. La LED s'allumera lorsque le bit 0 du port A deviendra faible.

Nous avons évoqué plus tôt la possibilité de vérifier les bits d'état dans le registre STATUS. Cela se fait également avec les commandes BTFSS et BTFSC :

;Vérifiez le bit CARRY

BTFSS STATUS,C ; si C est défini, ignorer GOTO

ALLER OÙ_JAMAIS ; Le bit ZÉRO est vérifié de la même manière :

;Vérifier le bit ZÉRO

BTFSS STATUS,Z ; si Z est défini, ignorer GOTO

ALLER OÙ_JAMAIS ; On peut affirmer sans se tromper que vous utiliserez ces exemples très souvent. APPEL k RETOUR

Ces deux commandes sont destinées à travailler avec des sous-programmes. La commande CALL est utilisée pour accéder au sous-programme à l'adresse spécifiée dans la commande, et la commande RETURN est utilisée pour revenir du sous-programme. Les deux commandes sont exécutées en 2 cycles. L'adresse à laquelle se trouvait la commande CALL est stockée dans des registres spécialement organisés appelés pile. Ces registres ne sont pas accessibles et sont utilisés uniquement pour les appels et les retours de sous-programmes. Profondeur de pile, c'est-à-dire le nombre de registres spéciaux est de 8. Par conséquent, pas plus de 8 appels de sous-programmes imbriqués ne peuvent être effectués à partir du programme principal. Après le retour du sous-programme, l'exécution continue avec l'instruction suivante après le CALL. Le registre W et le registre STATUS ne sont pas sauvegardés lorsqu'un sous-programme est appelé, donc si nécessaire, ils peuvent être stockés dans des emplacements mémoire séparés. Voici un exemple simple d'utilisation d'un sous-programme : START

BSF DATAPORT,7 ; éteindre la LED

CALL TURNON ; appeler le sous-programme

GOTO START ; aller au démarrage de TURNON

BCF DATAPORT,7 ; allumer la LED

RETURN ; retour du sous-programme En conséquence, la LED clignotera à une fréquence d'environ 150 kHz. RETLW à RETFIE

Il existe deux autres commandes pour revenir des sous-programmes. La commande RETLW renvoie dans le registre de travail W la constante spécifiée dans cette commande, et la commande RETFIE active les interruptions. La commande RETLW est souvent utilisée pour créer des tables de valeurs. Laissez le registre de travail W contenir un décalage par rapport au début du tableau. Ensuite, vous pouvez obtenir l'élément souhaité par la procédure suivante :

MOVLW 02h ; définir le décalage

CALL SHOWSYM ; appeler le sous-programme

MOVWF DATAPORT ; élément de table de sortie vers le port B

GOTO $ ; boucle pour toujours SHOWSYM

ADDWF PC ; calculer le décalage de la table

RETLW 0AAh ;1er élément du tableau

RETLW 0BBh ;2ème élément du tableau

RETLW 0CCh ; Les LED de la 3ème entrée de table doivent afficher 10111011. COMMANDES SPÉCIALES

Il nous reste à mentionner deux commandes spéciales - CLRWDT et SLEEP. La commande CLRWDT est destinée à réinitialiser le temporisateur de surveillance, dont nous avons déjà évoqué le but. Cette instruction doit être présente dans de telles sections du programme afin que le temps d'exécution du programme entre deux instructions CLRWDT adjacentes ne dépasse pas le temporisateur de surveillance. La commande SLEEP est destinée à mettre le processeur en mode basse consommation. Après l'exécution de cette commande, le générateur d'horloge du processeur est désactivé et le processeur peut être ramené en mode de fonctionnement soit par l'entrée de réinitialisation, soit par le temporisateur de surveillance, soit par interruption. CONCLUSION

Cet article ne prétend pas être une description complète des capacités du microcontrôleur PIC16C84. Pour ce faire, vous devez lire sa description technique. Aussi, pour comprendre toutes les possibilités de l'assembleur MPALC, les macros, les options, etc. Il vous sera utile de lire son manuel. Pour définir correctement toutes les options nécessaires, vous devez lire les instructions d'utilisation du programmateur. Des exemples d'application de microcontrôleurs vous donneront une base solide pour des projets indépendants. Si vous avez des questions, vous pouvez contacter le centre d'assistance régional pour les produits MICROCHIP à l'adresse suivante : Moscou, Rubtsovskaya nab. 3 bureau 502, tél. (095) -263-9930 Ici, ils seront toujours prêts à répondre à toutes vos questions. Vous pouvez également obtenir de nouvelles versions de logiciels, des exemples d'applications et des informations de référence auprès du BBS régional en appelant le (095) -162-8405.

AD micro BBS

Publication : N. Bolchakov, rf.atnn.ru

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 :

Machine pour éclaircir les fleurs dans les jardins 02.05.2024

Dans l'agriculture moderne, les progrès technologiques se développent visant à accroître l'efficacité des processus d'entretien des plantes. La machine innovante d'éclaircissage des fleurs Florix a été présentée en Italie, conçue pour optimiser la phase de récolte. Cet outil est équipé de bras mobiles, lui permettant de s'adapter facilement aux besoins du jardin. L'opérateur peut régler la vitesse des fils fins en les contrôlant depuis la cabine du tracteur à l'aide d'un joystick. Cette approche augmente considérablement l'efficacité du processus d'éclaircissage des fleurs, offrant la possibilité d'un ajustement individuel aux conditions spécifiques du jardin, ainsi qu'à la variété et au type de fruits qui y sont cultivés. Après avoir testé la machine Florix pendant deux ans sur différents types de fruits, les résultats ont été très encourageants. Des agriculteurs comme Filiberto Montanari, qui utilise une machine Florix depuis plusieurs années, ont signalé une réduction significative du temps et du travail nécessaires pour éclaircir les fleurs. ...>>

Microscope infrarouge avancé 02.05.2024

Les microscopes jouent un rôle important dans la recherche scientifique, car ils permettent aux scientifiques d’explorer des structures et des processus invisibles à l’œil nu. Cependant, diverses méthodes de microscopie ont leurs limites, parmi lesquelles la limitation de la résolution lors de l’utilisation de la gamme infrarouge. Mais les dernières réalisations des chercheurs japonais de l'Université de Tokyo ouvrent de nouvelles perspectives pour l'étude du micromonde. Des scientifiques de l'Université de Tokyo ont dévoilé un nouveau microscope qui va révolutionner les capacités de la microscopie infrarouge. Cet instrument avancé vous permet de voir les structures internes des bactéries vivantes avec une clarté étonnante à l’échelle nanométrique. En général, les microscopes à infrarouge moyen sont limités par leur faible résolution, mais le dernier développement des chercheurs japonais surmonte ces limitations. Selon les scientifiques, le microscope développé permet de créer des images avec une résolution allant jusqu'à 120 nanomètres, soit 30 fois supérieure à la résolution des microscopes traditionnels. ...>>

Piège à air pour insectes 01.05.2024

L'agriculture est l'un des secteurs clés de l'économie et la lutte antiparasitaire fait partie intégrante de ce processus. Une équipe de scientifiques du Conseil indien de recherche agricole et de l'Institut central de recherche sur la pomme de terre (ICAR-CPRI), à Shimla, a mis au point une solution innovante à ce problème : un piège à air pour insectes alimenté par le vent. Cet appareil comble les lacunes des méthodes traditionnelles de lutte antiparasitaire en fournissant des données en temps réel sur la population d'insectes. Le piège est entièrement alimenté par l’énergie éolienne, ce qui en fait une solution respectueuse de l’environnement qui ne nécessite aucune énergie. Sa conception unique permet la surveillance des insectes nuisibles et utiles, fournissant ainsi un aperçu complet de la population dans n'importe quelle zone agricole. "En évaluant les ravageurs cibles au bon moment, nous pouvons prendre les mesures nécessaires pour lutter à la fois contre les ravageurs et les maladies", explique Kapil. ...>>

Nouvelles aléatoires de l'Archive

Nouvel avion de combat Airbus 25.01.2019

Dassault Aviation et Airbus ont signé le premier contrat de recherche pour le Future Air Combat System (SCAF), qui se concentrera sur les avions de combat de nouvelle génération, ont annoncé mercredi les sociétés dans un communiqué.

Le lancement de recherches conjointes a été annoncé par la ministre française des Armées Florence Parly et sa collègue allemande Ursula von der Leyen. Les travaux de recherche de deux ans devraient démarrer le 20 février 2019 et coûter 65 millions d'euros.

"Aujourd'hui, en présence d'un collègue allemand, je vous informe du premier contrat sur le concept et l'architecture du SCAF", a déclaré Parley. À son tour, von der Leyen a attiré l'attention sur le fait que la France et l'Allemagne « approfondissent leur coopération dans leur propre intérêt et dans l'intérêt de l'Union européenne ».

Dans le cadre de la recherche, il est prévu de déterminer la taille et la conception du futur avion militaire, ainsi que la vitesse maximale, l'équipement technique, etc.

Autres nouvelles intéressantes :

▪ Contrôlez la luminosité sans curseur

▪ Goût éternel du chewing-gum

▪ Exosquelette pour les forces spéciales

▪ Caractéristiques supplémentaires du capteur tactile B6TS

▪ L'eau purifiée peut devenir toxique

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 Fondamentaux des premiers secours (OPMP). Sélection d'articles

▪ Article N'ayez pas honte ! Quel est le problème? C'est un chemin glorieux pour beaucoup. Expression populaire

▪ article Dans quelle rivière coule l'eau salée ? Réponse détaillée

▪ article Périscope pour une visibilité panoramique. Laboratoire scientifique pour enfants

▪ article Système de contrôle embarqué avec sortie vocale des informations. Encyclopédie de l'électronique radio et de l'électrotechnique

▪ article Courant de déplacement et son champ magnétique. 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