Professional Documents
Culture Documents
Micro-contrleurs Microchip
Intervenants :
Julien Marot - julien.marot@fresnel.fr
Marc Allain - marc.allain@fresnel.fr
Site : http://www.lsis.org/master/index.php?espace_etudiant=1&doc=103
Coordonnes
2
Organisation du cours
Contenu horaire :
3
! Contrle des connaissances
Notion de programmation
(algorigramme, concept de variable, fonction, etc.)
5
Objectifs du cours
Ddi un microcontrleur
Connaissances des diffrents types d'instruction
Notion d'interruption
Programmation en Assembleur
Programmation en langage C
6
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
8
L'informatique industrielle
Domaines d'applications :
Alarme, automobile, aviation, instrumentation, mdicale, tlphonie
mobile, terminaux de paiement pour carte bancaire ...
9
Image fournie par Microchip
L'informatique industrielle
Applications :
Automates, robotique,
Mesures de grandeurs physiques,
Systmes temps-rel,
Systmes embarqus.
10
Les diffrents systmes programmables
Les circuits spcialiss ou ASIC (Application Specific Integrated Circuit) :
Les circuits spcialiss sont des circuits spcialiss ds leur conception pour une
application donne.
Source : Texas
Instruments Source : NVidia
Avantages : Inconvnients :
Trs rapide Faible modularit
Consommation moindre Possibilit d'volution
Optimis pour une application limit 11
Les diffrents systmes programmables
Les systmes en logique programme et/ou en logique programmable sont
connus sous la dsignation de PLD (programmable logic device, circuit logique
programmable)
Avantages : Inconvnients :
Forte modularit Mise en oeuvre plus complexe
Rapidit Cots de dveloppement lev 12
Les diffrents systmes programmables
Les systmes micro-programms :
Micro-contrleur
Microchip PIC16F690 en
botier DIL20
Un micro-contrleur est un :
Avantages : Inconvnients :
Mise en oeuvre simple Plus lent
Cots de dveloppement rduits Utilisation sous optimale 13
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
15
volution et Loi de Moore
Source :
Intel
Source :
Intel
frquence de transfert.
17
Largeur du bus
8
Unidirectionnel
Bidirectionnel
Issu de la documentation
technique du PIC16F628
18
Structures des systmes micro-programms
19
Structures des systmes micro-programms
Structure de Von Neumann
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
?
Issu de la documentation
technique du PIC16F628
22
Savoir lire le schma
bloc dun micro-
contrleur
Les mmoires :
RAM (Random Access Mem.)
EEPROM
Registre(case mmoire)
ALU
Multiplexeur
Dcodeur dinstructions
horloge
Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)
24
Savoir lire le schma
bloc dun micro-
contrleur
Registre (case mmoire)
ALU
PC (Program Counter)
Multiplexeur
Dcodeur dinstructions
horloge
Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)
Issu de la documentation 25
technique du PIC16F628
Savoir lire le schma
bloc dun micro-
contrleur
Ports dentres/sorties
USART
(Universal Synchronous Asynch.
ReceiverTransmitter)
interface de communication
srie,
CCP (Capture/Compare/PWM)
Modulation en largeur
d'impulsions,
Timer
Comparateur
CAN/CNA
Rfrence de tension
Module HF
Liaison USB, ...
26
Les lments de choix
Caractristiques lectriques :
Architecture : Frquence dhorloge
Fonctionnalits :
Fonctions analogiques : CAN, CNA, Comparateur,
...
Fonctions de timing : Timer, Watchdog, ...
27
Source : Microchip
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
On rappelle tout d'abord les diffrentes bases qui nous seront utiles :
29
Codes pondrs
Dans une base donne, le nombre s'exprime comme une somme pondre.
Par exemple, le nombre 128 dcimale (base 10) est constitu de 3 chiffres :
Chiffre Poids
30
Codes pondrs
Chiffre Poids
31
Codes pondrs
Dans une base donne, le nombre s'exprime comme une somme pondre. Par
exemple, le nombre 1F8 hexadcimal (base 16) est constitu de 3 chiffres :
1 F 8 = (1F8)h 32
Conversion
Conversion en dcimal : dveloppement en somme de puissances de
la base.
(1 0 0 1)b
3 2 1 0
12 02 02 12
Soit 3 2
12 02 02 12 =81=9b
1 0
(3 2 F)h
2 1 0
316 216 1516
2 1 0
316 216 1516 =7683215=815b
33
Conversion dcimal binaire : division par 2 successives...
(14) 2
(14)d = (1 1 1 0)b
d
0 7 2
1 3 2
Se
ns 1 1
de
le
ct
ur
e.
..
(282)d 16
(282)d = (11A)h
10= 17 16
A 1 1
Se
ns
de
le
ct
ur
e.
..
34
Binaire, octal, dcimal et hexadcimal
35
Binaire, octal, dcimal et hexadcimal
Soustraction : V = A B,
Pour calculer V, on calcule la somme entre A et le complment deux de B
Exemple : (0110)b (0101)b = (0001)b
Complment deux : remplacer les un par des zros (et vice-versa), puis ajouter 1.
Exemple : (1011) donne (0100)b + (1)b = (0101)b
37
Exercices 1 : effectuez les additions binaires suivantes
Exercices 2 :
Exercices 3 :
38
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
40
Instructions
41
Pipeline et flot dinstructions
Temps
1 2 3
1 2 3
1 2 3
Cration dun pipeline => permet uneexcution plus rapide des instructions
Temps
1 2 3
1 2 3
1 2 3 42
Les diffrents modes d'adressage
La nature et le nombre doprandes qui constituent une instruction dtermine le
mode dadressage de linstruction. On distingue 4 modes dadressage
principaux.
ex : NOP,RESET,CLRWDT ;
43
Les diffrents modes d'adressage
La nature et le nombre doprandes qui constituent une instruction dtermine le
mode dadressage de linstruction. On distingue 4 modes dadressage
principaux.
ex : MOVLW5Ah;
44
Les diffrents modes d'adressage
La nature et le nombre doprandes qui constituent une instruction dtermine le
mode dadressage de linstruction. On distingue 4 modes dadressage
principaux.
ex : ADDWF 000Fh,
45
Les diffrents modes d'adressage
La nature et le nombre doprandes qui constituent une instruction dtermine le
mode dadressage de linstruction. On distingue 4 modes dadressage
principaux.
ladressage indirect (index) : loprande est ladresse dun registre qui contient
ladresse de la donne.
NOTE : Il existe de nombreux autres modes dadressage (ex. implicite, inhrent, relatif) :
leur nombre varie en fonction du constructeur et du micro-contrleur !
46
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
48
Table de vrit
Considrons tout d'abord le cas de la logique combinatoire 1 sortie (le cas
plusieurs sorties n'est pas trs diffrent). Pour connatre l'tat du systme aux
divers combinaisons logiques des entres on construit la table de vrit qui
exprime la valeur de la sortie s en fonction de toutes les configurations possible des
entres binaires (Ei), cf. ci-dessous.
E1 E2 E1 E2 E3
On notera que pour une fonction logique une seule variable d'entre, il existe 22=4
combinaisons de sorties.
E1
E1 E2
49
Oprateurs lmentaires
Dans ces configurations, on extrait typiquement 6 fonctions logiques d'intrt que
sont les oprateurs NON (une entre), ET, OU, ET-NON, OU-NON, et OU-EXCLUSIF
(deux entres).
E E1 E2
E1 E2
NON OU ET
E1 E2
E1 E2 E1 E2
OU-EX ET-NON OU-NON
Les oprateurs ET-NON et OU-NON forment un groupe complet, c..d. que toute
fonction logique complexe peut tre construite sur la base de l'une de ces fonctions
lmentaires. 50
Algbre de BOOL
ET AB OU-NON, A B
OU, A B OU-EXCLUSIF A B
Associativit : Commutativit :
ABC= ABC AB =BA AB=BA
A B C= A BC A B= B A A B= B A
A BC=A B C A B= B A
A BC = A B AC AB= AB
A BC = AB AC A B= AB 51
Le chronogramme
Dans les microcontrleurs, les tats du systmes changent en fonction d'une base
de temps qui est l'horloge. Ceci conduit naturellement introduire les chronogramme
comme outil d'analyse des tats logiques d'un systme.
52
Les bascules asynchrones
Pour l'essentiel, une bascule asynchrone est une fonction mmoires qui est
commande. Ce type de fonction est notamment utilises pour crer des registres du
microcontrleur.
Le verrou D (Latch D)
Le verrou D (ou bascule D asynchrone) est trs rpandue : elle copie en sortie l'tat
de l'entre D uniquement si sa commande C est active ; dans le cas contraire, l'tat
en sortie Q est celui prcdent, cf. chronogramme.
53
Exercice : tude de la bascule RS
54
Les bascules synchrones
Une bascule synchrone est une bascule qui ne change d'tat que sur front montant
ou descendant appliqu sur son entre de commande. Ce type de bascule est la base
du fonctionnement du microcontrleur.
La Bascule D (Flip-Flop D)
C'est la version synchrone du verrou D !
55
Les bascules synchrones
56
Structures des ports dentres/sorties
De fait, il est donc ncessaire de configurer la direction du port (in ou out). Dans le
microcontrleur, des registres spcifiques sont ddis la gestion de ces ports...
57
Extrait de la documentation technique du PIC18F4520 de Microchip.
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
Le registre W (accumulateur)
60
Phase de dmarrage du micro-contrleur
61
Organisation de la mmoire programme
Adressage immdiat
Droulement:
(1) Le compteur programme indique
ladresse de linstruction suivante dans la
mmoire programme. (2) Linstruction est
lue et stocke dans le registre
dinstruction. (3) Puis elle est dcode
par le module de dcodage et de contrle
des instructions. (4) Finalement elle est
excute. 63
Excution dune
instruction
Adressage direct (tendu)
Droulement:
(1) Lecture de linstruction dans la
mmoire programme l'adresse pointe
par le compteur programme. (2) Lecture de
?
linstruction et dcodage. (3) Pour
ladressage direct, loprande constitue la
partie basse de ladresse mmoire sur
laquelle seffectue lopration, la partie
haute est complte avec le registre BSR.
(3') Pour ladressage tendu, loprande
est ladresse complte de la case mmoire
sur laquelle seffectue lopration. (4)
Finalement linstruction est excute sur la
case mmoire pointe.
64
Organisation de la mmoire donnes
Access Bank
65
Pagination de la mmoire
La pagination de la mmoire consiste diviser la mmoire en blocs (pages)
de longueur fixe. (Source : Comment a Marche)
Attention !! En adressage
direct, on doit sassurer que
lon travaille dans la
bonne page mmoire.
66
Excution dune
instruction
Adressage direct (tendu)
Droulement:
(1) Lecture de linstruction dans la
mmoire programme l'adresse pointe
par le compteur programme. (2) Lecture
de linstruction et dcodage. (3) Pour
ladressage direct, loprande constitue la
partie basse de ladresse mmoire sur
laquelle seffectue lopration, la partie
haute est complte avec le registre BSR.
(3') Pour ladressage tendu, loprande
est ladresse complte de la case mmoire
sur laquelle seffectue lopration. (4)
Finalement linstruction est excute sur
la case mmoire pointe.
67
Excution dune
instruction
Droulement:
(1) Lecture de linstruction dans la
mmoire programme l'adresse pointe
par le compteur programme. (2) Lecture
de linstruction et dcodage. (3) La valeur
de loprande indique le pointeur
utiliser. (4) La valeur pointe est lue
(avec un ventuel dcalage en mmoire).
(5) Finalement linstruction est excute
sur la valeur pointe.
68
69
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
(3) La phase de test doit tre mene pour vrifier que le cahier des charges initial
est bien rempli. Cette phase de test finale n'empche pas d'avoir mener des
tests spars lors des phases de dveloppement matriel et logiciel.
71
Chacune de ces trois tapes prcdente peut tre relativement complexe et
mobiliser des moyens financiers et humains consquents. Par ailleurs, le test une tape
peut remettre en cause les choix fait une tape prcdente : en pratique, on est donc
plutt confronter un cycle de conception plutt qu' un enchanement parfaitement
squentiel !
Dveloppement matriel
Dveloppement logiciel
72
Le dveloppement du logiciel
Source : Microchip
les instructions de contrle : org = dbut du programme, end = fin du programme, etc. ;
les instructions conditionnelles: if, else, endif, etc. ;
les instructions relatives aux donnes : res = rservation despace mmoire, etc. ;
les instructions pour les macros
75
Algorigrammes
Dbut, Fin,
Sous-programme
Interruption
Initialisation
Test d'une condition Faux
Instruction Vrai 76
Premier programme
en assembleur
Dbut
Broche 1
du PORTB
l'tat haut ?
77
Structure dun programme en assembleur
Dans un programme en assembleur, on peut distinguer une partie prliminaire qui
est systmatique c..d. qui ne changent pas d'un programme l'autre.
;
; Filename : premier_programme.asm
;
; Description :Recopie de l'tat de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
; Author: Eric Magraner
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2006/07
Dbut
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
; Author: Eric Magraner
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2006/07
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
79
La dclaration du micro-contrleur permet au compilateur de gnrer un code
machine qui soit comprhensible pour le microcontrleur que vous souhaitez programmer.
;
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
; Author: Eric Magraner
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2006/07
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
80
Une directive au pr-processeur demande l'inclusion d'un fichier de dfinition
spcifique au microcontrleur qui dfinit certaines configurations matrielles par dfaut et
permet de simplifier l'criture des programmes, cf. transparent suivant.
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
; Author: Eric Magraner
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2006/07
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
81
Extrait du fichier p18f4510.inc de dfinitions propre au micro-
contrleur
82
Une directive au pr-processeur supplmentaire peut tre spcifie de manire
modifier la configuration par dfaut tablit dans p18f4510.inc.
Note : pour savoir comment modifier ces configurations, il faut aller voir le fichier
p18f4510.inc.
; Filename : premier_programme.asm
;
; Description :Recopie de l'tat de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
; Author: Eric Magraner
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2006/07
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
; #include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
83
Exemple de ce que pourrait tre le fichier MA_CONFIG.inc
84
On peut distinguer ensuite une seconde partie qui correspond la configuration des
lments du microcontrleur qui entrent directement en jeu dans la fonction ralise...
86
La troisime partie du programme est ddie la ralisation de la fonction
principale, c..d. la boucle et le test.
Broche 1
du PORTB
l'tat haut ?
Broche 2 du Broche 2 du
PORTB PORTB
l'tat haut l'tat bas
END
87
Plan
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
89
Les interruptions
Un bit de flag
indique quune interruption a t dclenche et indique la source.
Un bit de validation
permet lutilisateur dactiver ou non une interruption.
Un bit de priorit
permet de slectionner la priorit (haute/basse) de linterruption.
- le fonctionnement de la logique
dinterruption,
91
Droulement d'une interruption
(2). Sauvegarde des donnes : le micro-contrleur sauve une partie variable (en
fonction du type dinterruption) de son tat interne dans la pile, notamment ladresse
dans la mmoire programme o le micro-contrleur sest arrt.
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
Dbut Interruption
Restauration du contexte
Fin Retour au programme principal
94
Le dbut d'un programme en assembleur, avec interruption, reste trs proche de celui
d'une version sans interruption. On peut tout de mme remarquer des directives de
rservation d'emplacements mmoire en prvision de la sauvegarde du contexte lors
de l'interruption.
; Filename : premier_programme_interruption.asm
; Change l'tat de la broche 2 du PORTB chaque front
; montant sur la broche 1 du PORTB (gestion par interruption
; Author: Eric Magraner
; Company: Universit Paul Czanne
; Revision: 1.00
; Date: 2006/07
list p=18f4520
Dbut ; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
movlw 0Fh
movwf ADCON1 ; Broche 14 du PORTB en E/S num.
NOP movlw b'10010000'; 0x90 -> w
movwf INTCON ; w -> INTCON (Init. du registre d'interrup.)
Fin
boucle nop
goto boucle
END
96
Le registre d'interruption INTCON permet, d'une part d'activer les interruptions
(bit 7), et d'autre part d'activer le mode interruption externes INT0 (bit 4). Dans ce
cas, l'interruption sera dtecte sur la broche 0 du port B (cf. datasheet).
97
Le dclenchement d'une interruption conduit le microcontrleur sauver l'adresse
de l'instruction courante dans la pile, puis charger le vecteur d'interruption dans le PC.
routine_interruption
; Sauvegarde du contexte
movwf W_TEMP ; Sauvegarde de W
movff STATUS, STATUS_TEMP ; Sauvegarde de STATUS
Interruption
movff BSR, BSR_TEMP ; Sauvegarde de BSR
Sauvegarde du contexte
; identification de l'origine de l'interruption
Identification de l'interruption
btfsc INTCON,1
goto interruption_INT0
bra restauration_contexte
98
Il faut ensuite systmatiquement (3) mettre zro le bit d'interruption puis, (4)
excuter la fonction pour laquelle l'interruption a t prvue, et enfin (4) faire la
restauration du contexte (5) et retourner au programme principal.
interruption_INT0
Suppression du flag
d'interruption bcf INTCON,1 ; Suppression du flag d'interruption
retfie
99
Structure gnrale dun programme
Identification de linterruption et
suppression du flag dinterruption
Configuration
Routine dinterruption
Programme principal
Rtablissement des donnes
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
104
Extrait du data-sheet du PIC18F4520, p. 123-125
105
Extrait du data-sheet du PIC18F4520, p. 123-125
106
Questions :
107
Algorigramme
!
T ER
P L
O M
C Dbut
A
NOP
Fin
108
! Programme assembleur
TER
P L
O M
C
A
; Filename : timer0.asm
;
; Description : Gnration d'un signal carr sur la
; broche 1 du PORTB par utilisation du module TIMER0
;
; Author:
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2007/09
Dbut
109
! Programme assembleur [suite]
TER
P L
O M
C
A
110
Capture, Compare, PWM
capture
Le mode capture dclenche une action si un vnement pr-
dtermin apparat (ex : changement dtat sur une broche). Utilis avec
les timers, ce module peut compter les temps d'arrives.
compare
Le mode compare effectue une comparaison permanente entre le
contenu dun timer et une valeur donne pour dclencher une action si ces
contenus sont gaux.
111
Illustration par un exemple simple...
Questions :
112
Algorigramme
!
T ER
P L
O M
C Dbut
A
NOP
Fin
113
! Programme assembleur
TER
P L
O M
C
A
; Filename : pwm0.asm
;
; Description : Gnration d'un signal carr sur la
; broche 2 du PORTC par utilisation du module PWM
;
; Author:
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2007/09
Dbut
114
Les comparateurs
115
Illustration par un exemple simple...
Questions :
117
! Programme assembleur
TER
P L
O M
C ; Filename : comparator.asm
A
;
; Description : Gnration d'un signal carr sur la
; broche RB0 par TIMER0 et ajustement de la frquence en
; fonction d'une comparaison une tension de rfrence.
;
; Author:
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2007/09
Dbut
118
! Programme assembleur [suite]
TER
P L
O M
C
A
119
Module de conversion
analogique/numrique
Le module de conversion analogique/numrique permet de convertir le
signal analogique prsent sur une broche du micro-contrleur en un signal
numrique.
la dynamique
Indique le nombre de bits utilise pour coder une
valeur analogique en numrique.
la frquence dchantillonnage
Questions :
Questions :
122
Algorigramme
!
T ER
P L
O M
C
A
123
! Programme assembleur
TER
P L
O M
C ; Filename : CAN.asm
A
;
; Description : Gnration d'un signal carr sur la
; par le module PWM avec ajustement de la frquence en
; continu par conversion AN sur broche AN0.
;
; Author:
; Company: Universite Paul Cezanne
; Revision: 1.00
; Date: 2007/09
Dbut
124
! Programme assembleur [suite]
TER
P L
O M
C
A
125
Le chien de garde (Watchdog)
126
Les diffrents modes de fonctionnement
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
main(){
fichier texte fichier texte fichier objet
int MAX, cpt; *.c *.h *.o
MAX = 0x45;
for(cpt=0; cpt< MAX; cpt++)
}
Entres (sources)
Compilateur C
Assembleur (ici C18)
Fichiers pr
compils Construction de
librairies
Scriptes de
configuration
de l'diteur de lien
diteur de
liens
Sorties
(excutable, etc.)
131
Vous avez accs la majorit des fonctionnalits du C de la norme
ANSI C. Vous pouvez donc crire quelque chose comme
vitesse=0x27
pour faire l'affectation d'une variable code sur 8 bits, ou encore
if(vitesse==limite)
pour effectuer un test d'galit entre deux variables entires codes sur un
nombre de bits appropris.
Par contre, les instructions grants les entres et sorties (cran, clavier,
! disque, etc.) n'ont pas toujours de sens dans ce type de contexte ; cf. TP.
132
Un premier programme en C
//================================ Fichier des en-ttes de fonction pr-
// Filename: PremierProgramme.C compiles spcifiques au microcontrleur
//================================ considr. Contient notamment les
// Author: marc ALLAIN quivalences nom & adresses.
// Company: Universite Paul Cezanne
// Revision: 1.00
// Date: 2006/07 Dclaration d'un alias au prprocesseur (i.e.,
//================================ duree sera systmatiquement remplac par
10000).
#include <p18f4520.h>
#define duree 10000
#pragma config WDT = OFF Directive pour adresser des emplacement
spcifiques de la mmoire programme ou
// Dclaration des variables globales donnes (cf. plus loin).
char c;
float pht;
// Programme Principal
void main()
{
PORTB = 0x00;
TRISB = 0x00; Dclaration d'une fonction
while(1){
PORTB++;
tempo(duree);
}
}
Affectation de registres du microcontrleur ;
tempo(unsigned int count){
while(count--);
PORTB et TRISB sont dclars dans p18f4520.h
}
133
Les oprateurs du langage C
134
Oprateurs d'accs la mmoire, etc.
135
! Types de donnes
Le format est celui du bus de donne pour les types char et unsigned
char. L'utilisation de variables plus grandes est nanmoins permise. Par
exemple, une dclaration de la forme
#pragmaidatatest=0x0200
longl=0xAABBCCDD;
conduit au stockage mmoire suivant
136
Structures & champs de bits
Les structures sont des types composites dans lesquels des variables de
types distincts peuvent cohabiter...
structprof{ intmain(){
charnom[30]; structprofDEP_SDM[10];
charprenom[30];
charlabo[30]; DEP_SDM[0].tel=2878;
inttel; strcpy(DEP_SDM[0].nom,''allain'');
intHETD; strcpy(DEP_SDM[0].prenom,''marc'');
}; ...
}
Les structures champs de bits permettent d'accder explicitement
des sous-ensembles d'une variable : le premier champ correspond au bit 0 et le
nom de l'lment est suivi par le nombre de bits associ.
struct{
unsignedRB0:1;
unsignedRB1:1;
unsignedRB2:1;
unsignedRB3:1;
unsignedGROUPE:3;
unsignedRA7:1;
}PORTBbits;
externvolatilenearunion{
struct{
unsignedRE0:1;unsignedRE1:1;
unsignedRE2:1;unsignedRE3:1;
};
struct{
unsignedRD:1;unsignedWR:1;
unsignedCS:1;unsignedMCLR:1;
};
struct{
unsignedNOT_RD:1;unsignedNOT_WR:1;
unsignedNOT_CS:1;unsignedNOT_MCLR:1;
};
struct{
unsigned:3;unsignedVPP:1;
};
struct{
unsignedAN5:1;unsignedAN6:1;unsignedAN7:1;
};
}PORTEbits;
_asm /*Userassemblycode*/
MOVLW10 //Movedecimal10tocount
MOVWFcount,0
start: /*Loopuntilcountis0*/
DECFSZcount,1,0
GOTOdone
BRAstart
done:
_endasm
139
La conversion de type (cast)
Une conversion de type intervient lorsqu'un oprateur doit agir sur des
oprandes de types diffrents. En gnral, les oprandes sont alors
converties selon la rgle suivante :
ecart =distance/(float)(nbp1);
tronque =(int)ecart;
ecart=2
140
Modificateurs de type
Associ chacun des types, le compilateur C18 supporte les
modificateurs de type classiques qui sont
const : une constante stocke en ROM qui ne pourra pas tre modifie.
ex. constintMAX=10000;
volatile : une variable stocke en RAM ou en pile qui peut tre modifie
(dfaut).
ex. unsignedcharPORTB=0xF0;
141
Variables globales, locales...
La programmation en langage C se base entirement sur des fonctions
dont la principale est main(). La dclaration de variable peut tre faite
l'intrieur ou l'extrieur d'une fonction avec des effets distincts (notion de
classes des stockage).
ex. #include<pic18f4520.h>
intMAX;
main(){...}
ex. voidfunction1(){
overlayintx=5; returnx;}
voidfunction2(){
overlayinty=2; returny;}
143
Les directives pragma !
#pragmainterruptlowroutine_int_low
voidroutine_int_low(){
...};
#pragmainterruptlowroutine_int_lowsave=ma_variable
Interruption
Dbut
Identification de l'interruption
Broche 2 7 du PORTB en sortie
Broche 1 du PORTB en entre
RAZ du PORTB
Broche 1 4 du PORTB en E/S numrique Suppression du flag d'interruption
Interruption chaque front montant sur la
broche 1 du PORTB
Retour au
programme principal
Fin
146
Gestion des interruptions (2)
//=======================================
// Filename: premier_programme_C.C
//=======================================
// Author: Marc Allain
// Company: Universite Paul Cezanne
// Revision: 1.00
// Date: 2007/10
//========================================
#include <p18f4520.h>
#pragma config WDT = OFF
// Programme Principal
void main()
{
PORTB = 0;
TRISB = 0x01;
LATB = 0;
ADCON1 = 0x0F;
INTCON = 0x90;
while(1){
}
}
147
Gestion des interruptions (3)
148
Quelques astuces/piges en
langage C
149