La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Utilisation de l’assembleur en Microcontrôleur

Présentations similaires


Présentation au sujet: "Utilisation de l’assembleur en Microcontrôleur"— Transcription de la présentation:

1 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 Année universitaire 2012/2013

2 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

3 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

4 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

5 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

6 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 montre qu’en moyenne, un foyer américain héberge environ 240 microcontrôleurs. A.BARRA TP- MPLAB

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 A.BARRA TP- MikroC

15 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

16 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

17 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

18 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

19 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

20 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

21 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

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

23 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

24 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

25 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

26 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

27 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

28 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

29 A.BARRA TP- MikroC

30 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

31 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

32 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

33 A.BARRA TP- MikroC

34 A.BARRA TP- MikroC

35 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

36 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: operation // Group of operators are executed if // selector and constant1 are equal break; case constant2: operation // 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

37 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

38 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

39 Exemples d’instructions utiles
TRISA= 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 =0b écrire 1 tout au long du port B PORTB.F0=1 ou PORTB=0B seul le bit B0 est égale a 1 Delay_ms(1000) retarder l événement d une seconde A.BARRA TP- MikroC

40 Exercices A.BARRA TP- MikroC

41 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=0B  ; delay_ms(1000) ; goto Loop; } A.BARRA TP- MikroC

42 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

43 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

44 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

45 A.BARRA TP- MikroC


Télécharger ppt "Utilisation de l’assembleur en Microcontrôleur"

Présentations similaires


Annonces Google