Utilisation de l’assembleur en Microcontrôleur

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Le Concept du programme enregistré
Introduction au langage C
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
GEF 243B Programmation informatique appliquée
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
INTRODUCTION.
8. Les tableaux P. Costamagna – ISEN N1.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Le codage des nombres en informatique
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Architecture introduction.
LES SYSTEMES AUTOMATISES
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
Instruction sélective switch-case Instruction répétitive do-while For
Principes de programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO107 Éléments de programmation
Plan troisième cours Instruction sélective Instruction répétitive
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Répéter dans un programme avec une Instruction itérative
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Types de données fondamentaux
L’essentiel du langage C
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
Un survol du language C.
Cours n° 3 Traitements en Java
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
Cours LCS N°4 Présenté par Mr: LALLALI
INFOR 101 Chapitre 5 Marianne Morris.
République Algérienne Démocratique et Populaire Ministère de l'enseignement supérieur et de herche scientifique Université de Ferhat Abbas -Sétif.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
BEP Electronique - Systèmes microprogrammés
Patricia Renault UPMC 2005/2006
Module algorithmique et programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Scripts et fonctions Instructions de contrôle
PRO-1027 Programmation Scientifique en C
Chapitre 4 La représentation des nombres.
Chapitre 4b La représentation des nombres.
Semaine 5 Registres spéciaux et périphériques internes Projet initial en ingénierie informatique et travail en équipe INF1995 Jérôme Collin et al.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Encadrer par Mr Chelly Nizar
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
A. Lebrun. Principe de base Dans la logique combinatoire, les sorties dépendent des différentes entrées et peuvent être calculées par l’algèbre de Boole.
Architecture d’un ordinateur
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Transcription de la présentation:

Utilisation de l’assembleur en Microcontrôleur Royaume du Maroc Université Hassan II Casablanca Faculté des sciences Utilisation de l’assembleur en Microcontrôleur Mr. Adil BARRA Barra.adil@gmail.com Année universitaire 2012/2013

Plan Introduction Initiation aux microcontrôleurs Rappel sur les notions d’assembleur Présentation du logiciel MPLAB Exemples d’applications Exercices A.BARRA TP- MPLAB

Il existe de nombreux langages de haut niveau : Introduction Un langage d’assembleur est un langage de bas niveau qui représente le langage machine sous une forme lisible par un humain. Il existe de nombreux langages de haut niveau : Certain sont développer pour des microcontrôleurs, d’autres largement répandus dans les ordinateurs ont été adaptés aux besoins des microcontrôleurs. => C’est le cas du C. A.BARRA TP- MPLAB

L’assembleur n’est pas structuré (blocs, fonctions…) L’assembleur reste proche du matériel (mise à 1 ou 0 d’un bit d’un port d’entrée sortie) L’assembleur n’est pas structuré (blocs, fonctions…) difficulté du code source. Inconvénients L’assembleur destiné à l’origine pour des systèmes embarqués. Les interruptions sont des concepts de l’assembleur. L’assembleur a des outils standards pour gérer ces différences. avantages A.BARRA TP- MPLAB

Initiation aux microcontrôleurs 1) Qu’est ce qu’un microcontrôleur : C’est un ordinateur monté dans un circuit intégré. On peut décomposer la structure interne d’un microprocesseur en trois parties : -Les mémoires -Le processeur -Les périphériques A.BARRA TP- MPLAB

2) Intérêt des microcontrôleurs : Les microcontrôleurs sont de taille tellement réduite qu’ils peuvent être sans difficulté implantés sur l’application même qu’ils sont censés piloter. Leur prix et leurs performances simplifient énormément la conception de système électronique et informatique. L’utilisation des microcontrôleurs ne connaît de limite que l’ingéniosité des concepteurs, on les trouve dans nos cafetières, les magnétoscopes, les radios …..Une étude menée en l’an 2004 montre qu’en moyenne, un foyer américain héberge environ 240 microcontrôleurs. A.BARRA TP- MPLAB

Présentation générale du pic 16f84 1) Classification du PIC 16F84 Le PIC 16F84 est un microcontrôleur 8 bits. Il dispose donc d'un bus de données de huit bits 2) Architecture interne La structure générale du PIC 16F84 comporte 4 blocs comme le montre la figure : -Mémoire de programme -Mémoire de données -Processeur -Ressources auxiliaires ( périphériques ) A.BARRA TP- MPLAB

