You are on page 1of 9

Lycée Technique Pierre Emile Martin STS Systèmes Electroniques 1ère année

INTRODUCTION AU MICROCONTROLEUR ET A SA PROGRAMMATION

Ce document a pour objet de présenter très succinctement le microcontrôleur et la chaîne de développement pour pouvoir réaliser rapidement des manipulations avec un µC PIC de Microchip et une chaîne de développement comprenant le logiciel de programmation graphique Multiprog.

1) PRESENTATION RAPIDE
Un microcontrôleur (µC) est un composant (un circuit intégré) qui permet de réaliser un traitement automatique de l’information. Les µC sont très utilisés dans les petits systèmes électroniques. Ils supervisent le fonctionnement.

Informations d'entrée

Traitement automatique µC

Informations,actions de sortie

Voici un exemple d’utilisation d’un µC dans un petit système, un récepteur d’émissions télévisées par satellite : Tâche réalisée Commande de déplacement de parabole de réception Informations d’entrée Informations de sortie • Impulsions pour le déplacement souhaité, 2 informations pour commander le envoyées par le démodulateur au travers déplacement dans les 2 du câble d’antenne • Impulsions en provenance du bloc moteur sens sur le déplacement effectif Le µC est placé dans un boîtier à côté du moteur qui commande le déplacement de la parabole. Dans cet exemple, le µC doit traiter les informations qui lui sont envoyées en série par le démodulateur pour récupérer le déplacement demandé. Il doit ensuite commander le moteur. Lors du déplacement, des impulsions sont envoyées. Le µC compte ces impulsions et coupe l’alimentation du moteur lorsqu’il en a compté le nombre correspondant au déplacement désiré. Le traitement automatique de l’information consiste en l’exécution par le µP d’une suite de tâches élémentaires appelée instructions. L’ensemble de ces instructions constitue le programme. Ce programme, dit programme exécutable, est enregistré dans la mémoire interne du µC. Le programme exécutable est du binaire. On utilise souvent le code hexadécimal pour le représenter de façon plus compacte. Ce programme est incompréhensible à un humain. Exemple : 1F283F3083160313850083128501FF30BC…

Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges

1

Le logiciel utilisé pour la saisie des algorigrammes source est Multiprog. Chaîne de développement Algorigramme source Programme exécutable µC cible Carte cible + carte d’interface Ordinateur + logiciels La chaîne de développe est constituée d’un ordinateur. on utilise une chaîne de développement. Pour obtenir le composant programmé depuis le programme source.Le programme exécutable est obtenu à partir d’un programme source écrit dans un langage de programmation évolué plus ou moins facilement compréhensible par un humain. avec des algorigrammes. en Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 2 . Un programmateur (Castorprog) est ensuite automatiquement lancé pour enregistrer le programme exécutable dans le µC cible. de plusieurs logiciels et d’une carte d’interface entre l’ordinateur et la carte cible. Un cours de synthèse sur les microcontrôleurs et microprocesseur aura lieu après les manipulations. Il permet la traduction automatique des algorigrammes en un programme en langage C. On s’intéresse ici à une chaîne de développement qui permet d’écrire le programme source en langage graphique. Multiprog lance ensuite automatiquement un compilateur (CC5X) qui traduit ce programme en langage C en programme exécutable. avec le moins possible de texte à entrer au clavier. Le fonctionnement du µC et la chaîne de développement nécessaires à la programmation sont introduits ici au travers d’un exemple volontairement très simple.

Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 3 .utilisant une petite carte d’interface connectée au PC par une liaison USB et à la carte cible par un câble avec connecteur RJ.

