NOTICE D`UTILISATION DE RIDE 51

publicité
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
Téléchargement