Structure interne du PIC 16F84 1) Brochage et caractéristiques principales Le PIC16F84 est un circuit intégré de 18 broches  : L’horloge qui assure la fréquence doit être stabilisée de manière externe au moyen d’un cristal de quartz connecté aux pattes OSC1/CLKIN (patte 16) et OSC2/CLKOUT ( patte 15 ) Les broches RB0 à RB7 et RA0 à RA4 sont les lignes d’entrées/sorties numériques A.BARRA TP- MPLAB

2) Structure interne La structure interne du PIC16F84 est : ( structure HARVARD : la mémoire de programme et la mémoire de données sont séparées contrairement à l'architecture Von Neuman qui caractérise d'autres fabricants de microcontrôleurs ) A.BARRA TP- MikroC

3) Principe de fonctionnement du PIC Un microcontrôleur exécute des instructions. On définit « le cycle instruction » comme le temps nécessaire à l’exécution d’une instruction. Attention de ne pas confondre cette notion avec le cycle d’horloge qui correspond au temps nécessaire à l’exécution d’une opération élémentaire ( soit un coup d'horloge ). Une instruction est exécutée en deux phases : la phase de recherche du code binaire de l’instruction stocké dans la mémoire de programme la phase d’exécution ou le code de l’instruction est interprété par le processeur et exécuté. Chaque phase dure 4 cycles . A.BARRA TP- MPLAB

On pourrait donc croire qu’un cycle instruction dure 8 cycles d’horloge mais l’architecture particulière du PIC lui permet de réduire ce temps par deux. En effet, comme les instructions issues de la mémoire de programme circulent sur un bus différent de celui sur lequel circulent les données, ainsi le processeur peut effectuer la phase de recherche d’une instruction pendant qu’il exécute l’instruction précédente. A.BARRA TP- MPLAB

4) Déroulement d’un programme Le déroulement d’un programme s’effectue de façon très simple. A la mise sous tension, le processeur va chercher la première instruction qui se trouve à l’adresse 0000 de la mémoire de programme, l’exécute puis va chercher la deuxième instruction à l’adresse 0001 et ainsi de suite ( sauf cas de saut ou d’appel de sous programme que nous allons voir plus loin ). On parle de fonctionnement séquentiel. A.BARRA TP- MPLAB

5) La mémoire de données RAM Si l’on regarde la mémoire de donnée RAM, on s’aperçoit que celle-ci est un peu particulière. On constate en effet que cette mémoire est séparée en deux pages ( page 0 et page 1 ). De plus, on remarque que tant pour la page 0 que pour la page 1, les premiers octets sont réservés ( SFR pour Special File Register ). Ces emplacements sont en effet utilisés par le microcontrôleur pour configurer l’ensemble de son fonctionnement. A.BARRA TP- MPLAB

A.BARRA TP- MikroC

7) Les ports d’entrées/sorties Le PIC16F84 est équipé de 13 lignes d’entrées/sorties réparties en deux ports : -le port A : RA0 à RA4 -le port B : RB0 à RB7 Chaque ligne peut être configurée soit en entrée, soit en sortie, et ceci indépendamment l’une de l’autre. Pour cela on utilise les registres TRISA et TRISB particularité du portA : les bits b7 à b5 des registres TRISA et PORTA ne correspondent à rien car il n’y a que 5 lignes ( b0 à b4 ) . RA4 est une ligne à collecteur ouvert, cela veut dire que configurée en sortie cette broche assure 0Volt à l’état bas, mais qu’à l’état haut, il est nécessaire de fixer la valeur de la tension grâce à une résistance de tirage (pull up en anglais) particularité du portB :il est possible de connecter de façon interne sur chaque ligne une résistance de tirage ( pull up ) dont le rôle consiste à fixer la tension de la patte (configuré en entrée ) à un niveau haut lorsque qu’aucun signal n’est appliqué sur la patte en question. Pour connecter ces résistances, il suffit de placer le bit RBPU/ du registre OPTION à 0 . A.BARRA TP- MPLAB