5V C2- R2 10k BP3 RD[0.Schéma de la carte cible utilisée J1 JACK5.7] RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 SW1 RC6 8 7 RC7 6 5 1 2 3 4 14 7 13 0V MAX232 5 1 SW3 8 C9 33pF C10 33pF RCO/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL 13 OSC1/CLKIN RC4/SDI/SDA RC5/SDO RC6/TX/CK XTAL1 RC7/RX/DT 16MHz 14 R10 0 OSC2/CLKOUT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 Boutons i RC[6.5 1 2 3 1 D1 2 1 U1 7805 IN F E R C11 1uF 2 Vss OUT 3 VDD C1 100n J3 1 2 1 3 2 4 3 4 1N4001 JP1 2 1 C12 100n Connecteur pour RC[0...5] carte d’extension P2 VDD C13 100n RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 1 3 5 7 9 11 13 15 17 19 21 23 25 JP2 1 3 5 7 9 11 13 15 17 19 21 23 25 2 4 6 8 10 12 14 16 18 20 22 24 26 2 4 6 8 10 12 14 16 18 20 22 24 26 RC5 RC4 RC3 RC2 RC1 RC0 VDD R7 680 LD4 POT1 Alimentation Bornier à v is P3 Les condensat eurs de 1µF peuv ent être remplacés par des condensateurs de 100nF av ec certaines v ersions de MAX232 MAQUETTE POUR TPs avec le PIC 16F877 VDD U2 10k VDD Composants pour interface RS232.7] VDD 9 RR2 10k RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 R11 R13 R15 R17 10k 10k 10k 10k RR1 680 LD6 LD7 LD9 LD10 LD12 1 2 3 4 5 6 7 8 Connecteur RS232 DB9 Mâle pour câble NULL MODEM R12 R14 R16 R18 SW2 10k 10k 10k 10k 16 15 14 13 12 11 10 9 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 PIC16F877 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 VDD 1 2 3 4 5 6 J2 1 2 3 4 5 6 Interrupteurs sur PORT C.7] BP2 connecteur HE10 BP1 33 34 35 36 R1 37 10k 38 39 RB6 40 RB7 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 RB[6...5V RC0 1 RC1 2 RC2 3 4 J4 1 2 3 4 C14 1uF RC3 1 RC4 2 RC5 3 4 J5 1 2 3 4 VDD R8 100k 1 R9 1k RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3/VREF MCLR/Vpp RA4/TOCKI RA5/AN4/SS RBO/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 2 3 4 5 6 7 R6 680 C8 1uF LD3 2 6 C15 1uF C16 1uF Borniers à v is 5 9 4 8 3 7 2 6 1 P1 C2+ -2VCC+1. VDD Nécessaire pour les échanges avec un 6 U4 1 C7 1uF 1 3 4 5 11 10 12 VCC C1+ C12VCC-1. February 05. 2006 Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 4 . Inter ouvert 1 Inter fermé 0 1 2 3 4 5 6 7 8 16 LD5 15 14 13 LD8 12 11 10 LD11 9 les LEDs sont déconnectables pour ne pas charger le port D lors de son utilisation avec le connecteur HE10 µC RB7 RB6 Connecteur pour module ICD Brochage conf orme Microchip Title Size A Date: LEDs sur PORT D Maquetteà 0 PIC16F877 Sortie TP LED éteinte Document Number Connecteur pour carte interface de la chaîne de développement Schém a s tructurel pour im plantation Sheet 1 Sortie à 1 LED of 1 Rev 1 Sunday .

Le port D est configuré en sortie pour permettre la commande des LEDs 3 Après avoir validé. une nouvelle feuille de travail apparaît.Le µC utilisé a toutes les broches situées à droite sur le schéma ci-dessus qui peuvent utilisées individuellement en entrées ou en sorties. 2 Créer un nouveau projet (Fichier/Nouveau ou icône avec bords bleus) la boîte de dialogue « Configuration du projet » s’ouvre. Par exemple. On peut alors enregistrer le projet. 4 Il faut choisir la carte d’interface utilisée pour la programmation du PIC cible : dans notre exemple Castor USB. certaines broches doivent impérativement être utilisées en entrées et d’autres en sorties. si on utilise les LEDs de la maquette. il faut que tout le PORTD (RD0 à RD7) soit utilisée en sorties. il n’y a qu’un seul algorigramme : Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 5 . on utilise cette boîte uniquement pour choisir le sens de transfert pour les entrées/sorties. Dans notre exemple. Cette opération est transparente à l’utilisateur avec Multiprog. 2) UTILISASTION DE LA CHAINE PROGRAMME ELEMENTAIRE DE DEVOLEPPOMENT AVEC UN 1 Lancement de Multiprog Il faut créer un nouveau projet ou ouvrir le fichier d’un projet déjà existant. 5 On peut ensuite dessiner le ou les algorigrammes. Le choix du sens de transfert s’effectue en écrivant un mot (=8 bits) dans un registre interne. Avec la maquette cible. Dans notre exemple.

