NOTICE D`UTILISATION DE RIDE 51
Transcription
NOTICE D`UTILISATION DE RIDE 51
16/05/03 Notice d'utilisation de RIDE Sur un exemple simple NOTICE D’UTILISATION DE RIDE 51 Version 6.1.6 Carlos Valente Technicien IUT DU LIMOUSIN Département Génie Electrique et informatique Industrielle 19100 Brive-la-gaillarde France. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 1 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple TABLES DES MATIERES NOTICE SIMPLIFIEE DE RIDE-51 ________________________________4 Présentation ___________________________________________________________________ 4 Création de votre projet._________________________________________________________ 4 Création de votre premier fichier assembleur. _______________________________________ 5 Les principales directives d'assemblage ____________________________________________ 6 Les directives et contrôles secondaires______________________________________________ 7 La construction du projet ________________________________________________________ 8 La compilation du projet. ________________________________________________________ 9 Environnement de travail _______________________________________________________ 11 Visualisation des périphériques et registres ________________________________________ 12 Insérer des sondes (WATCH)____________________________________________________ 13 Visualiser la fenêtre de trace. ____________________________________________________ 13 La simulation _________________________________________________________________ 14 Fichier .HEX _________________________________________________________________ 16 D'autres interrogations ? _______________________________________________________ 16 La Programmation en C__________________________________________17 Création d’un projet en C. ______________________________________________________ 17 Premier programme C _________________________________________________________ 17 Directives de compilations en C __________________________________________________ 17 Les Bases de la syntaxe du C ____________________________________________________ 18 Types de données. _____________________________________________________________ 20 Passage de paramètres CÆ ÆASM & ASM ÆC ______________________________________ 21 Exemples de programmes C_______________________________________22 Timer 1ms____________________________________________________________________ 22 Un programme d’interruption ___________________________________________________ 24 Conversion parallèle série_______________________________________________________ 25 Gestion d’un afficheur LCD _____________________________________________________ 26 Ecriture dans une RAM externe _________________________________________________ 27 Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 2 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Annexes_______________________________________________________28 Instructions arithmétiques (51) __________________________________________________ 28 Instructions logiques (51) _______________________________________________________ 29 Instructions Booléennes (51 ) ____________________________________________________ 31 Instructions de contrôle du programme assembleur (51) _____________________________ 31 Tables des Illustrations __________________________________________32 Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 3 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple NOTICE SIMPLIFIEE DE RIDE-51 Présentation RIDE 51 est un environnement intégré qui regroupe un ensemble d'outils nécessaires au développement d'une application à base de microcontrôleurs. Ces outils permettent de générer du code machine pour le microcontrôleur utilisé, mais aussi de simuler le fonctionnement de votre futur application. Cette nouvelle version de la documentation est une mise à jour de la notice réalisée pour WEDIT 51. Le fonctionnement et la philosophie restent les mêmes. Création de votre projet. Pour commencer votre application vous devrez tout d'abord créer un projet. L'organisation des projets est globalement la même sur tout les logiciels modernes de conception. Un projet et un fichier qui décrit les liens et les paramètres de votre futur application : - le type de projet que vous allez développer,( 80C51,80C552,..) - les zones mémoires, codes. - Les bibliothèques que vous allez utiliser - La listes des fichiers de votre application - Etc… Cliquez sur Project >New dans la barre de Menu . Entrez le nom de votre projet (Ex: Monprojet) l'extension .PRJ est automatiquement ajoutée . Le type projet est 8051. Il est fortement conseillé de créer un répertoire pour héberger votre projet ainsi que les fichiers sources de votre application. Dans Options vous pouvez modifier les paramètres du projet Figure 1 - Environnement RIDE Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 4 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Création de votre premier fichier assembleur. Votre projet créé, vous pouvez maintenant écrire un fichier assembleur ou un fichier en C (fichier source) pour définir une action à réaliser par le microcontrôleur . Pour le moment nous nous contenterons d'un fichier assembleur. Cliquez sur File > New> Assembler Files dans la barre de menu et rentrez le code ci-contre. Ceci est un code minimum qui va nous permettre de voir certaines fonctions du système. Vous avez peut être remarqué que vous disposez d'un éditeur syntaxique. C'est à dire qu'il reconnaît et met en couleurs les instructions qu'il reconnaît. Programmes 1 - Mon 1er Programme ASM Le langage utilisé ici est un langage interprété par le compilateur . Certaines instructions forcent effectivement le microcontrôleur à réaliser une action comme la commande CPL qui complémente un bit, et d'autres ne sont que des directives pour le compilateur. Avant d'aller plus loin dans l'utilisation de WEDIT nous allons voir quelques une de ces directives de base. Figure 2 - Mon premier programme Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 5 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Les principales directives d'assemblage Les principaux registres Les registres du 8051 sont définis en utilisant la directive $mod51. On utilise parfois aussi la directive "include reg51.inc " . Ce fichier contient la déclaration de tous les registres du 8051.. Les directives de segmentation Les microcontrôleurs ont la particularité de présenter différents segments mémoire. 1. 2. 3. 4. 5. 6. Code : segment code. Utilisée seule cette directive définit le code comme relogeable. Xdata : segment mémoire externe Data : RAM interne dans la zone RAM (0-7FH). Bdata : RAM interne adressable bit à bit.(20h-2fh) Bit : bits adressables du segment (0-7h) SFR: registres interne Pour sélectionner un segment avec la commande RSEG Mon_seg il faut avoir défini "Mon_seg" avec la commande "Mon_seg SEGMENT Seg_type". Une syntaxe simplifiée permet d'éviter la déclaration en utilisant le jeu de directives suivantes : Code, Xdata, Data, Reg, Bdata, Bit, Rbit. Par défaut le segment code est sélectionné. La sélection d'un segment absolu se fait par la directive AT (ex: at 10h positionne le segment courant à l'adresse 10h) Les étiquettes Les étiquettes sont des symboles utilisés pour marquer un emplacement dans un programme la syntaxe est de la forme : Non_de_l_etiquette: (ne pas oublier les ":"). les symboles En syntaxe simplifiée les symboles se définissent comme des étiquettes. Ils doivent simplement être définis dans le segment ou ils interviennent. Le symbole ainsi défini prend alors la valeur de l'adresse courante du segment. Pour lui affecter un valeur particulière utilisez "at Adresse_symb" avant la déclaration. at Adresse_symb Symb: db 1 Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 6 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Réservation et initialisation des espaces mémoire La syntaxe est: Label: DB expression,exp1,exp2, …. Chacune des expressions suivant le mot clef DB est rangé dans un octet dans l'espace code. Les réservations de 16 bits dans l' espace code sont faites avec le mot clef DW. Les réservations dans les espaces mémoire DATA est XDATA sont réalisées avec DS Les réservations dans le segment bit sont réalisées avec DBIT Sélection des banques de registres La sélection des banques de registres s'effectue avec la directive RB ou Using Syntaxe: RB 1 ou USING 1 sélectionne la banque 1 et définit les adresses AR0 ..AR7 aux adresses respectives 10H …17h. Les transferts de registres à registres s'effectuent ainsi avec l'instruction : MOV ARi, Rj (Par défaut la banque 0 est sélectionnée.) Les instructions Le jeu d'instruction du microcontrôleur 8051 est donné en annexe. Les directives et contrôles secondaires Il est nécessaire de contrôler l'architecture du projet. C'est pourquoi nous utilisons les contrôles sources pour utiliser des objets déclarés dans d'autres fichiers. Contrôles INCLUDE : [ $INLUDE (Nom_de_fichier) ] est utilisé pour inclure des sources dans le fichier courant. Ce contrôle permet de structurer votre projet et évite la surcharge de votre programme principal. MOD51 : [$MOD51] permet l'utilisation des registres par défaut du 8051. On peut aussi inclure un fichier contenant les déclarations Directives PUBLIC : [ PUBLIC symb, symb1,symb2… ] rend les symboles déclarés utilisables dans d'autres modules. Un symbole ne doit pas être déclaré avec l'attribut public dans deux modules différents. EXTERN : [ EXTERN type_de_segment (symb1,symb2..) ] spécifie que les symboles sont utilisés dans le module courant mais sont déclarés dans un fichier externe. Le même symbole peut être déclaré à la fois EXTERN et PUBLIC. Cette facilité permet de faire toutes les déclarations dans un seul fichier qui sera inclus dans chaque modules. On ne doit cependant pas utiliser plus de 255 symboles EXTERN dans chaque modules. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 7 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple La construction du projet Si vous ne l'avez déjà fait vous devez sauvegarder votre premier fichier assembleur en lui donnant un NOM dans le répertoire qui héberge votre projet. Pour construire votre projet vous devez inclure vos fichiers C ou assembleur comme des nœuds. Cliquez sur Project > Add a node et donnez le chemin du fichier à inclure. Pour notre exemple vous devez créer un nouveau fichier tache.a51 que vous sauvegarderez avec le précédent et que vous inclurez dans votre projet. Figure 3 - Projet Global En cliquant sur l'icône organisation automatique des fenêtres vous devriez maintenant obtenir un écran comme ci-dessus. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 8 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple La compilation du projet. Pour compiler le projet vous devez cliquer sur l'icône de compilation "Make All". Figure 4 - Fenêtre message d'erreurs Lorsque la compilation s'est bien passée des coches vertes apparaissent dans une nouvelle fenêtre "Message" sinon des codes d'erreurs sont affichés. Un double clic sur le message vous renvoie dans sur la ligne du fichier qui pose problème. Essayez. Introduisez une erreur dans votre programme ( ex: remplacez " PUBLIC tache" par " PUBLIC toche" dans le fichier tache.a51) et compilez votre projet. Un message d'erreur apparaît vous renvoyant à votre erreur. Dans notre exemple l'erreur est signalée à la ligne 16 de tache.a51 désignant un symbole non définit. Make All Erreur 46 Monprojet.a51 Figure 5 - Erreur de Compilation Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 9 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Le débuggeur Nous allons à présent passer dans l'environnement de simulation de notre programme. Cet environnement nous permettra de simuler le fonctionnement de notre projet comme s’il était implanté sur un microcontrôleur. Nous pourrons visualiser et modifier les entrées et les sorties de notre microcontrôleur, ainsi que ses registres internes. Simuler l'écriture ou la lecture en ram externe ou interne. Nous pourrons placer des sondes (Watch) qui nous permettrons de visualiser les différents signaux comme sur un analyseur logique.(presque). Nous allons pouvoir suivre en pas à pas l'évolution du programme et ainsi pouvoir détecter les éventuelles anomalies logicielles. Tout d'abord n'oubliez pas de corriger l'erreur que vous avez réalisé précédemment et de compiler à nouveau. Passage dans le débuggeur Cliquez sur l’icône débuggeur. Figure 6 - Passage Débuggeur La première fois que vous entrerez dans votre environnement vous devrez sélectionner le type de micro que vous désirez utiliser (cible 8052 par défaut). La modification de la cible se fait dans le menu Options > Target. Laissez les valeurs par défaut et cliquez OK. Une nouvelle fenêtre apparaît elle vous permet de définir les espaces mémoires. Validez la et cliquez à nouveau sur OK. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 10 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Environnement de travail Voici votre nouvel environnement de travail. La configuration reste sensiblement la même. Seul les menus et les barres d'outils changent. Nous allons maintenant tenter de simuler notre programme. Il n'a rien d'extraordinaire mais il va tout de même nous permettre de voir quelques fonctionnalités de ce logiciel. Figure 7 - Environnement de travail Débuggeur Description des principales Icônes Fenêtre de sondes Reset Point Arrêt Pas à Pas Ajouter Trace Ajouter Sonde Fenêtre de Traces Figure 8 - Principales icônes débuggeur Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 11 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Visualisation des périphériques et registres Pour notre programme nous allons faire tout d'abord afficher le port P1. On peut bien entendu passer par les menus en cliquant Périphériques du menu Vue ou (view > Harware peripherals port1 ). Il est cependant plus simple d’utiliser la fenêtre de visualisation des périphériques et registres. Deux clics sur Port1 et une nouvelle fenêtre apparaît visualisant l'état du port. Un point vert indique un état haut (VCC) et un point rouge un état bas (GND). Vous pouvez forcer l'état d'un bit en cliquant dessus et en lui affectant un potentiel. De la même manière vous pouvez visualiser et contrôler tous les autres ports du microcontrôleur. Valeur du port en HEXA Etat du bit P1.5 Liste de choix Double clic Vous pouvez visualiser de la même manière tous les périphériques et les données listées dans la fenêtre cicontre. Figure 9 - Visualisation des périphériques Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 12 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Insérer des sondes (WATCH) Add L'insertion des sondes se fait en sélectionnant la variable à visualiser et validant Add Watch en cliquant sur l’icône lunettes. Choisissez P1.2 et cliquez sur INSERER WATCH. Renouvelez l'opération pour P1.1 et P1.0 puis fermez la boite de dialogue. Dans la fenêtre de visualisation apparaissent à présent les trois bits P1.0, P1.1, P1.2 Lors de la simulation vous verrez apparaître les différentes valeurs prises par ces bits. Figure 10 - Insertion de sondes Boutons Trace Visualiser la fenêtre de trace. Pour visualiser la fenêtre de trace cliquez sur le menu sur l’icône Fenêtre de Trace. Voir : (Figure 8 - Principales icônes débuggeur). Pour être tracée, une sonde doit avoir un symbole de suivi de trace . Vous réalisez cela en cliquant le bouton droit sur la sonde à tracer et en sélectionnant add\delete from trace list dans le menu qui apparaît. Ceci a pour effet de faire apparaître un bouton portant le nom de la variable dans la fenêtre de Trace. Cliquez sur ce bouton. Vous avez à présent le symbole P1.0 qui s’affiche dans la fenêtre trace. Symbole suivi trace Figure 11 - Fenêtre de trace Configurer la fenêtre de trace Si vous lancez une simulation maintenant vous ne verrez aucune trace apparaître. Par défaut le suivi des traces n'est pas actif. Vous devez au préalable activer le suivi en cliquant sur le menu TRACE >OPTIONS Cliquez sur le bouton radio Continu et entrez 100 dans le Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 13 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple champ Maximun records. Validez. A présent vous êtes prêts à visualiser les bits P1.0, P1.1,P1.2. La simulation Mode pas à pas Différents modes de simulations sont disponibles. Le mode pas à pas vous permet, comme son nom l'indique d'exécuter les instructions une à une et de voir à chaque étape l'évolution de tous les registres de votre microcontrôleur. Pas à pas Automatique Point d’arrêt Registres principaux Figure 12 - Simulation manuelle et automatique Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 14 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive Vitesse d’exécution 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Cliquez sur le bouton mode Pas à Pas. Vous voyez se dérouler les instructions dans les fenêtres de code et de TRACE. Après plusieurs clics le programme passe dans la procédure TACHE et boucle en permanence en complémentant le bit p1.2. Pour sortir de cette position vous devez affecter 0à P1.0. Vous avez plusieurs solutions. Soit : Cliquer sur P1.0 dans la fenêtre d'état du port P1 et choisir Ground ( Ceci correspond à une liaison physique de la broche p1.0 à la masse). Soit de vous déplacer dans la fenêtre Bit et de rentrer p1.0 dans le champ de recherche. Le système se positionne tout de suite sur l’adresse de P1.0 à savoir 90h. Reprenez le mode pas à pas. Après quelques clics vous pouvez constater que vous êtes retourné au programme principal. . Exécution en automatique. Le mode automatique vous permet d'exécuter votre programme en continu (GO). Un contrôle de la vitesse d'exécution est permis en utilisant la barre glissante des icônes. Un arrêt peut être effectué à tous moments en cliquant sur le bouton STOP. Voir ( Figure 12 ) Poser un point d'arrêt Lorsque vous exécutez un programme en automatique vous pouvez placer un point d'arrêt de programme sur l'instruction qui vous intéresse. La simulation s'arrêtera automatiquement sur l'instruction que vous aurez sélectionné. Placez vous sur une ligne de code et cliquez sur l'icône point d'arrêt puis GO . Voir (Figure 8) Reset du programme Il peut être nécessaire de réinitialiser votre programme pour retrouver les valeurs de début d'exécution. Inutile de sortir un bouton reset est prévu à cet effet. Voir (Figure 8) Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 15 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Fichier .HEX Pour pouvoir programmer exécuter réellement votre programme devez générer un fichier machine interprétable par le microcontrôleur. Ce fichier est généré sous le nom : [Nom du projet].HEX Impossible de générer un fichier de sortie au format .HEX ? Vous devez le spécifier dans les options du projet Options > Project En validant l’option Générer un fichier Intel HEX C’est ce fichier que vous implanterez sur votre carte à microcontrôleur pour réaliser votre projet. Figure 13 - Configuration fichier .HEX D'autres interrogations ? Rubrique précieuse, l’ aide en ligne est disponible sur ce logiciel. Utilisez la. Cliquez sur Aide ! Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 16 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple La Programmation en C Création d’un projet en C. Figure 14 – Premier Programme C Ride supporte la programmation en C Ansi. La philosophie de Ride est la même en C et en assembleur. Seul le langage change. pour la création du projet reportez vous à la rubrique « Création de votre projet. » Premier programme C Notre premier programme sera très simple. Nous allons écrire en C le programme principal de notre projet. Ce programme (Main) devra être ajouté à notre projet (Add Node). Ce programme modifie la variable P1_1 tant que la condition n’est pas vérifiée. Vous pouvez maintenant simuler votre programme en vous reportant à la rubrique simulation. (Voir : Figure 12 Simulation manuelle et automatique) Directives de compilations en C #include <Nom_Fichier> Permet d’insérer les informations du fichier à inclure à partir de la ligne de déclaration #Define constante valeur. Très utile cette directive permet de remplacer une chaîne de caractères par une autre (constante par valeur). #If, #else, #endif Ces directives sont utiles pour compiler certaines parties du programme si une condition est vérifiée. #pragma REGPARAMS les pragmas sont des controls qui permettent d'activer des fonctions spéciales. REGPARAMS permet de définir le passage des paramètres de C Æ ASM & ASM Æ C. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 17 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Les Bases de la syntaxe du C En C le nom des variables et des fonctions doit toujours débuter par une lettre de l’alphabet et peut être suivi des chiffres et du caractère ‘_’. Seul les 32 premiers caractères sont pris en compte. Les mots clés du langage ne peuvent pas être utilisés comme nom de variable ou de fonction. Les opérateurs Tableau 1 – Les Opérateurs Opérateurs = + / * ++ -> ou < >= ou <= == != && || ! &variable >>N <<N & | ^ ~ Description Assigne une valeur à une variable Addition soustraction Division multiplication Incrémentation de B Ajoute 1à B Décrémentation de B soustrait 1 à B Supérieur et inférieur Supérieur ou égal ou Inférieur o égal Egalité de deux valeurs Inégalité de deux valeurs Vrai si les 2 expressions vraies Vrai si 1 expression vraie Inverse la valeur logique A vrai , !A faux Adresse de la variable Décalage de N bits vers la droite Décalages de N bits vers la gauche Et logique Ou logique Ou exclusif Négation Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 18 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive Exemple A= 2 ; A=B+2 ; A=B-2 ; A=B/2 ; A=B*2 ; B++ ; B-- ; A>B ; ou B<A ; A>=B ; ou B<=A ; A=B ; A =!B ; (A<B)&&(B<20) ; (A<B)|| (B<20) ; !A ; A=B>>2 ; A=B<<2 ; 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Les séparateurs Tableau 2 – Les Séparateurs Séparateurs ; , ‘’ ‘’ {} Description Il doit séparer toutes les instructions Sépare les éléments d’une liste. Délimite une chaîne de caractères Délimite un bloc d’instructions Exemple A=B ; Char A,B,C ; Char a= ‘’bonjour ‘’ ; Main(){a=b ; b++ ;} Les instructions IF IF (condition) {instructions ;} Else {instructions ;} Switch Switch (expression) { Case valeur1 : instructions ;BREAK ; Case valeur2 : instructions ;BREAK ; …. DEFAULT : instructions ;BREAK ;} While While (expression){instructions ;} For For (contrôle; fin de boucle ;modification du contrôle) {instructions ;} For (i=0 ;i<=5 ;i++) {instructions ;} Do Do {instructions ;}While(expression) ; Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 19 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Types de données. En C chaque donnée doit être déterminée par un type. Les principaux types sont : -les entiers (INT), les réels(FLOAT), les caractères( CHAR), les pointeurs (Figure 21 Programme Gestion d'une Ram ) On peut définir ses propres types de données. Définitions de variables La définition des variables se fait en donnant le type de la variable suivit de son nom. INT i ; On peut assigner une valeur lors de la déclaration. INT i=1 ; CHAR ecran=’’LCD’’ ; FLOAT x=3.14 ; CHAR *pointeur ; Attention : Respectez la casse. Définition d’un type Les définitions de types sont utiles pour adresser des objets ayant différentes caractéristiques. Prenons l’exemple d’un afficheur LCD. Il comprend 4 registres d’accès. Un registre d’initialisation, un registre d’état, un registre d’écriture données et un registre de lecture données. Cet afficheur peut se définir par la structure suivante : (Voir : Figure 20 Programme Gestion Afficheur LCD ) typedef struct { unsigned char ecrire_instr; unsigned char lire_etat; unsigned char ecrire_donnees; unsigned char lire_donnees; }afficheur ; La définition d’un afficheur lcd particulier se fait en lui donnant une adresse mémoire de départ. xdata at 0x8000 afficheur lcd; Ceci a pour effet de définir les registres successivement aux adresses 0x8000, 0x8001, 0x8002, 0x8003. L’accès à ces registres se fera par la syntaxe suivante : lcd. ecrire_instr = 0x0E ; Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 20 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Passage de paramètres CÆASM & ASM ÆC On peut définir des procédures ou des fonctions en assembleur. Programme C Programme assembleur Figure 15 - Passage de paramètres La Fonction copy (caractere) est déclarée dans le programme C. par char copy ( char caractere). C'est une fonction qui passe un octet et renvoi un octet. Remarquez que le nom de la fonction dans le programme assembleur est en majuscules : _COPY Le souligné signale au compilateur que la fonction passe des paramètres par registres. Dans le cas d'un char c'est R7 qui est utilisé. (voir Tableau 3 - Passage de paramètres) La Fonction copy (caractere) est déclarée dans le programme C. par void copy ( void). C'est une fonction simple sans passage de paramètre. Le nom de la fonction dans le programme assembleur est : COPY. Tableau 3 - Passage de paramètres Taille Bit Char Int Pointeur Float Double Long double Registres Carry R7 R6:R7 R1:R2:R3 R4 Æ R7 R2 Æ R7 R1 Æ R7 Ci- contre la table des registres utilisés en fonction de la déclaration de la fonction. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 21 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Exemples de programmes C Timer 1ms Pour des boucles d’attente on peut décrémenter un registre. Cependant il est parfois nécessaire d’attendre un temps déterminé. Le principe est alors de définir un Timer en mode rechargement qui va positionner une bit tous les millièmes de seconde La valeur de rechargement du timer dépend du quartz utilisé. (TH0). Un comptage de ce bit permettra de mesurer le temps. Figure 16 - Programme Timer 1ms Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 22 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Gestion du port Port série Pour la gestion du port série il est nécessaire d’utiliser le timer1 pour définir la vitesse de transmission. En modifiant la variable CHARGE_TH1 on gère la vitesse de transmission. procédure init_uart(). Les procédures d’émission et réception permettent de transmettre et recevoir un caractère. Le programme principale réceptionne un caractère et le renvoie sur la liaison série. Figure 17 - Programme de Liaison série Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 23 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Un programme d’interruption Vous pouvez découvrir ci-contre le programme C de la gestion de l’interruption externe 1 du microcontrôleur 8051. La procédure utilise la syntaxe suivante : void int_ext1 (void) interrupt 2 { P1_0=0 ; } Pour connaître le Numéro de l'interruption On utilise la formule : 3 + N°int*8 = Vect.Interruption Le vecteur de l’interruption 1 étant en 13h le numéro est 2. Attention : Les interruptions peuvent être mémorisées. Figure 18 - Programme interruption C'est à dire qu'on peut avoir interdit toutes les interruptions, EA=0 et même interdit une interruption particulière EX1 =0, Si un événement apparaît sur l'entrée interruption elle est mémorisée. Il sera donc prudent de mettre le drapeau d'interruption à 0 (ex:IE1 =0) en début de programme ainsi qu'en fin de procédure d'interruption. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 24 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Conversion parallèle série Figure 19 - Programme de Sérialisation des Données On décale un registre de façon à générer une trame sur le bit d’un port. Les trames ainsi constituées sont séparées de 2 milli-secondes en utilisant le Timer 0. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 25 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Gestion d’un afficheur LCD Figure 20 - Programme Gestion Afficheur LCD Ce programme gère l’initialisation d’un afficheur LCD. L’afficheur est vu par l’utilisateur comme une mémoire externe. L’écriture et la lecture se feront par les instructions Lcd.ecrire_donnees = [donnée] ; Lcd.lire_donnees = [donnée] ; Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 26 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Ecriture dans une RAM externe Figure 21 - Programme Gestion d'une Ram Pour l’écriture d’ans une ram externe il faut définir un pointeur. Ce Pointeur , noté *Adresse_Ram dans notre exemple, servira à indexer la zone mémoire. Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 27 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Annexes Instructions arithmétiques (51) MNEMO. INSTRUCTION OCT. CYC. ADD A,Rn Add register to Accumulator ADD A,direct Add direct byte to Accumulator ADD A,@RI Add indirect RAM to Accumulator ADD A,#data Add immediate data to Accumulator ADDC A,Rn Add register to Accumulator with Carry ADDC A,direct Add direct byte to A with Carry flag ADDC A,@RI Add indirect RAM to A with Carry flag ADDC A,#data Add immediate data to A with Carry flag SUBB A.Rn Subtract register from A with Borrow SUBB A,direct Subtract direct byte from A with Borrow SUBB A,@RI Subtract indirect RAM from A with Borrow SUBB A,#data Subtract immed. data from A with Borrow INC A IncrementAccumulator INC Rn Increment register INC direct Increment direct byte INC @Ri Increment indirect RAM INC DPTR Increment DataPointer DEC A Decrement Accumulator DEC Rn Decrement register DEC direct Decrement direct byle DEC @Ri Decrement indirect RAM I 2 I 2 I 2 I 2 I 2 I 2 I I 2 I I I I 2 I I 1 I 1 I 1 I 1 I 1 I 1 l I 1 I 2 I I 1 I MUL AB DIV AB DA A 1 1 I 4 4 I Multiply A & B DivideAby B Decimal Adjust Accumulator Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 28 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Instructions logiques (51) · MNEMO. DESTINATION ANL A,Rn AND register to Accumulator ANL A,direct AND direct byte to Accumulator ANL A,@Ri AND indirect RAM to Accumulator ANL A,#data AND immediate data to Accumulator ANL direct,A AND Accumulator to direct byte ANL direct,#data AND immediate data to direct byte ORL A,Rn OR register to Accumulator ORL A,direct Or direct byte to Accumulator ORL A,@RI OR indirect RAM to Accumulator ORL A,#data OR immediate data to Accumulator ORL direct,A OR Accumulator to direct byte ORL direct,@data OR immediate data to direct byte XRL A,Rn Exclusive-OR register to Accumulator XRL A,direct Exclusive-OR direct byte to Accumulator XRL A,@RI Exclusive-OR indirect RAM to A XRL A,#data Exclusive-OR immediate data to A XRL direct,A Exclusive-OR Accumulator to direct byte XRL direct,#data Exclusive-OR immediate data to direct CLR A Clear Accumulator CPL A Complement Accumulator RL A Rotate Accumulator Lett RLC A Rotate A Left through the Carry flag RR A Rotate Accumulator Right RRC A Rotate A Right through Carry flag SWAP A Swap nibbles within the Accumulator Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 29 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive OCT. CYC. I 2 I 2 2 3 I 2 I 2 2 3 I 1 I 1 1 2 I 1 I 1 1 2 2 I 2 2 3 I I I I I I I 1 I 1 1 2 l I I I I I I 16/05/03 MNEMO. Notice d'utilisation de RIDE Sur un exemple simple DESCRIPTION OCT. CYC. MOV A,Rn MOV register to Accumulator MOV A,direct MOV direct byte to Accumulator MOV A,@RI MOV indirect RAM to Accumulator MOV A,#data MOV immediate data to Accumulator MOV Rn,A MOV Accumulator to register MOV Rn,direct MOV direct byte to register MOV Rn,#data MOV immediate data to register MOV direct,A MOV Accumulator to direct byte MOV direct,Rn MOV register to direct byte 1 2 I 2 I 2 2 2 2 1 1 I 1 I 2 1 1 2 MOV direct,direct MOV direct byte to direct MOV direct,@Ri MOV indirect RAM to direct byte MOV direct,#data MOV immediate data to direct byte MOV @RI,A MOV Accumulator to indirect RAM MOV @Ri,direct MOV direct byte to indirect RAM MOV @Ri,#data MOV immediate data to indirect RAM MOV DPTR,#data 16 Load Data Pointer with a 16-bit constant 3 2 3 I 2 2 3 2 2 2 I 2 1 2 MOVC A,@A + DPTR MOV Code byte relative to DPTR to A MOVC A,@A + PC MOV Code byte relative to PC to A MOVX A,@Ri MOV External RAM (8-bit addr) to A MOVX A,@DPTR MOV External RAM (16-bit addr) to A MOVX @RI,A MOV A to External RAM (~-bit addr) MOVX @DPTR,A MOV A to External RAM (16-bit addr) 1 1 1 1 1 1 2 2 2 2 2 2 PUSH direct POP direct XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri 2 2 I 2 I I 2 2 I 1 I I Push direct byte onto stack Pop direct byte from stack Exchange register with Accumulator Exchange direct byte with Accumulator Exchange indirect RAM with A Exchange low-order nibble in RAM with A Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 30 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Instructions Booléennes (51 ) MNEMO. CLR CLR SETS SETB CPL CPL ANL ANL ORL ORL MOV MOV C bit C bit C bit C,bit C,lbit C,bit C,/bit C,bit bit,C DESCRIPTION OCT. CYC. Clear Carry flag Clear direct bit Set Carry flag Set direct Bit Complement Carry flag Complement direct bit AND direct bit to Carry flag AND complement of direct bit to Carry OR direct bit to Carry flag OR complement of direct bit to Carry MOV direct bit to Carry flag MOV Carry flag to direct bit I 2 I 2 I 2 2 2 2 2 2 2 I 1 I 1 I 1 2 2 2 2 1 2 Instructions de contrôle du programme assembleur (51) MNEMO. DESCRIPTION ACALL addril Absolute Subroutine Call LCALL addrl6 Long Subroutine Call RET Return from subroutine RETI Return from interrupt AJMP addril Absolute Jump LJMP addrl6 Long Jump SJMP rel Short lump (relative addr) JMP @A + DPTR Jump indirect relative to the DPTR JZ rel Jump if Accumulator is Zero JNZ rel Jump if Accumulator is Not Zero JC rel Jump if Carry flag is set JNC rel Jump if No Carry flag JB bit,rel Jump if direct Bit set JNB bit,rel Jump if direct Bit Not set JBC bit,rel Jump I direct Bit is set & Clear bit CJNE A,direct,relCompare direct to A & Jump I Not Equal CJNE A,#data,relComp. immed. to A &Jump if Not Equal CJNE Rn,#data,rel Comp. immed. to reg & Jump if Not Equal CJNE @Ri,#data. relComp. immed. to ind. & Jump if Not Equal DJNZ Rn,rel Decrement register & Jump I Not Zero DJNZ direct. rel Decrement direct & Jump if Not Zero NOP No operation I Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 31 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive OCT. CYC. · 2 2 3 2 1 2 1 2 2 2 3 2 2 2 I 2 2 2 2 2 2 2 2 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 2 2 3 2 16/05/03 Notice d'utilisation de RIDE Sur un exemple simple Tables des Illustrations Figure 1 - Environnement RIDE ............................................................................................................................. 4 Figure 2 - Mon premier programme........................................................................................................................ 5 Figure 3 - Projet Global ......................................................................................................................................... 8 Figure 4 - Fenêtre message d'erreurs....................................................................................................................... 9 Figure 5 - Erreur de Compilation ............................................................................................................................ 9 Figure 6 - Passage Débuggeur............................................................................................................................... 10 Figure 7 - Environnement de travail Débuggeur.................................................................................................. 11 Figure 8 - Principales icônes débuggeur ............................................................................................................... 11 Figure 9 - Visualisation des périphériques ............................................................................................................ 12 Figure 10 - Insertion de sondes ............................................................................................................................. 13 Figure 11 - Fenêtre de trace .................................................................................................................................. 13 Figure 12 - Simulation manuelle et automatique .................................................................................................. 14 Figure 13 - Configuration fichier .HEX ................................................................................................................ 16 Figure 14 – Premier Programme C ...................................................................................................................... 17 Figure 15 - Passage de paramètres ........................................................................................................................ 21 Figure 17 - Programme Timer 1ms ....................................................................................................................... 22 Figure 19 - Programme de Liaison série ............................................................................................................... 23 Figure 21 - Programme interruption...................................................................................................................... 24 Figure 22 - Programme de Sérialisation des Données.......................................................................................... 25 Figure 23 - Programme Gestion Afficheur LCD.................................................................................................. 26 Figure 24 - Programme Gestion d'une Ram .......................................................................................................... 27 I Tableau 1 – Les Opérateurs................................................................................................................................... 18 Tableau 2 – Les Séparateurs ................................................................................................................................. 19 Tableau 4 - Passage de paramètres........................................................................................................................ 21 Carlos Valente - Technicien [email protected] http://www.brive.unilim.fr Page 32 sur 32 Département GE&II BRIVE IUT LIMOGES - 7 rue jules Vallès - 19100 Brive