Le TMR0 peut remplir deux fonctions: 8) Le Timer Dans la majeure partie des applications, il est nécessaire de contrôler le temps; afin de ne pas occuper le microcontrôleur qu'à cette tâche ( boucle de comptage qui monopolise le micro ), on le décharge en utilisant un timer. Le pic 16F84 dispose de deux timers, un à usage général ( le TMR0 ) et un autre utilisé pour le chien de garde ( watch dog WDG ). Le TMR0 peut remplir deux fonctions: -Temporisateur ou contrôle du temps. Son entrée d'incrémentation est alors l'horloge qui correspond au cycle instruction ( Fosc/4). -Compteur d'événements. Dans ce cas les d'impulsions d'entrées du timer sont fournies par la patte RA4/TOCK1 le choix s'effectue grâce au bit RTS du registre OPTION. A.BARRA TP- MPLAB

Le pic 16F84 dispose d'un diviseur de fréquence qui peut être assigné soit au chien de garde, soit au TMR0 ( uniquement un à la fois ). L'assignation du pré diviseur se fait grâce au bit PSA du registre OPTION. La structure interne du TMR0 est donc la suivante. A.BARRA TP- MPLAB

Rappel sur les notions du langage C L’espace mémoire limité Rapidité d’exécution Utilisation des fonctions lorsqu’un groupe d’instructions est répété plusieurs fois. Remarque A.BARRA TP- MikroC

Types de données en langage C : Il existe plusieurs types de données qui peuvent être utilisée en langage de programmation C. A.BARRA TP- MikroC

En ajoutant un préfix à n’importe lequel de ces type de données, la gamme de ces valeurs possible change ainsi que le nombre des bites nécessaire. A.BARRA TP- MikroC

Déclaration des variables Le nom d’une variable peut contenir tout caractère alphabétique de A-Z (a-z), les chiffres 0-9 ainsi que le caractère '_'. Le compilateur est sensible et différencie entre majuscule et minuscule. Les variables et les fonctions sont généralement en minuscule et les constantes en majuscule. Le nom d’une variable doit pas commencer avec un chiffre. Certains noms peuvent pas être utilise comme nom de variable car ils sont déjà utilisé par le compilateur. mikroC reconnait en total 33 mots de ce genre. Structure d’une déclaration de variables Type_variable Nom_variable; A.BARRA TP- MikroC

Mots réservés en MikroC A.BARRA TP- MikroC

Constantes entières Les constantes entières peuvent être décimal, hexadécimal, octal or binaire. Le compilateur reconnait leurs formes à partir du préfix ajouté. Si le nom n’a pas de préfix, il est considéré décimal par défaut, le type de la constante est reconnu automatiquement par sa taille. A.BARRA TP- MikroC

Opérations arithmétiques Les opérateurs arithmétiques sont utilisées sur des opérations arithmétiques et retourne toujours un résultat positif. Contrairement a une des opérations unaires étant performée sur une seul opérande, en binaire les opérations sont performées sur deux opérandes. A.BARRA TP- MikroC

Opérateurs d’assignement (affectation) Il existe deux types d’assignement en langage C: Les opérateurs simples attribue des valeurs aux variables utilisant le caractère '='. exemple: a = 8 Les assignations composées sont spécifique au langage C et se constituent de deux caractère présenté sur le tableau, et ils peuvent présenter plus d efficacités coté machine. A.BARRA TP- MikroC

Opérations d’incrémentation et de décrémentation Incrémentation et décrémentation par 1sont note '++' et '--'. Ce caractère peut soit précéder ou suivre une variable. Sur la 1ere case (++x), la variable x sera incrémenté au départ par 1, ensuite sera utilisé dans une expression. Autrement, la variable sera utilisé ensuite elle sera incrémenté par 1. La même chose pour l’opération de décrémentation. A.BARRA TP- MikroC

Opérateurs relationnels Les opérateurs relationnels sont utilisés pour la comparaison entre deux variables qui peuvent soit être (int) ou (float). Si l’expression est évaluée juste, un 1 est retourné. Autrement (faux), un 0 est retourné. A.BARRA TP- MikroC

Opérateurs logiques Il existe 3 types d’opérateurs logiques en langage C: la logique AND la logique OR la négation (NOT). Pour plus de clarté, les états logique présenté sur le tableau suivant comme logique zéro (0=false) and logique un (1=true). Exemple : (1 && 0) est la même chose que (true expression) && (false expression) Le résultat sera 0. A.BARRA TP- MikroC

A.BARRA TP- MikroC

Opérateurs sur bits Contrairement aux opérations logiques qui sont utilisées sur des variables, les opérations sur bits sont utilisé sur 1 seul bit de l opérande. A.BARRA TP- MikroC