Il suffit de cliquer sur les onglets Algorithme et Programme C. 6 Après avoir enregistré les modifications apportées au projet. le programme ne s’arrête jamais tant que la carte est alimentée. On choisit ici « Compilation sans mise au point ». on peut visualiser l’algorithme et le programme en langage C correspondant à l’algorigramme de départ. on continue le traitement sur la sortie horizontale.Placé avec le bouton début Placé avec le bouton while Choisi avec la boîte de dialogue Condition qui s’ouvre automatiquement lors du placement du symbole while Placé avec le bouton fin Placé avec le bouton calcul Placé avec un des boutons liaisons Placé avec le contextuel lien menu Ecrit sur la ligne n°1 de la boîte de saisie Calcul qui s’ouvre automatiquement lors du placement du symbole calcul. Tant que la condition décrite à l’intérieur du symbole est vraie. Dans notre exemple. Ceci s’effectue avec le bouton qui a la forme d’une flèche. Un carré rouge entourera le symbole correspondant à la partie du programme en train d’être exécutée. Le programme permet de placer sur le port D. le programme s’exécutera à plus basse vitesse et on verra sur l’algorigramme le déroulement du programme. 7 Après la traduction automatique. Dans le cas contraire. Une fois que le µC cible est programmé. il faut lancer la traduction automatique Algorigramme programme source en langage C + algorithme (uniquement pour visualisation). La boîte de dialogue ci-contre s’ouvre : Si on choisit « Compilation sans mise au point ». Le programme ne passe jamais vers la sortie « fin ». où sont connectées les LEDS. Ici =1 signifie que la condition est toujours vraie. où sont câblés les interrupteurs. la seule ligne d’écriture entrée au clavier est PORTD=PORTC. Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 6 . Le traitement « PORTD=PORTC » est dans une boucle sans fin. les valeurs lues sur le port C. le programme s’exécutera en vitesse normale après la programmation du µC cible. Si on choisit « Compilation avec mise au point ». on va sur la sortie avec une boule.

TRISB=0xFF. TRISC=0xFF.H> … void init(void) { TRISA=0x3F. On fixe ici le sens de transfert de chacune des E/S et la valeur 0 sur les sorties. PORTC=0x00. PORTE=0x00. ADCON1=0x06. PORTA=0x00. TRISE=0x07. Les valeurs à écrire dans les registres sont données dans la documentation technique du µC. PORTB=0x00. TRISD=0x00. Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 7 . } } Commentaires Programme Principal DEBUT Appel de la procédure d'initialisation TANT QUE ((1)) FAIRE PORTD=PORTC FIN TANT QUE FIN Procédure d’initialisation Les lignes qui suivent permettent d’écrire des valeurs dans des registres de commande. } //Programme Principal void main(void) { init(). PORTD=0x00. Traduction automatique Le programme commence ici Il n’est pas nécessaire de comprendre le programme en langage C pour programmer correctement une application. while ((1)) { PORTD=PORTC.Extrait de l’algorithme Procédure (Initialisation) Configuration des différents ports Algorigramme de départ Extrait du programme C #pragma chip PIC16F877 #include <int16CXX.

