S. Caut et O. Bachelier
mars 2003
1
1.1
Un micro contrleur (C) est un circuit intgr qui, en lui-mme, n'a pas de fonction spcique ou particulire ddie. On ne peut pas pour autant dire qu'il ne sait rien faire car il dispose d'un ensemble de fonctions prdnies appel jeu d'instructions. Ce dernier permet au En eet, le moire. Pour mettre en oeuvre un
C,
le programme. Un programme est donc une squence d'instructions excutes l'une aprs l'autre. Pour crire un programme correct, il convient de savoir quel est le langage compris par le
C,
I1 , I2 , I3
et trois lampes
L1 , L3
et
L3 .
Problme 1 :
Ki
allume
Li , i {1; 2; 3}.
Solution 1 : un simple petit montage lectrique sut. Problme 2 : les trois interrupteurs ensemble allument
actionns,
L1 ,
Si seuls
I1
et
I3
sont
L3
s'allume. Si
I1
ou
I2
sont actionns,
L2
doit s'allumer.
Solution 2 : Il sut de mettre en place une logique cble avec des portes comme
celle de la gure ci-dessous.
L1 I1 I2 I3 L3
Problme 3 : si les trois interrupteurs sont actionns,
secondes puis se met clignoter. Si seuls
L2
L1
I1
et
I3
et
(mais pas
I2 )
sont actionns,
L1
s'allume et
L2
I1
I2
sont actionns,
L1
et
L3
L2
clignote en opposition.
Montage Electronique
Entres
Cable
1.2
L'architecture d'un
Sorties
Logique
Mmoires P
RAM ROM EPROM EEPROM
Priphriques
Liaisons "srie" Liaisons parallles Timer ...etc...
avec des zones de mmoire et un certain nombre de priphriques par l'intermdiaire de lignes de commande ou de bus. Tout ce fonctionnement est cadenc par une l'intrieur du
Toutes ces entits sont regroupes en un seule circuit intgr (une puce). Le rle de quelques unes de ces entits est dtaill ci-dessus.
1.2.1 Le rle du P
Sa seule fonction est de prendre des donnes provenant de priphriques ou de la mmoire, de leur faire subir un traitement, puis de les renvoyer sur des priphriques ou dans la mmoire. Il se compose plus prcisment des lments suivants : 1. un
permet de faire des oprations arithmtiques et logiques lmentaires sur les donnes manipules par le divisions, Et logique, OU logique, ...). 2.
4.
la logique d'adresse :
elle permet au
6.
Digit). Un octet se dnit par une information de 8 bits et un mot par une information de 16 bits).
Sur ce bus, peuvent donc circuler la mmoire o : soit se trouve une donne que le
216
doit rcuprer ;
sur lequel circulent les informations utiles que le des codes de caractres,...) autres que les adresses.
Les lignes de contrle servent entre autres spcier si les donnes sont lues (R) partir de la mmoire ou si elles sont crites en mmoire (W).
C,
La RAM (Read Access Memory) : c'est une zone de mmoire dans laquelle le
On y trouve les donnes utiles l'excution de ce programme telles que les variables ; La ROM (Read Only Memory) : c'est une zone de mmoire dans laquelle le le
P C
ne peut que lire. On peut y trouver des informations prdnies sur qui ne peuvent ni ne doivent tre modies (telles que le programme
L'EPROM (Electrical Programmable Read Only Memory) : c'est une ROM dans laquelle on peut crire en dehors de l'excution par un procd bien particulier et qui ne pourra plus tre modie. C'est dans ce bloc-mmoire que l'on crit le programme excuter. Si on utilise une EPROM, cela signie que le E2 qui sera utilis en TP). l'EEPROM (Erasable Electrical Programmable Only Memory) : elle est comparable l'EPROM mais on peut la reprogrammer c'est--dire renouveler les instructions qui s'y trouvent, ceci toujours en dehors de l'excution. En pratique, le programme sera charg dans l'EEPROM par un logiciel. C'est le type de ROM prsent sur le 68HC811E2.
sont capables d'changer des informations binaires avec le Parmi eux, on trouve entre autres le
P.
Timer qui utilise l'horloge an de permettre au P de grer des propriphriques de liaison (srie ou parallle) qui permettent au C CAN (Conver-
d'changer des donnes avec l'environnement extrieur (captuers, actionneurs) ; dans le cadre plus gnral de cet change avec l'extrieur, les
tisseurs Analogiques Numriques) qui permettent de convertir une tension analogique provenant d'un signal extrieur en une donne numrique exploitable par le qui mettent vers l'extrieur, sous forme d'une tension analogique, une donne numrique fournie par le la
dr par l'extrieur, qui survient inopinment et qui doit tre immdiatement pris en compte par le ce cas de gure. logique d'interruption est un organe du
charg d'assister le
dans
1.3
Les applications du
des appareils lectriques un peu sophistiqus c'est--dire ralisant plusieurs fonctions direntes (en particulier des fonctions d'achage). Les secteurs industriels
puces, appareils mdicaux, domotique, automates en tous genres, ...et bien sr n'importe quel ordinateur personnel comporte un
Les principaux fabricants de ce type de composants sont Intel (le Pentium), Motorola (le
1.4
parle le
P.
Soyons honnte,
prcisment, il ne comprend et n'interprte que des informations binaires, c'est-dire composes de 0 et de 1.Ces deux valeurs correspondent en fait aux deux niveaux de tension que l'on peut rencontrer dans un mentation (le "1"). Ainsi, chaque chire du code (donc forcment un 0 ou un 1) est appel un niveau suprieur de tension (entre 2 et 5V) dpendant de la tension d'ali-
bit (pour
binary digit).
Une information code sur 4 bits (exemples : 0011 ou encore 1111) est appel
interprtes de diverses faons. Par exemple, on peut coder les nombres entiers
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 1010 1011 1100 1101 1110 1111 10 11 12 13 14 15
Une information code sur 8 bits (exemples : 00110101 ou encore 10101111) est appel
octet (byte en anglais). On peut obtenir 28 = 256 codages binaires mot (word).Exemple :
dirents qui peuvent tre interprtes de diverses faons. Par exemple, on peut coder les nombres entiers de 0 255 sur un seul octet. Une information code sur 2 octets (16 bits) est appel un 1101010100001111.
La reprsentation hexadcimale
Comme il est parfois fastidieux d'crire les informations (le plus souvent des nombres) en binaire, on lui prfre une criture en
16). Ainsi, un quartet peut tre reprsent comme son interprtation en nombre de la base 16. Ceci revient noter les 16 quartets dirents ainsi :
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 1010 1011 1100 1101 1110 1111 A B C D E F
Le langage machine est celui que comprend rellement le d'excution est rapide. Pour tre compris par un duit en langage machine.
P,
Remarque : Lorsque, dans un programme en Assembleur, une valeur est prcde du caractre '$', ceci signie qu'elle est donne en hexadcimal. Si le programme est en langage C, le '$' est rempalc par '0x'.
Assembleur.
L'assembleur reste rapide d'excution. Il est extrmement rare de programmer en langage machine mais si le temps d'excution et la taille du programme sont des facteurs prpondrants dans le choix du programmeur, l'assembleur est un choix judicieux. Chaque fabricant voire chaque
chine mais ce dernier peut gnrer beaucoup de code machine. En consquence, un langage structur ncessite plus de mmoire et induit des temps d'excution plus longs. Malgr l'existence de compilateurs optimisant leur traduction,
le langage mnmonique reste le meilleur moyen de crer des programmes courts et rapides lorsque la dicult du problme pos le permet. Parmi les langages structurs connus, on peut citer le Basic, Fortran, le C, le Pascal, l'ADA, les langages orients objet (C++,ADA orient objet, JAVA...), etc... Nous tudierons le langage C en TD et TP.
1.4.5 En rsum
Les paragraphes prcdents sont rsums par la gure ci-aprs.
Implantation
Micro controleur
LE C 68HC11
10
2
2.1
LE C 68HC11
Structure du 68HC11
savoir :
les mmoires ; les interfaces Entre/Sorties (dont la logique d'interruption). Mais il comprend aussi un certain nombre de ressources que l'on ne retrouve pas toujours sur d'autres des timers ; des CAN, CNA ; des liaisons sries synchrone et asynchrone ; des extensions mmoire. D'aspect gnral, le 68HC11 se prsente comme un petit carr de silicium biseaut sur un angle et comportant 52 broches pouvant tre connectes des composants extrieurs (gure ci-dessous).
C,
savoir :
LE C 68HC11
11
LE C 68HC11
12
2.2
La mmoire du 68HC11E2
amener distinguer trois zones de mmoire selon leurs adresses : $0000$0055 : la RAM ou seront stockes les donnes utilises et cres par le programme. $1000$103F : les registres de fonctions dont l'utilisation doit tre apprhende au fur et mesure que leur utilisation est ncessaire (voir tableau registres de fonctions). $F800$FFFF : l'EPROM dans lequel le programme sera tlcharg.
LE C 68HC11
Les entres/sorties du 68HC11
13
2.3
Ce paragraphe est ddi l'tude des changes d'information entre le l'environnement extrieur au moyen de ports d'entre/sortie.
et
2.3.1 Les ports d'entres et les ports de sorties A l'exception du port D qui comprend seulement 6 lignes d'entre/sortie, les
4 autres ports en comportent 8. Ces lignes autorisent : soit le transfert d'une information de type 0 ou 1 provenant de l'extrieur vers le
soit le transfert d'une information du mme type du on parle alors de lignes de sortie.
vers l'extrieur :
Certaines lignes peuvent tre congures en entre ou en sortie. Ces informations, codes sur 8bits, peuvent circuler des ports vers le
bus de donnes.Les
ou du
LE C 68HC11
14
PORTA ($1000)
PA7 PA6
PA5 PA4
PA3 PA2
PA1
PA0
PACTL ($1026)
DDRA7 1 0
DDRA3 1 0
Le PORTC (adresse $1003) est entirement congurable en entre/sortie ; La conguration de ses lignes se fait par une criture dans le registre DDRC (adresse $1007). Voir gure ci-dessous.
PORTC ($1003)
DDRC ($1007)
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
Le PORTD (adresse $1008) comporte 6 lignes congurables par l'criture dans le registre DDRD (adresse $1009). Voir gure ci-aprs.
PORTD ($1008)
DDRD ($1009)
1 0
1 0
1 0
1 0
1 0
1 0
LE C 68HC11
Les registres internes
15
2.4
Est prsent, dans ce paragraphe, l'intrt de plusieurs registres trs utiles dans le fonctionnement du 68HC11.
2.4.1 Les registres de 8 bits Les accumulateurs : Il existe deux registres appels accumulateurs correspondant un octet. Ils sont nots A et B et servent faire toutes sortes de manipulations sur des donnes de 8 bits. On peut y stocker temporairement une valeur, faire une opration sur cette valeur l'intrieur de l'accumulateur ou encore utiliser cet accumulateur pour ranger la donne en mmoire. La concatnation des accumulateurs A et B constituent ce qui est appel le registre D (voir gure ci-dessous).
A D
Le registre CCR : il s'agit d'un registre qui est susceptible d'tre modi
chaque fois qu'une instruction est excute. Il se prsente comme suit :
CCR
On peut s'attarder sur quelques bits de CCR qui seront peut-tre utiliss dans le cadre de cet enseignement :
V (Overow)
Z (Zero) : il est mis 1 lorsque le rsultat de l'instruction est nul. N (Negatif) : il est mis 1 lorsque le rsultat de l'instruction est ngatif. I (Interrupt) : C'est le bit des interruptions. Mis 1, il inhibe les interruptions c'est--dire la prise en compte immdiate d'vnements extrieurs survenant pendant l'excution d'un programme.
16
le registre D : c'est la concatnation de A et B dj mentionne. le registre X : a l'instar de A et B, c'est un registre tout faire mais il
peut manipuler une donne de deux octets. Par ailleurs, il est trs utile en tant qu'
Le registre Y : il joue le mme rle que X si ce n'est que toute instruction utilisant Y plutt que X se code sur un octet supplmentaire donc son excution est alors plus lente.
le registre SP (Stack Pointer) : c'est que l'on appelle le pointeur de pile. Il indique en permanence la prochaine adresse libre de la pile. La pile
est une zone de mmoire que l'on peut utiliser pour ranger momentanment des donnes avant de s'en servir nouveau selon un principe
LIFO
(Last In First Out : dernier entr, premier sorti). On peut donc empiler puis dpiler des donnes ce qui signie que la pile est de taille variable. Le registre SP indique en quelque sorte la hauteur de la pile.Il existe des instructions pour empiler puis dpiler des donnes.
Le registre PC (Program Counter) : ce registre appel compteur ordinal contient l'adresse de la prochaine instruction du programme qui
sera excute. Il permet donc au
Cette partie a pour but de donner quelques bases pour l'initiation la programmation d'un aussi l'on parle d' dans ce qui suit. mentionn, chaque constructeur voire chaque
3.1
Le programme
boucle).
17
langage mnmonique (l'assembleur), il cre ce que l'on appelle un rogramme source. Comme nous l'avons vu propos des dirents langages,
Il n'est donc pas
ce programme, s'il doit tre compris par un lecteur averti, ne l'est pas par le
P.
Le
excutable.
ne comprend que le
langage machine.
le programme source soit traduit en langage machine. C'est le rle de l'assembleur qui convertit le programme source en un est interprtable par le
programme source en assembleur avant de le faire assembler en un programme objet qui peut tre implant dans l'EEPROM puis excut. C'est de l'criture d'un programme source en assembleur dont il est question dans cette partie.
18
Les rectangles correspondent aux actions eectuer et les losanges aux dirents tests et boucles prsents dans un programme. En pratique, on peut retrouver des instructions trs prcises l'intrieur de ces rectangles et losanges. Il est trs important, confront un problme, de l'analyser consciencieusement et de le dcomposer en divers sous-problmes plus faciles rsoudre.
3.2
Le logiciel
Par logiciel, on entend gnralement tout simplement programme. L'acception premire est un peu dirente : il s'agit en ralit de l'ensemble des instructions qui peuvent tre utilises par un
tions. Lorsque ce dernier est exprim en langage mnmonique, on parle aussi d'Assembleur. Nous abordons ici quelques aspects de cet assembleur.
19
REG_BASE = $1000
Cette instruction signie l'assembleur que, dans le suite du programme, il devra comprendre $1000 chaque fois qu'il rencontrera REG_BASE. Par ailleurs, l'on est parfois amen identier une ligne particulire laquelle le compteur ordinal est susceptible de revenir lors de l'excution du programme (au cours de l'excution d'une boucle notamment). L'on peut alors baptiser cette ligne an de rendre lisible le programme source.
Exemple :
l'instruction LDAA #$1000 (dont la comprhension n'est pas ncessaire ici), on peut spcier au
20
Exemple :
Adressage immdiat
L'oprande manipul se trouve directement aprs l'oprateur et n'est pas spci par l'intermdiaire d'une adresse mais directement par sa valeur comme l'indique le symbole #.
Exemple :
pondant 12 en hexadcimal.
Adressage tendu
Cette fois-ci, la donne n'est pas spcie directement mais au travers de son adresse en mmoire (le symbole # est absent) ou bien la donne manipule (dj prsente dans l'accumulateur) va agir sur le contenu d'une adresse.
Exemples :
1/
2/
3/
ADDA $0035
Adressage direct
Analogue l'adressage tendu ; la seule dirence est que l'adresse mentionne est spcie seulement sur un octet, le poids fort tant alors considr comme nul.
Exemple :
Adressage index
Ce mode se rapproche quelque peu de l'adressage tendu mais l'adresse est partiellement contenue dans un registre ( de cet index.
Exemple :
(adressage immdiat).
LDX #$1000 le registre X reoit la valeur hexadcimale 1000 LDAA $05,X L'accumulateur est charg avec une vaA
leur situe l'adresse gale la somme du dplacement indiqu (soit $5) et du contenu de X (soit $1000). Ainsi, l'instruction prcdente se rsume
21
Adressage relatif
C'est un mode d'adressage que l'on retrouve lors des tests ou des boucles qui ncessitent une rupture (avec un ventuel retour en arrire) dans la squence d'instruction. Pour faciliter l'criture du programme dans un tel cas, on ne spcie pas explicitement l'adresse laquelle le
Exemple :
LDAA Retour DECA BNE Retour 003A
Dans ce petit extrait de programme, la premire ligne charge de l'adresse $3A, puis on dcrmente le contenu de doit revenir la ligne indique par
troisime ligne signie que si ce contenu ne devient pas gal zro, alors le
Retour.
L'instruction BSET :
Exemple :
BSET 4F,53
Dans cette instruction, le premier oprande ($4F) est une adresse et le second (03), un masque. L'instruction agit sur une donne d'un octet situe en mmoire l'adresse $4F. Le masque (ici 3) correspond la valeur 01010011. Ceci signie que sur les 8bits de l'adresse $4F, tous ceux correspondant un masque, doivent tre imposs
1.
1 dans le
L'instruction BCLR :
0 les bits 1 dans le masque. Ainsi, si l'adresse 4F contient initialement la valeur FF, BCLR 4F,53 va modier cette valeur en AC.
Elle fonctionne de la mme manire que BSET mais en imposant spcis par un
L'instruction BRSET :
22
Il s'agit de tester un ou plusieurs bits d'une adresse pour savoir si un branchement est ralis ou pas.
Exemple :
BRSET 4F,53,branchement 1.
Si c'est le cas, le compteur ordinal PC se rend l'adresse branchement. Cette dernire peut tre indique soit explicitement, soit par une tiquette de branchement. Ainsi, si l'adresse 4F contient FF, le branchement a lieu alors que si elle contient F0, il n'a pas lieu.
L'instruction BRCLR :
Elle fonctionne de manire analogue l'instruction BRSET mais le branchement a lieu si les bits indiqus par le masque sont
0.
Remarque : L'adresse est code sur un octet. C'est un adressage direct. L'adressage tendu ne peut tre utilis ici. En revanche, on peut utiliser l'adressage index (exemples : BCLR 01,X,53 ou BRCLR 5,X,53,F830 ).