Présentation du logiciel MikroC Verbalement :MikroC est un compilateur "C" monoposte pour microcontrôleurs PIC, il bénéficie d'une prise en main très intuitive et d'une ergonomie sans faille. Ses très nombreux outils intégrés (mode simulateur, terminal de communication Ethernet, terminal de communication USB, gestionnaire pour afficheurs 7 segments, analyseur statistique, correcteur d'erreur, explorateur de code, mode Débug ICD...) associé à sa capacité à pouvoir gérer la plupart des périphériques rencontrés dans l'industrie (Bus I2C™, 1Wire™, SPI™, RS485, Bus CAN™, USB, gestion de cartes compact Flash et SD™/MMC™, génération de signaux PWM, afficheurs LCD alphanumériques et graphiques et 7 à Leds segments, etc...) en font un outil de développement incontournable. A.BARRA TP- MikroC

Prise en main du logiciel MikroC Interface d’accueil du mikroC (tu expliques un peu comment on ouvre une nouvelle fiche A.BARRA TP- MikroC

A.BARRA TP- MikroC

A.BARRA TP- MikroC

Instructions de bases (1/2) Les instructions conditionnelles If else If (expression) { ... // ... // operation1 …}// Else Operation2 Exemple: If (x==5) { PORTB=255 } Else PORTB=0; A.BARRA TP- MikroC

Les instructions conditionnelles Switch…case l’opérateur switch vous permet de choisir entre plusieurs opérations. Sont syntaxe est. switch (selector) // Selector is of char or int type { case constant1: operation1 // Group of operators are executed if ... // selector and constant1 are equal break; case constant2: operation2 // Group of operators are executed if ... // selector and constant2 are equal ... default: expected_operation // Group of operators are executed if no ... // constant is equal to selector } A.BARRA TP- MikroC

Instructions de bases (2/2) Les instructions itératives (boucles) Do While loop Do { opération1; opération 2; …. } While (condition); // Check condition Exemple: a = 0; // Set initial value  do { a = a+1; // Operation in progress  } while (a <= 100); ; virgule a la fin du « do…while » A.BARRA TP- MikroC

Les instructions itératives (boucles) Les autres instructions itératives : While (1) {……} Do {……} while (1) ; Loop : ……. Goto loop ; For( ; ;){……..} Ici faire des exemples sur tableau A.BARRA TP- MikroC

Exemples d’instructions utiles TRISA=255 tous les bits du port A sont des entrées TRISB=0 tous les bits du port B sont des sorties TRISB.F0=1 le bit B0 sera une entrée PORTB=255 ou PORTB =0b11111111 écrire 1 tout au long du port B PORTB.F0=1 ou PORTB=0B00000001 seul le bit B0 est égale a 1 Delay_ms(1000) retarder l événement d une seconde A.BARRA TP- MikroC

Exercices A.BARRA TP- MikroC

Clignotement des lampes sur port B à une seconde. Solution Void main() Exercices 1 : Clignotement des lampes sur port B à une seconde.   Solution Void main() { TRISB=0 ; Loop : PORTB=0 ; delay_ms(1000) ; PORTB=0B11111111 ; delay_ms(1000) ; goto Loop; } A.BARRA TP- MikroC

PORTB=~PORTB; delay_ms(1000) ; goto Loop; } Exercices 2 : Clignotement des lampes sur port B à une seconde avec l instruction « ~»  Solution Void main() { TRISB=0; Loop: PORTB=0; delay_ms(1000) ; PORTB=~PORTB; delay_ms(1000) ; goto Loop; } A.BARRA TP- MikroC

Allumage du port B suite à l amorçage d’un interrupteur Solution Exercice 3: Allumage du port B suite à l amorçage d’un interrupteur Solution Void main () { TRISB=0; TRISA.F0=1; Loop: If (PORTA.F0==0) {PORTB=0} Else {PORTB=1} goto Loop; }   Void main() Do{ If(PORTA.F0==0){PORTB=0} While(1);} A.BARRA TP- MikroC

Clignotement du port B 5 fois. Solution Void main () { Int x ; Exercice 4: Clignotement du port B 5 fois. Solution Void main () { Int x ; TRISB=0 ; For (x=0 ; x<5 ; x++) PORTB=0 ; delay_ms(1000) ; PORTB=0XFF; delay_ms(1000); } A.BARRA TP- MikroC

A.BARRA TP- MikroC