RP1 MOVF PORTC. PORTB=0x00. PORTE=0x00. TRISD=0x00. PORTA=0x00. PORTC=0x00.RP0 BCF 0x03. } } END Avec le programme de l’exemple.c dans le dossier d’installation de Multiprog) void init(void) { TRISA=0x3F. ADCON1=0x06. On peut alors débrancher la carte d’interface qui n’est plus nécessaire.RP1 MOVWF TRISA BCF 0x03. 9 Après la fin de l’application. Extrait du programme en langage C (pic. On peut examiner les fichiers créés par le compilateur.W MOVWF PORTD GOTO m001 Cette partie correspond à 6 instructions 6 mots en mémoire du µC Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 8 . Ceci s’effectue en cliquant sur le bouton CC5X (nom du logiciel pour la traduction automatique). PORTD=0x00.8 Il faut maintenant lancer la traduction automatique programme en langage C programme exécutable puis la programmation via la carte d’interface. while ((1)) { PORTD=PORTC. Il n’est pas nécessaire de comprendre le contenu des fichiers pour programmer correctement une application. TRISE=0x07. le programme s’exécute automatiquement.asm dans le dossier d’installation de Multiprog) init MOVLW 0x3F BSF 0x03. Extrait du fichier en langage d’assemblage (1 ligne = une instruction du µC) (pic.RP0 BCF 0x03. TRISC=0xFF.hex dans le dossier d’installation de Multiprog) :100000001E283F30831603 13850083128501FF30BD :10001000831686008312860 1FF30831687008312C1 :10002000870183168801831 28801073083168900AF :10003000831289010630831 69F0008000120831275 :080040000313070888001F 28C4 :00000001FF La partie du programme pour l’initialisation comprend 29 instructions du µC 29 mots en mémoire du µC CALL init m001 BCF 0x03. TRISB=0xFF. Des boîtes d’information apparaissent brièvement durant les opérations : La traduction automatique programme en langage C programme exécutable s’appelle la compilation. il y a 36 mots programmés en mémoire du PIC.RP0 CLRF PORTA … Fichier utilisé pour la progammation (pic. } //Programme Principal void main(void) { init().

25µs Copier les états logiques du registre W dans le registre de sortie du port D.W Signification / Remarque Copier les états logiques du port C (8 entrées) dans un registre interne appelé W (Working register = registre de travail) MOVF = MOVe (déplacer. L’exécution de cette instruction prend 4 cycles de l’horloge de séquencement du µC. La durée de l’exécution du programme est donc de 0. La durée de l’exécution du programme est donc de 0. En déformant un peu pour simplifier l’explication. Il délivre ensuite l’adresse de l’instruction suivante. GOTO m001 Cette instruction permet au µC de délivrer ensuite l’adresse de l’instruction repérée par l’étiquette m001 La durée d’exécution d’un passage dans la boucle sans fin de l’exemple est très courte : environ 1. une fois l’initialisation effectuée.3) QUELQUES ELEMENTS DU FONCTIONNEMENT DU µC Avec l’exemple utilisé.25µs MOVWF PORTD Chacun des codes des instructions ci-dessus est rangé en mémoires à une adresse qu’on peut déterminer dans le fichier utilisé pour la programmation (il faut être un spécialiste). Sur la maquette pédagogique cette horloge a une fréquence de 16MHz. Introduction au µC et à sa programmation / Philippe Morenton – LT PE Martin Bourges 9 . lit le code de cette instruction et l’exécute. le µC effectue quelques instructions en boucle. MOVWF = MOVe W to F. Ce qui suit indique la source et la destination. etc. le µC délivre l’adresse d’une instruction. L’exécution de cette instruction prend 4 cycles de l’horloge de séquencement du µC. Ce qui suit indique la destination.5 µs. Les plus importantes sont : Mnémonique MOVF PORTC. ici copier convient mieux) File (ici registre). Sur la maquette pédagogique cette horloge a une fréquence de 16MHz.