Vous êtes sur la page 1sur 41

Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Microcontrôleur M68HC811E2

Introduction :

Le microcontrôleur Motorola M68HC811E2 fait partie de la gamme des microcontrôleurs


68HC11, tous construits autour d’un même noyau.
Sa RAM interne de 256 octets et son EEPROM interne de 2 k-octets sont les caractéristiques
principales qui le différencient des autres circuits de la gamme.
Ce circuit existe dans un boîtier PLCC de 52 broches ou en boîtier DIP de 48 broches. Les deux
sont alimentés par une tension unique de 5 Volts.
Il possède 4 ports de 8 bits et un port de 6 bits. Chacun de ses ports possède des caractéristiques
particulières. Le synoptique ci-dessous en dit long sur les possibilités de ce circuit.

ACCUMULATEUR PAI PA7


D'IMPULSIONS
OC1 OC2 PA6
ROM OC3 PORT A PA5

TIMER OC4 PA4


OC5 PA3
IC1 PA2
INTERRUPTIONS
TEMPS REEL IC2 PA1
RAM CHIEN DE GARDE IC3 PA0

DATA DIRECTION D
SS\ PD5

SCK PD4
EEPROM PORT D
SPI PD3
MOSI
MISO PD2

PE7 TxD PD1


SCI
PE6 RxD PD0

PE5
PORTE
PE4
PE3
PE2 CONVERTISSEUR
A/D
PE1
PE0 M68HC11 CPU

VREFH
VREFL

RESET BUS D'ADRESSES ET DE DONNEES

XIRQ INTERRUPTIONS
IRQ
(VPPBULK) DIALOGUE ENTREES/SORTIES

XTAL
EXTAL
OSCILLATEUR DATA DIRECTION C
E PORT B PORT C

MODA PB7PB6PB5PB4 PB3PB2PB1PB0 PC7PC6PC5PC4PC3PC2PC1PC0 STRA


STRB
(LIR)
SELECTION CIRCUIT
DE ALIM 3 2 1 SEUL
MODB
(VSTBY)
MODE
AD7AD6AD5AD4AD3AD2AD1AD0 R/W\
A15 A14 A13 A12 A11 A10A9A8 AS
ETENDU

VDD VSS

Page 1
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Chapitre I : Les signaux disponibles


1) 2 broches d’alimentation VSS et VDD (+5V)

2) broches MODA et MODB qui permettent de sélectionner un mode de fonctionnement du circuit


comme nous le montre le tableau ci-dessous :

MODB MODA Mode de fonctionnement


1 0 normal - circuit seul
1 1 normal – étendu
0 0 spécial – bootstrap
0 1 spécial – test

Le mode de fonctionnement est défini par l’état des entrées MODA et MODB durant le RESET.
Les modes les plus souvent utilisés sont le mode bootstrap et le mode circuit seul :

 le mode bootstrap permet le chargement automatique en RAM ou en EEPROM d’un


programme par la liaison série asynchrone du port D. Après le RESET, le µP exécute son
programme ‘BOOTSTRAP’ en ROM ($BF40-$BFFF), ce qui permet le chargement du
programme dans sa RAM interne de 256 octets ($0000-$00FF) ou dans son EEPROM interne
de 2-koctets($F800-$FFFF). Ce mode sera très utilisé lors de l’apprentissage ou la mise au
point de logiciels.

 le mode circuit seul, qui permet après la mise au point du logiciel et son chargement en
EEPROM, de faire fonctionner le microcontrôleur seul (sans mémoire externe) au sein d’une
application. Tous les ports sont alors disponibles.

 Le mode étendu multiplexé permet au microcontrôleur d’utiliser de la mémoire supplémentaire


externe lorsque celle interne est insuffisante. Dans ce mode, il est donc nécessaire de
démultiplexer les bus pour accéder aux mémoires externes.
D0
D1
D2
D3
D4
D5
D6
D7

74LS373

1
11

3
2
MODA 68HC811E2 PC0
9
10
3
4 5
2 A0
A1
MODB PC1
11 7 6 A2
PC2
19 12 8 9 A3
IRQ PC3
18 13 13 12 A4
X IRQ PC4
17 14 14 15 A5
RESET PC5
15 17 16 A6
PC6
34 16 18 19 A7
PA0 PC7
33
PA 1
32 42 A8
PA2 PB0
31 41 A9
PA3 PB1
30 40 A 10
PA4 PB2
29 39 A 11
PA5 PB3
28 38 A 12
PA6 PB4
27 37 A 13
PA7 PB5
36 A 14
PB6
20 35 A 15
PD0 PB7
21
PD1
22 6
PD2 STRB/R/W
23 4 3 2 1
PD3 STRA/AS
24 3 WE\=E\+ R/W\
PD4
25 5 2
PD5 E

Page 2
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Espace mémoire utilisé suivant les différents modes :


$0000 256 octets 256 octets 256 octets
$00FF de RAM de RAM de RAM
mémoires
externes
$ 1000 registres registres registres
$ 103F

mémoires
externes

BOOTROM $BF40
vecteurs
d'interruption
spéciaux
$BFFF

$F800

2 koctets 2 koctets 2 koctets


d'EEPROM d'EEPROM d'EEPROM
$FFC0 vecteurs vecteurs
$FFFF d'interruption d'interruption
mode
cicuit seul mode étendu mode BOOTSTRAP

3) broches EXTAL et XTAL qui permettent la connexion du quartz qui va cadencer le 68HC11 ou une
horloge externe comme nous le montre la figure ci-dessous.

STOP STOP

M68HC11 M68HC11
EXTAL XTAL EXTAL XTAL

Rf

Horloge externe
XTAL

C1 C2

FXTAL > ou = 1 MHz

La fréquence du quartz doit être égale à quatre fois la fréquence réelle du bus E désirée.

Exemple : avec un quartz de 4MHz, on obtient :

4MHz
E
f= 1MHz T=1µs

Page 3
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

4) Sortie de l’Horloge E utilisée en mode étendu qui permettra la synchronisation du transfert des
données (mode synchrone).

5) broche RESET qui est bidirectionnelle. Elle permet :

 en entrée une remise à l’état initial du microcontrôleur qui permettra en outre à celui-ci de
dérouler son programme à son début.
 et en sortie de générer un état bas pour initialiser les circuits externes lors d’un reset interne
(anomalie, chien de garde,..).

Vecteur RESET

Après avoir placé le programme en mémoire morte (en EEPROM en mode sigle chip), l’opération de
RESET permet le démarrage de l’application. Elle consiste à placer un état bas sur l’entrée RESET\ lors
de la mise sous tension. Cette broche doit rester dans cet état pendant un minimum de 4096 cycles
d’horloge afin de permettre à l’oscillateur à quartz de se stabiliser. L’unité centrale lance alors une
procédure d’initialisation interne et va aller chercher l’adresse de début de programme dans les cases
mémoire $FFFE et $FFFF et va la placer dans le compteur de programme. Cette adresse est appelée
vecteur RESET.

Exemple: si le programme débute à l’adresse $F800, le vecteur RESET sera:

* en $FFFE : $F8
* en $FFFF : $00

Initialisation au moment du RESET

Le RESET initialise un certain nombre de registres (voir la suite du cours) afin que les ports qui en
dépendent ne viennent commander des interfaces qui pourraient s’avérer dangereux. Les registres
concernés sont donc configurés lors du RESET avant que le programme ne vienne fixer leur contenu.
Lors du RESET, les interruptions sont masquées (X et I du CCR sont positionnés à 1) et le mode STOP
est interdit (S = 1).

Le RESET POR

Le RESET à la mise sous tension POR (Power On RESET) est destiné à initialiser le microcontrôleur. Un
délai minimum de 4096 cycles d’horloge est alors nécessaire pour permettre à l’oscillateur de se
stabiliser. Si la broche RESET\ est encore à l’état bas après ces 4096 cycles, le microcontrôleur reste en
condition de RESET jusqu’à ce que cette broche devienne inactive (état haut).

Le vecteur de ce type de RESET se trouve en $FFFE et $FFFF.

RESET extérieur

Le microcontrôleur distingue un RESET interne d’un RESET externe en détectant si la connexion repasse
à l’état haut en un temps inférieur à deux cycles d’horloge E après un RESET interne. Quand une
condition de RESET est détectée, la connexion est mise à zéro par un circuit interne au microcontrôleur
pendant 4 cycles d’horloge E puis est relâchée. Deux cycles plus tard, elle est testée. Si la connexion est
toujours à 0, le microcontrôleur en déduit que c’est un RESET externe et un RESET interne dans le cas
contraire.
Page 4
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
6) 2 broches d’entrée de demande d’interruption IRQ et XIRQ :

 IRQ : entrée de demande d’interruption masquable par le bit I du registre CCR et


programmable sur niveau bas ou sur front descendant par écriture du registre OPTION.

 XIRQ : entrée de demande d’interruption non masquable active sur niveau bas.

Une interruption, comme son nom l’indique, permet d’interrompre le programme principal afin
d’effectuer un sous-programme d’interruption. Cette interruption est déclenchée par activation d' IRQ ou
XIRQ par un signal issu d’un autre circuit qui informe le microcontrôleur d’un certain événement.
(exemple : signal DA issu d’un encodeur de clavier qui informe le microcontrôleur que quelqu’un a
appuyé sur une touche du clavier).

Définition : une interruption est dite masquable si elle peut être inhibée par programme (non prise en
compte).

Remarque : chacune de ces entrées doit être ramenée au niveau Haut grâce à une résistance de pull-up
(4,7k) lors qu’il n’y a pas de demande d’interruption.

7) 2 broches de référence de tension basse et haute pour le convertisseur analogique/numérique VREFL


et VREFH. L’écart de tension entre ces deux broches doit être au moins de 2,5V. En règle générale,
c’est l’alimentation de 68HC11 qui est utilisée comme référence de tension via un filtre passe bas
comme nous le montre la figure ci-dessous.

VDD 1 kOhms
VREFH

1 µF

VREFL

8) PA0 à PA7 : 8 lignes du port A qui sont partagées avec le TIMER.

9) PB0 à PB7 : 8 lignes de sortie du port B en mode circuit seul(8 lignes de poids fort d’adresse en
mode étendu)

10) PC0 à PC7 : 8 lignes du port C bidirectionnelles (utilisables en entée ou en sortie par écriture du
registre DDRC.

11) PD0 à PD5 : 6 lignes de données du port D communes avec les lignes de la liaison série synchrone
SPI et de la liaison série asynchrone SCI.

12) PE0 à PE7 : 8 lignes d’entrées qui constituent le port E. Ces lignes sont partagées avec les entrées
du convertisseur analogique/digital.

13) STRA et STRB (respectivement appelés AS et R/W\ en mode étendu) sont utilisés pour divers
protocoles de dialogue lorsque le circuit est utilisé en mode circuit seul.
Page 5
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Chapitre II :L’unité centrale
L’unité centrale du 68HC11 est un modèle 8 bits disposant de fonctionnalités particulières lui
permettant d’exécuter avec un maximum de souplesse certaines instructions logiques et arithmétiques sur
16 bits.

L’unité centrale, cœur du microcontrôleur, est principalement composée d’une unité arithmétique
et logique (ALU), d’une unité de commande et de 7 registres.

II.1) L’unité arithmétique et logique (UAL), ou ALU (Arithmetic and Logic Unit).

II.1.a) Définition :

L’ALU , comme son nom l’indique, effectue, au sein du microcontrôleur, toutes les opérations
arithmétiques et logiques sur des mots binaires appliqués sur ses entrées. Ces mots binaires sont appelés
opérandes.

Opérations arithmétiques Opérations logiques

* addition * ET
* soustraction * OU
* décalage droite ou gauche * Complémentation
* incrémentation, décrémentation * OU exclusif
* etc. . . * etc. . .

II.1.b) Symbole :

Ce circuit possède deux entrées 8 bits et une sortie 8 bits.

mot X
de 8 bits
Résultat de l'opération
U.A.L arithmétique ou logique
mot Y sur 8 bits
de 8 bits

mot de commande
de l'opération arithmétique
ou logique

Le mot de commande permet de définir le type d’opération que l’on veut effectuer.

L’ALU permet également de positionner différents bits de test qui reflètent ce qui vient de se passer lors
de l’exécution d’une fonction élémentaire. Ces indicateurs, encore appelés flags (drapeaux), sont
constitués de bistables. Ils peuvent être testés automatiquement par le CPU ou par le programme.

Ces indicateurs sont regroupés dans un registre 8 bits appelé registre d’état ou CCR(Code Condition
Register)
Page 6
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

registre
d'état

mot X
de 8 bits
Résultat de l'opération
U.A.L arithmétique ou logique
mot Y sur 8 bits
de 8 bits

mot de commande
de l'opération arithmétique
ou logique

CCR S X H I N Z V C

 bit C (Carry) : bit de retenue est mis à un lorsqu’une opération arithmétique génère
une retenue.

 bit V (oVerflow) : bit de débordement mis à 1 lorsqu’une opération arithmétique a


généré un débordement de l’accumulateur.

 bit Z comme Zéro : ce bit est positionné à 1 lorsque le résultat de l’instruction exécutée
est nul.

 bit N (Negative) positionné à 1 si le résultat de la dernière opération arithmétique ou


logique réalisée est négatif c’est à dire si le poids fort du résultat est à 1.

Remarque : le 68HC811E2 travaille en logique non signée. Un mot de 8 bits positif a


son bit de poids fort à 0 (les sept autres bits constituant la valeur binaire de ce mot)
tandis que le mot négatif est codé par le complément à 2 de son positif.

0 0 0 1 0 0 0 1 est un mot binaire positif de valeur 0 0 1 0 0 0 1 soit 1710.

1 0 0 1 0 0 0 1 est un mot binaire négatif. Pour obtenir sa valeur positive, on cherche le


complément à 2 de ce mot

mot binaire négatif 10010001

complément à 1 du mot 0 1 1 0 1 1 1 0
ajout de 1 + 1
complément à 2 du mot 0 1 1 0 1 1 1 1 soit 11110

le mot binaire 1 0 0 1 0 0 0 1 vaut donc –111.

Page 7
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
 bit I (Interrupt mask) : masque de l’interruption IRQ qui interdit toute interruption
lorsqu’il est mis à 1.

 bit H (Half carry) : bit de demi-retenue positionné à 1 lors d’une retenue entre les bits 3
et 4 d’une opération arithmétique.

 bit X (XIRQ) masque de l’interruption XIRQ. L’interruption XIRQ est masquée à


chaque Reset du microcontrôleur mais une fois autorisée (bit XIRQ=0) elle ne peut plus
être masquée.

 bit S (Stop disable) : bit qui permet lorsqu’il est mis à 1 d’interdire l’exécution de
l’instruction STOP.

Le mot X sera toujours le contenu de l’accumulateur A ou B et Y le contenu de l’accumulateur B ou un


mot 8 bits issu d’un registre tampon contenant des données temporaires comme les opérandes.

Définition : un accumulateur est un registre à accès et sorties parallèles qui permet le stockage temporaire
de la donnée binaire sur laquelle va travailler l’instruction en cours de déroulement. L’ALU est capable
d’effectuer sur un accumulateur un certain nombre d’opérations telles que décalage, rotation,
complémentation, etc. Le résultat de ces opérations est directement réintroduit dans le même
accumulateur.

II.2) L’unité centrale.

L’ALU seule ne représente qu’un faible intérêt, car elle n’est pas capable, à elle seule, de réaliser
une suite d’opérations en automatique. Il faut donc lui associer au minimum un automate séquenceur qui
va décoder les instructions et générer les séquences de micro-instructions.

Unité centrale simplifiée partielle

L’automate séquenceur est piloté par une horloge qui va permettre au microprocesseur de travailler en
mode synchrone.

Page 8
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Le registre d’instruction permet de recevoir l’instruction à exécuter et fournir à l’automate séquenceur le
code machine qui déterminera toute la séquence à dérouler pour réaliser cette instruction.

Il ne reste plus qu’à ajouter, à notre unité centrale partielle, un compteur de programme PC qui va pointer
l’adresse de la prochaine instruction à exécuter et permettre ainsi de réaliser un déroulement
chronologique des instructions. Ce compteur de programme sera bien sur incrémenté automatiquement
par l’automate séquenceur.

Déroulement d’une instruction (nous prendrons comme exemple la première instruction contenu dans
la mémoire programme (adresse $2000 et $2001) du schéma ci-dessus à savoir LDAA #$22) :

 le compteur de programme PC (qui contient alors $2000) envoie, sur ordre de l’automate séquenceur,
l’adresse ($2000) de l’instruction à exécuter ainsi que l’ordre de lecture de la mémoire programme
 la mémoire programme envoie alors sur le bus de donnée le code machine ($86) de l’opération à
effectuer(LDAA #). Cette donnée est alors dirigée, sur ordre de l’automate séquenceur, vers le registre
d’instruction.
 ce code machine ($86) est alors fourni à l’automate séquenceur qui reconnaît l’instruction de
chargement de A en adressage immédiat et va dérouler toute la routine permettant l’exécution de cette
instruction, à savoir diriger l’octet de l’adresse suivante dans le registre accumulateur A.
 le compteur de programme est incrémenté de 1 et est envoyé sur le bus d’adresse en même temps que
le signal de lecture de la mémoire programme qui envoie alors $22 sur le bus de donnée. Cette donnée
est alors dirigée dans l’accumulateur A.
 le compteur de programme PC est alors incrémenté pour pointer l’adresse de l’instruction suivante
devant être exécuter (PC = $2002 pointe l’instruction ADDA en mode direct).

Page 9
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

L’unité centrale du 68HC811E2 comporte 7 registres :

7 Accumulateur A 0 7 Accumulateur B 0
15 Accumulateur D 0

15 Registre d’index X 0

15 Registre d’index Y 0

15 Pointeur de pile SP 0

15 Compteur de programme PC 0

7 Registre CCR 0

 2 accumulateurs 8 bits A et B qui supportent toutes les instructions arithmétiques et


logiques. Ils peuvent être concaténés pour donner un accumulateur D supportant alors
des opérations logiques sur 16 bits.

 un compteur ordinal PC (Program Counter) de taille 16 bits appelé aussi compteur de


programme. Son rôle est de pointer l’adresse de la prochaine instruction devant être
exécutée. Lors du RESET, le PC est chargé avec l’adresse de début de programme.

 un registre d’état CCR (Code Condition Register) de taille 8 bits qui renseigne sur l’état
d’une partie de l’unité centrale après chaque opération effectuée. Il contient 8 drapeaux
(flags) ayant chacun un rôle particulier.

 deux registres d’index X et Y de taille 16 bits utilisés en adressage indexé ou pour


exécuter des opérations logiques sur 16 bits. L’adressage indexé permet de reconstituer
une adresse effective en additionnant le contenu du registre d’index avec un offset de 8
bits.

 1 pointeur de pile SP (Stack Pointer) également sur 16 bits. Ce registre pointe la


dernière adresse libre de la zone mémoire RAM définie pour ranger la pile.

Page 10
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Chapitre III : La programmation

III.1 Le langage source assembleur :

Le langage source assembleur est en quelque sorte l’écriture abrégée des commandes en langue anglaise
et est dédié à la famille du micro-processeur utilisé. De plus, différents modes d’adressage permettent de
choisir l’origine de la donnée à traiter (donnée déjà dans un registre, donnée située à une adresse mémoire
ou donnée choisie directement par le programmeur).

III.1.1) Convention d’écriture

Dans la suite du cours, nous parlerons d’adresse effective qui est l’adresse réelle de la donnée
manipulée par l’instruction. Nous utiliserons aussi les conventions d’écriture suivantes :

 un nombre décimal n’est précédé d’aucun symbole (ex : 8 )


 un nombre hexadécimal est précédé du symbole dollar ($) (ex : $6 ; $1005)
 un nombre binaire est précédé du symbole pour cent (%) (ex : %10010001)
 l’apostrophe devant un caractère signifie que celui-ci sera remplacé par sa valeur ASCII
(ex :’A’ sera considéré comme $41)
 le symbole # indique un adressage de type immédiat.

Exemples :

LDAB #28 28 est une donnée décimale


LDAA #$35 35 est une donnée hexadécimale
CMPA #%11000001 11000001 est une donnée binaire
LDX #$2598 2598 est une donnée hexadécimale sur 16 bits
LDAA #’A’ A est la donnée en code ASCII (équivalente à $41)

III.1.2) Structure d’une instruction en langage assembleur :

Un programme est une suite d’instructions en code machine. Chaque instruction doit être rédigée de façon
très précise grâce à 4 champs d’édition :

Champ d’adresse d’instruction Champ des Champ d’adresse Commentaires


ou étiquette instructions d’opérande (facultatifs)
CHGX LDX# $F000 ; charge X avec la valeur
$F000

Afin de faciliter la relecture du programme, on utilise des étiquettes qui permettent de retrouver
facilement un emplacement mémoire utilisé par exemple pour un saut ou un branchement.

Page 11
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
III.1.3) Ecriture du programme.

Le langage d’assemblage ou source assembleur utilise des symboles mnémoniques pour représenter les
codes opératoires (ex : LDAA, STAA, LDX, etc..)
Le texte source est écrit à l’aide d’un éditeur de texte sur ordinateur. Ce texte est ensuite traité par un
autre logiciel appelé assembleur qui traduit le texte source en codes hexadécimaux compréhensibles par
le microcontrôleur : le code machine.

Le texte source doit comporter, en plus des instructions, des informations appelées directives
d’assemblage. Les directives d’assemblage principales sont au nombre de trois :

ORG définit l’adresse du début de programme ou du sous programme


EQU définit une équivalence entre une étiquette et une donnée
END définit la fin du texte à assembler

Exemple de programme :

ORG $F800 ; ici ORG est la directive qui permet d’informer le programme assembleur que le
programme débute à l’adresse $F800
PORTC EQU $1003 ; cette directive EQU permet de faire une équivalence entre le texte PORTC et $1003.
Le programme utilisera dans son programme PORTC qui est plus facile à retenir que
$1003.
DEBUT LDAA #$22 ; instruction permettant de charger l’accumulateur A avec $22
STAA PORTC ; cette instruction est donc équivalente à STAA $1003 mais est plus ‘’parlante’’

END ;END est la directive qui indique la fin du texte à assembler.

Le programme assembleur, après avoir assemblé ce texte, fournit un autre texte appelé listing
d’assemblage qui fournit, en plus du texte édité, les codes machine correspondant aux instructions du
programme.

Listing d’assemblage du programme édité précédemment :

0001 f800 ORG $F800


0002 1003 PORTC EQU $1003
0003 f800 86 22 DEBUT LDAA #$22
0004 f802 b7 10 03 STAA PORTC

DEBUT f800
PORTC 1003

Page 12
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Dans ce listing, on retrouve le texte assembleur, les codes machinent ainsi que leur adresse et la table des
symboles :

Codes machine(HEXA)
0001 f800 ORG $F800
0002 1003 PORTC EQU $1003
0003 f800 86 22 DEBUT LDAA #$22
0004 f802 b7 10 03 STAA PORTC

DEBUT f800
PORTC 1003 Adresses des codes machine Texte édité précédemment

Table des symboles

Nous pouvons remarquer, dans le listing ci-dessus, que PORTC a bien été remplacé par $1003 après
assemblage.
On peut déduire, du listing de programme, le futur contenu de la mémoire programme :

adresse mémoire données de la mémoire


de la donnée programme (codes machine)
$F800 $86
$F801 $22
$F802 $B7
$F803 $10
$f804 $03

III.2 : Les différents modes d’adressage

Le 68HC11 dispose de six modes d’adressage différents :

III.2.a) L’adressage inhérent (ou implicite).

Dans ce mode, il n’y a pas d’adresse effective, car l’instruction concernée se suffit à elle-même et n’a
besoin d’accéder à aucune donnée externe. De ce fait, cet adressage est aussi appelé adressage de
registres.

Quelques exemples de l’adressage inhérent :

INCA INCrément A = ajoute une unité au contenu de A = (A<A+1)


DEX DECrément X = diminue X d’une unité (X<X-1)
ABA Add B to A = ajoute le contenu de A à celui de B et place le résultat dans A.

Page 13
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
III.2.b) L’adressage immédiat, indicateur : #

Dans ce mode, le code opératoire est suivi par l’opérande et ne fait appel à aucune adresse.

Quelques exemples de l’adressage immédiat :

LDAA #$55 charge l’accumulateur A avec $55


LDX #$1009 charge le registre d’index X avec $1009

III.2.c) L’adressage direct

Le code opératoire est suivi d’un octet non signé qui est l’adresse effective de la donnée à
manipuler. Ce mode d’adressage ne peut donc fonctionner de l’adresse $00 à l’adresse $FF et ne concerne
donc que les 256 premiers octets de l’espace adressable du microcontrôleur.

Quelques exemples de l’adressage direct :

LDAA $82 charge l’accumulateur A avec la donnée contenue à l’adresse $82


CMPA $F0 compare A avec la donnée contenue à l’adresse $F0

Ce mode d’adressage ne nécessitant que deux octets est plus rapide que le mode d’adressage
étendu et est donc à utiliser le plus souvent possible pour réduire la taille du programme et augmenter sa
rapidité.

III.2.d) L’adressage étendu

L’adresse de l’opérande est maintenant sur 16 bits et permet donc d’atteindre n’importe quelle
adresse mémoire de l’espace adressable. Ce mode d’adressage peut donc fonctionner de l’adresse $0100 à
l’adresse $FFFF.

Quelques exemples de l’adressage étendu :

LDAA $1030 charge l’accumulateur A avec le contenu de l’adresse $1030


STAA $1007 stocke le contenu de l’accumulateur A à l’adresse $1007
LDX $1016 charge les octets contenu aux adresses $1016 et $1017 dans le registre
d’index X (2 octets sont nécessaires pour charger X de taille 16bits)

III.2.e) L’adressage indexé

L'adresse effective de l’opérande est obtenue en additionnant le contenu du registre d’index utilisé
avec le déplacement. Le déplacement sur un octet est le nombre qui suit le code opératoire.

Quelques exemples de l’adressage indexé :

LDAA 7, X charge l’accumulateur A avec le contenu de la case mémoire pointée


par
l’index X augmenté de 7.

-> Dans ce cas : * 7 est le déplacement


Page 14
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
* , indique le mode d’adressage indexé
* X indique que le registre d’index utilisé est X

LDAA 0,X charge l’accumulateur A avec le contenu de l’adresse pointée par X


ou LDAA ,X

LDAB $25,Y charge l’accumulateur B avec le contenu de la case mémoire pointé par
l’index Y augmenté de $25.

III.2.f) L’adressage relatif

Ce mode n’est utilisé que pour les instructions de sauts et de branchements (branchements conditionnels).
Il spécifie l’adresse effective sous forme d’un déplacement qui est donc ajouté à la valeur courante du
compteur de programme PC pour déterminer l’adresse de poursuite du programme. Le calcul du
déplacement effectif est calculé automatiquement par l’assembleur et le branchement est réalisé à
l’adresse spécifiée par son étiquette.

Quelques exemples de l’adressage relatif :

BRA SP se brancher au sous programme SP


BEQ boucle branchement à boucle si le bit Z du CCR est à 1.

III.2.g) L’adressage ‘bit’ ou manipulation de bits

Ce mode permet de modifier un ou plusieurs bits dans une case mémoire. Ce mode d’adressage ne qu’en
mode direct ou indexé.
Dans ce mode, l’instruction s’écrit en trois parties :

Code opératoire Opérande Masque

Masque est un octet dont les bits à 1 indiquent le ou les bits de Opérande à manipuler.

Remarque : les bits non manipulés restent dans le même état.

Deux instructions sont disponibles :

 BSET comme Bit SET = mise à 1 de bits utilisée pour forcer à 1 l’état de certains bits.
 BCLR comme Bit CLeaR = mise à 0 de bits utilisée pour forcer à 0 l’état de certains bits.

Quelques exemples de l’adressage bit ou manipulation de bits :

BSET PORTB,X %11110000 ; positionne à 1 les 4 bits de poids forts de PORTB.


BCLR PORTC,X %00110011 ; positionne à 0 les bits 5,4,1 et 0 de PORTC.
BSET $05 %00000011 ; positionne à 1 les deux bits de poids faible du contenu de
l’adresse $05
BCLR 7,X %00000001 ; positionne à 0 le bit de poids faible du contenu de l’adresse
pointé par l’index X augmenté de 7.
Page 15
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

III.2.h) Mode test de bit et branchement

Ce mode permet de tester la valeur d’un ou plusieurs bits d’une donnée en mémoire et d’effectuer
ou non un saut en fonction de l’état de ce ou ces bits.

L’instruction, dans ce mode d’adressage, s’écrit en quatre parties :

Code opératoire Adresse de l’opérande Masque Saut

L’adresse de l’opérande ne peut s’écrire qu’en adressage direct ou indexé.


Le Masque indique les bits de l’opérande à tester.
Le Saut est le déplacement signé codé sur 8 bits comme pour l’adressage relatif. Dans la plupart des cas,
Saut est remplacé par une étiquette et le déplacement codé sur 8 bits est calculé par l’assembleur.

Deux instructions sont disponibles :

 BRCLR BRanch if bit(s) CLeaR qui effectue un branchement si tous les bits testés sont à 0.
 BRSET BRanch if bit(s) SET qui effectue un branchement si tous les bits testés sont à 1.

Quelques exemples du mode test et branchement :

BRSET PORTE,X %01000000 BOUCLE ; Branchement à BOUCLE si le bit 6 de PORTE


est à 1

BRCLR PORTE,X %00000001 BOUCLE ; Branchement à BOUCLE si le bits de poids


faible de PORTE est à 0.

Page 16
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Chapitre IV : Les interfaces parallèles

Dans ce chapitre, nous développerons essentiellement l’utilisation des ports en tant que lignes
d’entrées/sorties. Les autres utilisations des ports (Timer, conversion, etc..) seront développés
ultérieurement dans des chapitres qui leur seront exclusivement consacrés.
Les interfaces parallèles peuvent permettent l’émission ou la réception de données sous forme
parallèle (8 bits émis ou reçus simultanément). Le microcontrôleur peut aussi gérer chaque ligne des ports
individuellement. Certains port possèdent des lignes figées en entrée qui ne peuvent que recevoir des
informations, d’autres possèdent des lignes figées en sortie qui ne peuvent qu’émettre des informations ou
commander des interfaces et d’autres lignes sont bidirectionnelles , c’est à dire qu’elles peuvent être
programmées pour fonctionner en entrées ou en sorties par écriture des bits de leur registre de direction
des données respectifs(registre DDR...).

IV.1) Le port A

Le port A est un port parallèle à usage général partagé avec le timer et l’accumulateur d’impulsions.
Un timer est système qui permet de fournir des signaux carrés ou rectangulaires avec des durées très
précises ou mesurer la durée d’une impulsion . L’accumulateur d’impulsions permet de compter les
impulsions présentes sur la ligne PA7 du port A pour le 68HC811E2.

Le port A possède des lignes figées en entrée PA0, PA1 et PA2, des lignes figées en sortie (PA4 à PA6)
et deux lignes bidirectionnelles PA3 et PA7.

registre PORTA adresse $1000

PORTA PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

E/S S S S E/S E E E

Après un RESET, le registre du port A est à 0

PORTA 0 0 0 0 0 0 0 0

Pour programmer les lignes PA3 et PA7 en entrée ou en sortie, on programme les bits 3 (DDRA3) et 7
(DDRA7) du registre PACTL (Port A ConTroL).

Remarque : DDRA7 veut dire Data Direction Register A , bit 7

registre PACTL adresse $1026

PACTL DDRA7 DDRA3

Si le bit de direction des données est à 1, la ligne du port A correspondante est programmée en sortie.
Si le bit de direction des données est à 0, la ligne du port A correspondante est programmée en entrée.

Page 17
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Exemple :

PACTL 0 1

Dans cet exemple, la ligne PA7 est programmée en entrée et la ligne PA3 est programmée en sortie.
Pour fixer l’état logique d’une sortie, on écrit le bit correspondant du registre PORTA ($1000) tandis que
l’état d’une ligne d’entrée est lu dans ce même registre.

Exercices :

ex 1 : fixons un état haut sur la ligne PA6 qui est toujours une sortie.

PORTA EQU $00

LDX #$1000
BSET PORTA, X %01000000 ; fixe à 1 PA6

ex 2 : fixons un état bas sur la ligne PA3 après l’avoir programmée en sortie

PACTL EQU $26


PORTA EQU $00
LDX #$1000
BSET PACTL,X %00001000 ; programme PA3 en sortie(DDRA3=1)
BCLR PORTA,X %00001000 ; fixe PA3 à 0

ex3 : déterminons l’état de la broche PA7 programmée en entrée

PACTL EQU $26


PORTA EQU $00
LDX #$1000
BCLR PACTL,X %10000000 ; programme PA7 en entrée(DDRA7=0)
LDAA PORTA,X ; charge l’accumulateur A avec l’état du port A

après ces instructions, l’accumulateur A contient tout l’état du port A donc le bit 7 de l’accumulateur A
correspond à l’état de la ligne PA7.

IV.2) Le port B

Le port B est unidirectionnel et ne fonctionne qu’en sortie (ces sorties deviennent des lignes d’adresses en
adressage étendu).

Les niveaux logiques sur ses sorties sont définis par écriture du registre PORTB à l’adresse $1004.
PORTB étant un registre, les états des sorties sont mémorisés jusqu'à ce que PORTB soit réécrit.

Page 18
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
registre PORTB adresse $1004

PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0


entrée/sortie S S S S S S S S
après un RESET 0 0 0 0 0 0 0 0

exemples de programmation du port B

ex 1 : fixer à 1 les 6 lignes PB7 à PB2 et à 0 les lignes PB1 et PB0.

PORTB EQU $04


LDX #$1000
LDAA #%11111100
STAA PORTB,X

ex 2 : Fixer à 0 l’état de PB6 sans modifier l’état des autres lignes

BCLR PORTB,X %01000000

IV.3) Le port C

Remarque : Lorsque le circuit fonctionne en mode étendu, le port C véhicule en mode multiplexé le bus
de données (8 bits bidirectionnels) et les 8 bits de poids faibles du bus d’adresses.

Les 8 lignes du port C sont bidirectionnelles, c’est à dire qu’elles peuvent être programmées
individuellement en entrée ou en sortie. Le registre DDRC (adresse $1007) permet cette programmation.

L’état des sorties est fixé par écriture du registre PORTC tandis que les états des lignes en entrées sont
donnés par lecture de ce même registre.

Avant utilisation de ce port, il est donc nécessaire d’écrire DDRC afin de définir le sens de travail des
lignes du port.

registre DDRC adresse $1007

DDRC DDRC7 DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0


après un RESET 0 0 0 0 0 0 0 0

Nous pouvons remarquer, qu’après un RESET, toutes les lignes du port C sont en entrée.

registre PORTC adresse $1003

PORTC PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0


entrée/sortie E/S E/S E/S E/S E/S E/S E/S E/S
après un RESET 0 0 0 0 0 0 0 0

Remarque : après un reset, les lignes du port C sont en haute impédance.

Page 19
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Exemples de programmation du port C

ex 1 : fixons un état haut sur toutes les lignes du port C après l’avoir programmé en sortie

PORTC EQU $03


DDRC EQU $07
LDX #$1000
BSET DDRC,X %11111111 ; programme tout le port C en sortie
BSET PORTC,X %11111111 ; fixe toutes les lignes du port C à 1

ex 2: programmons les quatre lignes de poids fort du port C en entrée et les 4 lignes de poids faible en
sortie et effectuons une lecture des entrées.

LDX #$1000
LDAA #%00001111
STAA DDRC,X ; PC7 à PC4 en entrée, PC3 à PC0 en sortie
LDAA PORTC,X ; lecture du port C et chargement dans A

après ces instructions, l’accumulateur A contient tout l’état du port C donc les bits de poids forts de
l’accumulateur A sont les images des états logiques présents sur les entrées PC7 à PC4 (juste au moment
du déroulement de l’instruction uniquement).

IV.4) Le port D

Le port D, de taille 6 bits seulement, est relié aux interfaces séries synchrone(SPI) et asynchrone SCI mais
il peut être utilisé tout simplement en port parallèle bidirectionnel grâce à la programmation des registres
DDRD et PORTD.

registre DDRD adresse $1009

DDRD DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRD0


après un RESET 0 0 0 0 0 0

Nous pouvons remarquer, qu’après un RESET, toutes les lignes du port D sont en entrée.

registre PORTD adresse $1008

PORTD PD5 PD4 PD3 PD2 PD1 PD0


entrée/sortie E/S E/S E/S E/S E/S E/S
après un RESET 0 0 0 0 0 0

la programmation du port D étant similaire à celle du port C, elle ne sera pas développée ici.

IV.4) Le port E

Les 8 lignes d’entrée du port E sont partagées avec le convertisseur analogique/numérique. Utilisées en
entrées simples, le registre PORTE permet de connaître les états logiques qui leur sont appliqués.

Page 20
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Registre PORTE adresse $100A

PORTE PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0


entrée/sortie E E E E E E E E
après un RESET 0 0 0 0 0 0 0 0

Chapitre V : Les interfaces séries

V.1) Définition

La transmission série d’informations consiste à envoyer les informations binaires bit après bit au
lieu de les envoyer en parallèle. Les liaisons parallèles nécessitent au moins autant de fils que de bits à
transmettre simultanément. La transmission série ne nécessite généralement que 2 fils(1 de données et 1
de masse), d’où son intérêt. Ce type de transmission permet de transmettre des informations sur des
distances beaucoup plus longues mais peut être aussi entaché d’erreurs dues par exemple à des parasites
d’origines électriques ou encore à l’atténuation des signaux provoquée par la résistance de la ligne.
La norme de transmission la plus courante est la RS232. Toutefois, en milieu industriel parasité,
on lui préfère les normes RS422 ou RS485 qui lui sont supérieures, car utilisant le mode différentiel.

V.2) Norme RS232 ou V24

Les niveaux logiques transmis sur la liaison RS232 sont représentés par des tensions comprises
entre +5V à +12V pour le 0 et entre -5V à -12V pour le 1. Les récepteurs eux sont prévus pour
recevoir des signaux atténués jusque -3V et +3V. La distance de transmission peut atteindre 15 mètres.

Page 21
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Les signaux d’entrée de l’émetteur et de sortie du récepteur sont compatibles TTL et CMOS.

V.3) Norme RS485

Cette norme utilise une liaison différentielle sur une paire torsadée à laquelle on ajoute une liaison
référence de potentiel OVL qui sera véhiculée par une deuxième paire torsadée. Les deux paires sont
protégées des perturbations électromagnétiques par un blindage supplémentaire.

L’émetteur envoie simultanément le code et son complément logique et le récepteur fait la


différence de potentiel entre ces deux signaux. La différence de potentiel engendrée par les signaux
parasites, étant identique sur les deux fils de transmission, est annulée par la soustraction effectuée par le
récepteur.

Page 22
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

V.4) Transmission par boucle de courant

Schéma d’une boucle de courant

Dans ce mode de transmission, les niveaux logiques sont représentés par des niveaux de courant
différents dans une ligne. Les boucles de courant sont insensibles aux pertes dues à la résistance de ligne
et moins sensibles aux parasites.
Elles autorisent des transmissions jusqu'à 300 mètres.
Le niveau logique haut est représenté par un courant de 20 mA tandis que le niveau bas est de
4mA pour s’affranchir des coupures de lignes En effet, l’absence de courant dans la ligne sera considérée
comme une coupure de liaison.

V.5) Le parasitage des lignes de transmission

Une erreur de transmission se traduit par le gain ou d’une perte d'un ou plusieurs bits transmis.
Pour détecter ces erreurs, en plus de la donnée, on émet un bit supplémentaire appelé bit de parité qui
permettra, lors de la réception, de vérifier s’il y a eu modification du nombre de bits pendant la
transmission. La détection standard de ces erreurs se fait par le contrôle de parité.

V.6) Le contrôle de parité

Ce contrôle consiste à ajouter un bit au caractère transmis de façon à ce que le nombre de bits à 1
transmis soit pair (contrôle de parité paire) ou soit impaire (contrôle de parité impaire).

Exemple : soit à transmettre la donnée $F8 = %11111000 avec un contrôle de parité paire.

Pour transmettre cette donnée on enverra donc les bits suivants :

111110001
mot $F8  bit de parité ajouté

nous pouvons remarquer que le nombre de bits transmis ici est pair (6) grâce au bit ajouté.

A la réception, il suffit alors de contrôler que le nombre de bits reçus à 1 est pair.

Page 23
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

V.7) La liaison série asynchrone du 68HC811E2

Cette liaison SCI (Serial Communication Interface) est dite asynchrone, car on ne transmet pas de
signal d’horloge en même temps que les données. C’est donc au récepteur de détecter le début ou la fin
d’une donnée.
Les données sont transmises les unes après les autres et la synchronisation se fait par
l’intermédiaire de bits de START et de STOP, la ligne étant toujours au niveau 1 lorsqu’il n’y a pas de
transmission d’informations.

Dans une liaison asynchrone, la durée d’un bit transmis est toujours identique pour une vitesse de
transmission donnée. Cette vitesse est exprimée soit en bits par seconde soit en Bauds.

 la vitesse exprimée en bits par seconde veut dire que l’on émet X bits d’information utile à la
seconde.
 la vitesse exprimée en Bauds exprime le nombre de bits bruts par seconde(bits d’information utile +
bit de START + bit de parité + bits de STOP) et ne dépend donc que de la durée d’un bit.

Exemple :

dans cet exemple, un bit dure 26,04µs (quelque soit le type de bit). La vitesse de transmission est donc de
1/26,04 E-6 soit 38400 Bauds.

 8 bits de données sont émis en 11*26,04µs = 286,46µs, ce qui entraîne qu’un bit de donnée est émis en
286,46µs/8 soit 35,81µs  la vitesse de transmission est de 1/35,81 E-6 soit 27927 bits par seconde.

Exercice : calculer la vitesse de transmission en bits par seconde d’une émission de données à une vitesse
de 9600 Bauds sachant que l’on utilise 1 bit de start, pas de bit de parité et deux bits de stop.

Page 24
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Réponse :

La liaison série asynchrone du 68HC811E2 n’utilise que deux lignes du port D:

 une de réception des données : ligne PD0 encore appelée RxD (Receive Data)
 une de transmission des données : ligne PD1 encore appelée TxD (Transmit Data)

Chapitre VI Le convertisseur analogique/numérique du 68HC11


Le convertisseur analogique numérique du 68HC11 est un convertisseur 8 bits fonctionnant sur le
principe des approximations successives obtenues par répartition des charges dans des condensateurs
internes. Nous ne nous intéresserons, dans ce chapitre, que du fonctionnement de ce convertisseur et non
du principe, relativement complexe.

VI.1) Caractéristiques du convertisseur :

Le convertisseur (port E) possède 8 entrées analogiques multiplexées qui peuvent chacune recevoir une
tension pouvant atteindre 6 Volts. Un seul convertisseur est intégré au microcontrôleur. Un multiplexeur
analogique va sélectionner une entrée à convertir à la fois parmi les 8.

La tension de référence haute est appliquée sur la broche VrefH et le tension de référence basse sur la
broche VrefL.

Si la tension d’une entrée du port E atteint VrefH, celle-ci est convertie en mot binaire %11111111 et
inversement si elle égale la tension VrefL le convertisseur la traduit par %00000000.

Pour pouvoir convertir ces tensions, le convertisseur a besoin d’une tension supérieur à la tension
d’alimentation du microcontrôleur. Celle-ci est fabriquée à l’aide d’une pompe de charge interne au
microcontrôleur que l’on ‘démarre’ par l’écriture du bit ADPU (AD Power Up, bit 7) du registre option
($1039). Il conviendra d’attendre 100µs, après cette écriture, pour laisser le temps à la pompe de charge
d’atteindre la tension voulue.

Page 25
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
registre OPTION $1039

7 6 5 4 3 2 1 0
ADPU CSEL IRQE DLY CME 0 CR1 CRO
0 0 0 1 0 0 0 0 RESET

0 CR0 COP time Rate 0 0 CR1=0 et CR0=0 T=16,384ms pour fquartz=8Mhz


1 CR1=0 et CR0=1 T=65,536ms pour fquartz=8Mhz
1 CR1 COP time Rate 1 0 CR1=1 et CR0=0 T=262,14ms pour fquartz=8Mhz
1 CR1=1 et CR0=1 T=1,049 ms pour fquartz=8Mhz
2 non utilisé 0
1
3 CME 0 pas de surveillance de l’horloge
surveillance de l’horloge 1 surveillance de l’horloge(3ème source de RESET interne)
4 DLY enable oscillator startup 0 activité de l’UC reprend 4cycles d’horloge E après la sortie du mode STOP
DeLaY 1 activité de l’UC reprend 4000 cycles d’horloge E après la sortie du mode STOP
5 IRQE IRQ Edge sensitive 0 l’entrée IRQ\ est active sur front descendant
1 l’entrée IRQ\ est active sur niveau bas (doit être maintenu jusqu'à prise en compte)
6 CSEL Clock SELect 0 horloge E utilisée pour le circuit à pompe de charge (si fE>750 kHz)
1 horloge interne (RC) utilisée pour le circuit à pompe de charge (moins précis pour le CAN)
7 ADPU AD Power Up 0 le convertisseur est inactif
1 valide le circuit à pompe de charge qui alimente le convertisseur

Le bit CSEL (Clock SELect, bit 6) du registre OPTION sera mis à 1 pour des fréquences du bus E
supérieures à 750 kHz (cas le plus courant). Sinon, il sera mis à zéro mais dans ce cas la précision du
convertisseur sera moins précise.

VI.2) Mode de fonctionnement.

Les conversions n’ont pas lieu simultanément mais de façon successive. Les résultats sont stockés dans
des registres appelés ADR1($1031), ADR2 ($1032), ADR3 ($1033) et ADR4 ($1034).

registres ADR1 à ADR3 : AD register $1031 à $1034

7 6 5 4 3 2 1 0

Il existe deux modes de fonctionnement suivant l’état du bit MULT (bit 4) du registre ADCTL (Analog
Digital ConTroL:

registre ADCTL : AD ConTroL register $1030

7 6 5 4 3 2 1 0
CCF 0 SCAN MULT CD CC CB CA
0 0 - - - - - - RESET

Page 26
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Rôle de chaque bit du registre ADCTL

CD CC CB CA entrée Resultat CD CC CB CA entrée choisie Resultat

choisie
0 CA 0 0 0 0 PE0 ADR1 1 0 0 0 réservé ADR1
ces bits sélectionnent 0 0 0 1 PE1 ADR2 1 0 0 1 réservé ADR2
1 CB l’entrée ou les entrées du 0 0 1 0 PE2 ADR3 1 0 1 0 réservé ADR3
port E qui seront utilisées 0 0 1 1 PE3 ADR4 1 0 1 1 réservé ADR4
2 CC par la conversion 0 1 0 0 PE4 ADR1 1 1 0 0 VRH ADR1
0 1 0 1 PE5 ADR2 1 1 0 1 VRL ADR2
3 CD 0 1 1 0 PE6 ADR3 1 1 1 0 ½ VRH ADR3
0 1 1 1 PE7 ADR4 1 1 1 1 réservé ADR4
4 MULT MULTiple channel 0 le CAN réalise 4 conversions successives sur l’entrée choisie par CA à CD

1 le CAN réalise une conversion sur chaque entrée du groupe choisi par CD et CC
5 SCAN SCAN control 0 les 4 conversions (1 ou 4 entrées suivant MULT) sont réalisées une seule fois

1 les conversions demandées ont lieu en continu et les registres sont actualisés
6 0 0
7 CCF Conversion Complete Flag 0 remis à 0 par écriture de ADCTL

1 mis à 1 à la fin des 4 conversions qui ont lieu au moins une fois

Les bits CA à CD permettent de choisir le canal à convertir.

VI.2.a) Le mode canal unique : MULT = 0

Deux cas possibles suivant l’état du bit SCAN (bit 5) de PACTL :

1er cas : SCAN = 0, acquisition de la tension de l’entrée 4 fois de suite, les 4 résultats étant stockés
dans les registres ADR1 à ADR4.

2ème cas : SCAN = 1, acquisition continue de la tension d’entrée, les résultats étant mis en mémoire
successivement dans les registres ADR1 à ADR4. Les résultats suivants écrasent les anciennes valeurs
dans ces mêmes registres.
VI.2.b) Le mode canaux multiples : MULT = 1

Deux cas possibles suivant l’état du bit SCAN (bit 5) de PACTL :

1er cas : SCAN = 0, acquisition unique des quatre canaux sélectionnés et mise en mémoire dans les
registres ADR1 à ADR4.

2ème cas : SCAN = 1, acquisition permanente des quatre canaux, les résultats étant mis en mémoire
dans les registres ADR1 à ADR4. Les résultats suivants écrasent les anciennes valeurs dans ces
mêmes registres.

Dans tous les cas de figure ci-dessus, la fin de la conversion est détectée par lecture ou test du bit CCF
(Conversion Complete Flag) du registre ADCTL (voir détail du registre ci-dessus). Le passage à l’état
haut de ce bit indique que les quatre registres de résultats contiennent des données valides. Ce bit est
remis à zéro par écriture du registre ADCTL.

Page 27
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Exemple de programme de conversion :

***************************************************************
* programme d'affichage du résultat de la conversion numérique/analogique *
* de l'entrée PE0 sur le bargraph relié au port B de la maquette *
***************************************************************

portb equ $04


adctl equ $30
adr1 equ $31
adr2 equ $32
optio equ $39

org $0
start ldx #$1000
bset optio,x %10000000
bsr tempo
ldaa #%00100000 *scan,mult,PE0 a PE3
staa adctl,x
atten brset adctl,x %10000000 acqui
bra atten
acqui ldaa adr1,x
staa portb,x
bsr tempo
jmp acqui

tempo ldy #$ffff


decy dey
bne decy
rts

Page 28
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Les registres de configuration et de programmation de l’EEPROM

registre CONFIG $103F


7 6 5 4 3 2 1 0

- - - - NOSE NOCO ROMO EEON


C P N
0 0 0 0 état de config en EEPROM RESET

0 EEON Eeprom ON 0 EEPROM dévalidée


1 validation de l’EEPROM interne à l’adresse par défaut
1 ROMON ROMON 0 ROM de programme validéé
1 ROM dévalidée
2 NOCOP NO COP 0 timer chien de garde actif
1 timer chien de garde inactif
3 NOSEC NO SECurity 0 fonction sécurité en service(mode circuit seul ou bootstrap, recopie prog impossible)
1 fonction sécurité non activée
4 non utilisé 0
5 non utilisé 0
6 non utilisé 0
7 non utilisé 0

registre OPTION $1039


7 6 5 4 3 2 1 0

ADPU CSEL IRQE DLY CME 0 CR1 CRO


0 0 0 1 0 0 0 0 RESET

0 CR0 COP time Rate 0 0 CR1=0 et CR0=0 T=16,384ms pour fquartz=8Mhz


1 CR1=0 et CR0=1 T=65,536ms pour fquartz=8Mhz
1 CR1 COP time Rate 1 0 CR1=1 et CR0=0 T=262,14ms pour fquartz=8Mhz
1 CR1=1 et CR0=1 T=1,049 ms pour fquartz=8Mhz
2 non utilisé 0
3 CME 0 pas de surveillande de l’horloge
surveillance de l’horloge 1 surveillance de l’horloge(3ème source de RESET interne)
4 DLY enable oscillator startup 0 activité de l’UC reprend 4cycles d’horloge E après la sortie du mode STOP
DeLaY 1 activité de l’UC reprend 4000 cycles d’horloge E après la sortie du mode STOP
5 IRQE IRQ Edge sensitive 0 l’entrée IRQ\ est active sur front descendant
1 l’entrée IRQ\ est active sur niveau bas (doit être maintenu jusqu'à prise en compte)
6 CSEL Clock SELect 0 horloge E utilisée pour le circuit à pompe de charge
1 horloge interne utilisée pour le circuit à pompe de charge (attention pour le CAN)
7 ADPU AD Power Up 0 le convertisseur est inactif
1 valide le circuit à pompe de charge qui alimente le convertisseur

registre INIT $103D


7 6 5 4 3 2 1 0

RAM3 RAM2 RAM1 RAM0 REG3 REG2 REG1 REG0


0 0 0 0 0 0 0 1 RESET

0-1-2-3 REG3 à REG0 Ces 4 bits définissent le chiffre de poids fort de l’adresses de base du bloc de 64 registres internes. Suite à un RESET, ces
bits sont initialisés à 0001 ce qui place donc les registres de $1000à $103F
4-5-6-7 RAM3 à RAM0 Ces 4 bits définissent le chiffre de poids fort de l’adresses de base de la RAM. Suite à un RESET, ces bits sont initialisés à
0000 ce qui place la RAM à partir de l’adresse $0000
Page 29
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
registre HPRIO : High PRIOrity interrupt $103C

7 6 5 4 3 2 1 0
RBOO SMOD MDA IRV PSEL3 PSEL2 PSEL1 PSEL0
T
- - - - 0 1 0 1 RESET

bits PSEL bits PSEL


3 2 1 0 source d’interruption 3 2 1 0 source d’interruption (suite)
0 PSEL0 Priority SELect 0 0 0 0 débordement timer 1 0 0 0 TIC1
0 0 0 1 accu impulsions débordement 1 0 0 1 TIC2
1 PSEL1 Priority SELect 0 0 1 0 accu impulsions entrée 1 0 1 0 TIC3
0 0 1 1 SPI 1 0 1 1 TOC1
2 PSEL2 Priority SELect 0 1 0 0 SCI 1 1 0 0 TOC2
0 1 0 1 Réservé 1 1 0 1 TOC3
3 PSEL3 Priority SELect 0 1 1 0 IRQ\ 1 1 1 0 TOC4
0 1 1 1 interruption temps réel 1 1 1 1 TOC5
4 IRV Internal Real 0 fonction non validée (écriture possible si SMOD=1)
visibilty 1 données sur le bus externe lors d’une lecture (écriture possible si SMOD=1)
5 MDA MoDe A select 0 mode circuit seul ou bootstap (écriture possible si SMOD=1)
1 mode étendu ou mode spécial de test (écriture possible si SMOD=1)
6 SMOD Special MODe 0 modes normaux
1 modes spéciaux
7 RBOOT Read BOOTstrap 0 ROM de bootstrap dévalidée et non présente dans l’espace adressable
1 lecture de la ROM de bootstrap valide des adresses $BF40 à BFFF

registre PPROG : PROGrammation de l’EEPROM $103B

7 6 5 4 3 2 1 0
ODD EVEN - BYTE ROW ERAS EELA EEPGM
E T
0 0 0 0 0 0 0 0 RESET

0 EEPGM Eeprom ProGraMming 0 pas de pompe de charge


voltage enable 1 mise en route de la pompe de charge (mise à 1 possible si EELAT=1)
1 EELAT EEprom LATch controle 0 l’EEPROM se comporte comme une mémoire ordinaire
1 mémorisation des adresses et des données pour la programmation de l’EEPROM
2 ERASE ERASE 0 l’EEPROM est en lecture ou en écriture
1 ERASE=1 configure la mémoire pour l’effacement
3 ROW ROW 0 BYTE=0 et ROW=0 effacement complet
1 mode BYTE=0 et ROW=1 effacement ligne (16 octets)
4 BYTE BYTE 0 d’effacement BYTE=1 et ROW=0 effacement d’un octet
1 BYTE=1 et ROW=1 effacement d’un octet
5 0 non utilisé 0
1
6 EVEN Pair 0 réservé motorola
1 réservé motorola
7 ODD Impair 0 réservé motorola
1 réservé motorola

Page 30
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Registres de gestion du PORTA

PORTA : port parallèle d’usage général partagé avec le TIMER et l’accumulateur d’impulsions.

registre PORTA $1000


7 6 5 4 3 2 1 0
b7 b0
0 0 0 0 0 0 0 0 RESET

registre TCNT : Timer CouNTer $100E $100F


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0

registre TMSK2 : Timer MaSK 2 $1024


7 6 5 4 3 2 1 0
TO1 RTII PAOV PAII PR1 PR0
I
0 0 0 0 0 0 0 0 RESET

0 PR0 PR1 = 0 et PR0 = 0 (facteur de division =1) (résol=500ns - capa max = 32,77ms)
Facteur de prédivision PR1 = 0 et PR0 = 1 (facteur de division =4) (résol=2µs - capa max = 131,1ms)
1 PR1 (pour un quartz de 8 Mhz) PR1 = 1 et PR0 = 0 (facteur de division =8) (résol=4µs - capa max = 262,1ms)
PR1 = 1 et PR0 = 1 (facteur de division =16) (résol=8µ - capa max = 524,3ms)
2 non utilisé 0
3 non utilisé 0
4 PAII Pulse Accumulator 0 interruption interdites mais PAOVF continue de fonctionner normalement
Interrupt enable 1 génération d’interruption au passage du bit PAIF
5 PAOVI Pulse Accumulator 0 interruptions interdites mais PAOVF continue de fonctionner normalement
Overflow Interrupt enable 1 interruptions autorisées par le passage à 1 du bit PAOVF(bit 5 de TFLG2)
6 RTII Real Time Interrupt enable 0 IRQ de la RTI inhibées, la RTI continue de fonctionner et de positionner le bit RTI
1 les interruptions de la RTI sont autorisées
7 TOI Timer Overflow Interrupt 0 interruptions interdites mais le bit TOF continue de fonctionner normalement
Enable 1 autorise les interruptions produite par le passage à 1 de TOF(bit 7 de TFLG2)

registre TFLG2 : Timer FLaG2 $1025


7 6 5 4 3 2 1 0
TOF RTIF PAOV PAIF - - - -
F
0 0 0 0 0 0 0 0 RESET

Page 31
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

0 non utilisé 0
1 non utilisé 0
2 non utilisé 0
3 non utilisé 0
4 PAIF Pulse Accumulator Input 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
Flag 1 mis à 1 lors de la détection d’une transition valide sur l’entrée PAI
5 PAOVF Pulse Accumulator 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
Overflow Flag 1 mis à 1 lors du débordement du compteur de $FF à $00
6 RTIF Real Time Interrupt Flag 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1) avant l’instruction RTI
1 passe à 1 lorsqu’une interruption temps réel a lieu
7 TOF Timer Overflow Flag 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 positionné à 1 à chaque débordement du compteur de $FFFF à $0000
registres TIC1, TIC2, TIC3 : Timer Input Capture register

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TIC1
$1011
$1010

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TIC2
$1012 $1013

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TIC3
$1014 $1015

registres TOC1 à TOC3 : Timer Output Compare register


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TOC1
$1016 $1017

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TOC2
$1018 $1019

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TOC3
$101A $101B

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TOC4
$101C $101D

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b15 b0 TOC5
$101E $101F
Page 32
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
registre TCTL2 : Timer ConTroL 2 $1021
7 6 5 4 3 2 1 0
- - EDG1 EDG1 EDG2 EDG2 EDG3 EDG3
B A B A B A
0 0 0 0 0 0 0 0 RESET

0 EDG3A ces bits définissent le type de EDG3B = 0 EDG3A = 0 capture invalidée


transition active sur l’entrée de EDG3B = 0 EDG3A = 1 capture sur front montant
1 EDG3B capture IC3 EDG3B = 1 EDG3A = 0 capture sur front descendant
EDG3B = 1 EDG3A = 1 capture sur fronts montant et descendant
2 EDG2A ces bits définissent le type de EDG2B = 0 EDG2A = 0 capture invalidée
transition active sur l’entrée de EDG2B = 0 EDG2A = 1 capture sur front montant
3 EDG2B capture IC2 EDG2B = 1 EDG2A = 0 capture sur front descendant
EDG2B = 1 EDG2A = 1 capture sur fronts montant et descendant
4 EDG1A ces bits définissent le type de EDG1B = 0 EDG1A = 0 capture invalidée
transition active sur l’entrée de EDG1B = 0 EDG1A = 1 capture sur front montant
5 EDG1B capture IC3 EDG1B = 1 EDG1A = 0 capture sur front descendant
EDG1B = 1 EDG1A = 1 capture sur fronts montant et descendant
6 non utilisé
7 non utilisé

registre TMSK1 : Timer MaSK 1 $1022


7 6 5 4 3 2 1 0
OC1I OC2I OC3I OC4I OC5I IC1I IC2I IC3I
0 0 0 0 0 0 0 0 RESET

0 IC3I Input Capture Interrupt enable 0 les interruption sont interdites mais le bits IC3F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit IC3F
1 IC2I Input Capture Interrupt enable 0 les interruption sont interdites mais le bits IC2F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit IC2F
2 IC1I Input Capture Interrupt enable 0 les interruption sont interdites mais le bits IC1F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit IC1F
3 OC5I Output Compare Interrupt enable 0 les interruption sont interdites mais le bits OC5F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit OC5F
4 OC4I Output Compare Interrupt enable 0 les interruption sont interdites mais le bits OC4F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit OC4F
5 OC3I Output Compare Interrupt enable 0 les interruption sont interdites mais le bits OC3F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit OC3F
6 OC2I Output Compare Interrupt enable 0 les interruption sont interdites mais le bits OC2F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit OC2F
7 OC1I Output Compare Interrupt enable 0 les interruption sont interdites mais le bits OC1F continue de fonctionner normalement
1 autorise les interruptions produites par la passage à 1 du bit OC1F

Page 33
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

registre TFLG1 : Timer FLaG1 $1023


7 6 5 4 3 2 1 0
OC1F OC2F OC3F OC4F OC5F IC1F IC2F IC3F
0 0 0 0 0 0 0 0 RESET

0 IC3F Input capture Flag 3 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’une transition valide sur IC3 est détectée(si une capture a lieu)
1 IC2F Input capture Flag 2 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’une transition valide sur IC2 est détectée(si une capture a lieu)
2 IC1F Input capture Flag 1 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’une transition valide sur IC1 est détectée(si une capture a lieu)
3 OC5F Output Compare Flag 5 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’il y a égalité entre le contenu du compteur et le contenu de TOC5
4 OC4F Output Compare Flag 4 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’il y a égalité entre le contenu du compteur et le contenu de TOC4
5 OC3F Output Compare Flag 3 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’il y a égalité entre le contenu du compteur et le contenu de TOC3
6 OC2F Output Compare Flag 2 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’il y a égalité entre le contenu du compteur et le contenu de TOC2
7 OC1F Output Compare Flag 1 0 remis à 0 par écriture de ce bit avec un 1 (oui un 1)
1 passe à 1 lorsqu’il y a égalité entre le contenu du compteur et le contenu de TOC1

registre TCTL1 : Timer ConTroL1 $1020


7 6 5 4 3 2 1 0
OM2 OL2 OM3 OL3 OM4 OL4 OM5 OL5
0 0 0 0 0 0 0 0 RESET

0 OL5 ces deux bits définissent le OM5 = 0 OL5 = 0 pas d’action sur la sortie OC5
comportement de la sortie OM5 = 0 OL5 = 1 changement d’état à chaque comparaison valide
1 OM5 OC5 lors d’une comparai- OM5 = 1 OL5 = 0 mise à zéro à chaque comparaison valide
son réussie OM5 = 1 OL5 = 1 mise à 1 à chaque comparaison valide
2 OL4 ces deux bits définissent le OM4 = 0 OL4 = 0 pas d’action sur la sortie OC4
comportement de la sortie OM4 = 0 OL4 = 1 changement d’état à chaque comparaison valide
3 OM4 OC4 lors d’une comparai- OM4 = 1 OL4 = 0 mise à zéro à chaque comparaison valide
son réussie OM4 = 1 OL4 = 1 mise à 1 à chaque comparaison valide
4 OL3 ces deux bits définissent le OM3 = 0 OL3 = 0 pas d’action sur la sortie OC3
comportement de la sortie OM3 = 0 OL3 = 1 changement d’état à chaque comparaison valide
5 OM3 OC3 lors d’une comparai- OM3 = 1 OL3 = 0 mise à zéro à chaque comparaison valide
son réussie OM3 = 1 OL3 = 1 mise à 1 à chaque comparaison valide
6 OL2 ces deux bits définissent le OM2 = 0 OL2 = 0 pas d’action sur la sortie OC2
comportement de la sortie OM2 = 0 OL2 = 1 changement d’état à chaque comparaison valide
7 OM2 OC2 lors d’une comparai- OM2 = 1 OL2 = 0 mise à zéro à chaque comparaison valide
son réussie OM2 = 1 OL2 = 1 mise à 1 à chaque comparaison valide

registre OC1M : Output Compare 1 $100C


7 6 5 4 3 2 1 0
OC1M OC1M OC1M OC1M OC1M - - -
7 6 5 4 3
0 0 0 0 0 0 0 0 RESET

registre OC1D : Output Compare 1 $100D


7 6 5 4 3 2 1 0
OC1D OC1D OC1D OC1D OC1D - - -
7 6 5 4 3
Page 34
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
0 0 0 0 0 0 0 0 RESET

registre CFORC : Control FORCe output compare $100B


7 6 5 4 3 2 1 0
FOC1 FOC2 FOC3 FOC4 FOC5 - - -
0 0 0 0 0 0 0 0 RESET

registre PACTN : Pulse Accumulator CouNTer register $1027


7 6 5 4 3 2 1 0

registre PACTL : Pulse Accumulator ConTroL $1026


7 6 5 4 3 2 1 0
DDRA PAE PAMOD PEDG - - RTR1 RTR0
7 N E
0 0 0 0 0 0 0 0 RESET

0 RTR0 Ces deux bits fixent le RTR1 = 0 RTR0 = 0 rythme= 4,10 ms (E/2 13 divisé par 1)
rythme de génération des RTR1 = 0 RTR0 = 1 rythme= 8,19 ms (E/213 divisé par 2)
1 RTR1 interruptions temps réel RTR1 = 1 RTR0 = 0 rythme= 16,38 ms (E/2 13 divisé par 4)
(valeur pour quartz 8MHz) RTR1 = 1 RTR0 = 1 rythme= 33,77 ms (E/2 13 divisé par 8)
2 0 0
3 0 0
4 PEDGE Pulse accumulator EDGE 0 l’entrée PAI réagit sur des fronts descendants et ouvre le comptage par niveau bas
Select 1 PAI réagit sur des fronts montants et ouvre la porte de comptage sur un niveau haut
5 PAMOD Pulse Accumulator MODe 0 l’accumulateur d’impulsions compte les impulsions sur PAI
1 l’accumulateur d’impulsions compte l’horloge E/64 sous contrôle du niveau de PAI
6 PAEN Pulse Accumulator ENable 0 l’accumulateur d’impulsions est inactif, le compteur est arrêté
1 l’accumulateur d’impulsions est validé
7 DDRA7 Data Direction Register A7 0 la patte PA7 qui est aussi PAI est configurée en entrée
1 PA7 est configurée en sortie. Elle peut être utilisée par OC1 du timer général

Le registre du PORT B

registre PORTB $1004


7 6 5 4 3 2 1 0

Page 35
Ecole Supérieure de Technologie de Meknès Informatique Industrielle
Les registres du PORT C

registre DDRC : Data Direction Register C $1007


7 6 5 4 3 2 1 0
DDRC7 DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0

registre PORTC $1003


7 6 5 4 3 2 1 0

registre PORTCL $1005


7 6 5 4 3 2 1 0

registre PIOC : Parallel Input Output C $1002


7 6 5 4 3 2 1 0
STAF STAI CWO HNDS OIN PLS EGA INVB
M
0 0 0 0 0 - 1 1 RESET

0 INVB INVert strobe 0 STRB est une impulsion active au niveau bas (état de repos=1)
1 STRB est une impulsion active au niveau haut
1 EGA EdGe select for strobe A 0 les transitions valides du signal STRA sont des fronts descendants
1 les transitions valides du signal STRA sont des fronts montants
2 PLS strbe B PuLSe mode select 0 la ligne STRB fonctionne en mode dialoge
1 STRB fonctionne en mode impulsionnel d’une durée de 2 période d’horloge E
3 OIN Output Input haNdshake 0 sélectionne le mode dialogue complet en entrée si HNDS =1
select 1 sélectionne le mode dialogue complet en sortie si HNDS =1
4 HNDS HaNdshake simple strobe 0 mode dialogue simple
moDe Select 1 mode précisé par l’état du bit OIN
5 CWOM port C Wire Or Mode 0 les sorties du port C fonctionnent en push pull
1 les sorties du port C supportent le OU cablé (transistor relié à VDD désactivé)
6 STAI STrobe A Interrupt enable 0 les interruptions générées par STAF sont interdites
1 le passage à 1 du STAF génère une interruption de type Strobe A
7 STAF STrobe A Flag 0 remis à zero par une procédure automatique(lecture de PIOC + R/W\ de PORTCL)
1 positionné à 1 par une transition actice sur STRA

Page 36
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

Les registres du PORT D

registre DDRD : Data Direction Register D $1009


7 6 5 4 3 2 1 0
- - DDRD DDRD DDRD DDRD DDRD DDRD
5 4 3 2 1 0
0 0 0 0 0 0 0 0 RESET

0 DDRD0 Data Direction Register D0 0 PD0 est une entrée (l’état de ce bit est fixé d’office s'il est utilisé par la SCI)
1 PD0 est une sortie (l’état de ce bit est fixé d’office s'il est utilisé par la SCI)
1 DDRD1 Data Direction Register D1 0 PD1 est une entrée (l’état de ce bit est fixé d’office s'il est utilisé par la SCI)
1 PD1 est une sortie (l’état de ce bit est fixé d’office s'il est utilisé par la SCI)
2 DDRD2 Data Direction Register D2 0 PD2 est une entrée (patte MISO pour la SPI configurée en esclave quelquesoit DDRD2)
1 PD2 est une sortie (patte MISO pour la SPI configurée en maître)
3 DDRD3 Data Direction Register D3 0 PD3 est une entrée (patte MOSI pour la SPI configurée en esclave quelquesoit DDRD3)
1 PD3 est une sortie (patte MOSI pour la SPI configurée en maître)
4 DDRD4 Data Direction Register D4 0 PD4 est une entrée (entrée d’horloge SCK pour la SPI configurée en esclave)
1 PD4 est une sortie (sortie d’horloge SCK pour la SPI configurée en maître)
5 DDRD5 Data Direction Register D5 0 PD5 est une entrée(SS\ ou entrée de détection des défauts de transmission)
1 PD5 est une sortie d’usage général
6 - non utilisé
7 - non utilisé

registre PORTD $1008


7 6 5 4 3 2 1 0

registre SPDR : SPI Data Register $102A


7 6 5 4 3 2 1 0

registre SPCR : Serial Peripheral Control Register $1028


7 6 5 4 3 2 1 0
SPIE SPE DWO MSTR CPOL CPHA SPR1 SPR0
M
0 0 0 0 0 1 - - RESET

Page 37
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

0 SPRO programmation du facteur 0 SPR1=0 et SPR0=0 fréquence d’horloge E divisée par 2


de division de E pour déter 1 SPR1=0 et SPR0=1 fréquence d’horloge E divisée par 4
1 SPR miner la fréquence de 0 SPR1=1et SPR0=0 fréquence d’horloge E divisée par 16
transmission utilisée 1 SPR1=1et SPR0=1 fréquence d’horloge E divisée par 32
2 CPHA Clock PHAse 0 sélection du mode de transfert
1 sélection du mode de transfert
3 CPOL Clodk POLarity 0 la ligne SCK est inactive à l’état bas
1 la ligne SCK est inactive à l’état haut
4 MSTR MaSTeR 0 l’interface est en mode esclave
1 l’interface est en mode maître
5 DWOM port D Wired Or Mode 0 les sorties du port D fonctionnent en push pull
select 1 les sorties du port D supportent le OU cablé
6 SPE Serial Peripheral Enable 0 l’interface SPI est dévalidée, les lignes du port D sont alors disponibles
1 l’interface SPI est validée
7 SPIE Serial Peripheral Interrupt 0 les interruptions émanant de la SPI sont masquées
Enable 1 les interruptions émanant de la SPI sont autorisées

registre SPSR : Serial Peripheral Status Register $1029


7 6 5 4 3 2 1 0
SPIF WCOL - MODF - - - -
0 0 0 0 0 0 0 0 RESET

0 non utilisé
1 non utilisé
2 non utilisé
3 non utilisé
4 MODF MODe Fault flag 0 remis à 0 par lecture de SPSR suivie d’une écriture dans le SPCR
1 passe à 1 lorsque plusieurs maîtres sont détectés simultanément sur la liaison
5 non utilisé 0
6 WCOL Write COLlision 0 remis à zero par une lecture de SPSR suivie d’un accés (lect ou ecrit) au SPCR
1 passe à 1 lors d’une écriture de SPDR alors qu’un transfert de données est en cours
7 SPIF Serial PerIpheral data 0 remis à zero par une lecture de SPSR suivie d’un accés (lect ou ecrit) au SPCR
transfert Flag 1 passe à 1 lorsqu’un transfert est terminé(si SPIE=1 interruption de type SPI)

registre SCDR : SCI Data Register $102F


7 6 5 4 3 2 1 0

registre SCCR1 : Serial Communication Control Register 1 $102C


7 6 5 4 3 2 1 0
R8 T8 - M WAKE - - -
- - 0 0 0 0 0 0 RESET

0 non utilisé 0
1 non utilisé 0
2 non utilisé 0
3 WAKE WAKE (reveil) 0 reveil du recepteur lorsque la ligne restera inactive pendant la durée d’un caractère au moins
1 réveil du récepteur lors de la reception d’un 1 sur le bit de poids + fort du mot reçu
4 M format de transmission 0 1 bit de start, 8 bits de données, un bit de stop
1 1 bit de start, 9 bits de données, un bit de stop
5 non utilisé 0
6 T8 Transmit 8 x destiné à recevoir le 9 ème bit de donnée à transmettre lorque le bit M=1
7 R8 Receive 8 x ce bit contient le 9ème bit de donnée reçu lorsqu’un tel format a été selectionné par le bit M (M=1)

Page 38
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

registre SCCR2 : Serial Communication Control Register 2 $102D

7 6 5 4 3 2 1 0
TIE TCIE RIE ILIE TE RE RWU SBK
0 0 0 0 0 0 0 0 RESET
0 SBK Send Break 0 la SCI fonctionne normalement
1 l’emetteur de la SCI envoie en permanence des breaks(block de 10 ou 11 zéros)
1 RWU Receive Wake Up 0 reveil conforme au choix fait par WAKE de SCCR1
1 le recepteur est mis en sommeil
2 RE Receive Enable 0 le recepteur de la SCI est désactivé ,les bits RDRF, IDLE, OR, NF, FE sont inhibés
1 le recepteur fonctionne normalement
3 TE Transmitter Enable 0 l’emetteur est désactivé, la broche PD1 passe sous contrôle de DDRD1
1 l’emmeteur est activé
4 ILIE Idle Line Interrupt Enable 0 les interruptions causées par le bit IDLE du SCSR ne sont pas autorisées
1 les interruptions causées par le bit IDLE du SCSR sont autorisées
5 RIE Receive Interrupt Enable 0 les interruptions causées par les bits RDRF et OR de SCSR ne sont pas autorisés
1 les interruptions causées par les bits RDRF et OR de SCSR sont autorisés
6 TCIE Transmit Complete 0 les interruptions causées par le bit TC du SCSR ne sont pas autorisées
Interrupt Enable 1 les interruptions causées par le bit TC du SCSR sont autorisées
7 TIE Transmit Interrupt Enable 0 les interruptions causées par le bit TDRE du SCSR ne sont pas autorisées
1 les interruptions causées par le bit TDRE du SCSR sont autorisées

registre BAUD : BAUD rate register $102B

7 6 5 4 3 2 1 0
TCLR - SCP1 SCP0 RCKB SCR2 SCR1 SCR0
0 0 0 0 0 - - - RESET

0 SCR0 0 SCR2 SCR1 SCR0 = 0 0 0 vitesse de transmission SCI = 9600 Bauds


1 SCR2 SCR1 SCR0 = 0 0 1 vitesse de transmission SCI = 4800 Bauds
1 SCR1 taux de division 0 SCR2 SCR1 SCR0 = 0 1 0 vitesse de transmission SCI = 2400 Bauds
(valeurs données pour un quartz 1 SCR2 SCR1 SCR0 = 0 1 1 vitesse de transmission SCI = 1200 Bauds
2 SCR2 de 8 Mhz et SCP0=SCP1=1) 0 SCR2 SCR1 SCR0 = 1 0 0 vitesse de transmission SCI = 600 Bauds
1 SCR2 SCR1 SCR0 = 1 0 1 vitesse de transmission SCI = 300 Bauds
3 RCKB réservé motorola 0 SCR2 SCR1 SCR0 = 1 1 0 vitesse de transmission SCI = 150 Bauds
0 SCR2 SCR1 SCR0 = 1 1 1 vitesse de transmission SCI = 75 Bauds
4 SCP0 0 SCP1 = 0 SCP0 = 0 vitesse max= 125000 Bauds
taux de division 1 SCP1 = 0 SCP0 = 1 vitesse max= 41667 Bauds
5 SCP1 (valeurs données pour un quartz 0 SCP1 = 1 SCP0 = 0 vitesse max= 31250 Bauds
de 8 Mhz) 1 SCP1 = 1 SCP0 = 1 vitesse max= 9600 Bauds
6 0 non utilisé 0
7 TCLR réservé motorola 0

Page 39
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

registre SCSR : Serial Communication Status Register $102E


7 6 5 4 3 2 1 0
TDRE TC RDRF IDLE OR NF FE -
1 1 0 0 0 0 0 0 RESET

0 0 non utilisé 0
1 FE Framing error 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 par un erreur de format (non détection du bit de stop de fin de caractère)
2 NF Noise Flag 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 si du bruit est détecté lors de la réception y compris sur bits de start et stop
3 OR Ove Run error 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 lors du débordement du recepteur
4 IDLE IDLE line detect 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 lorsque la ligne de réception est détectée comme étant au repos
5 RDRF Receive Data Register Full 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 lorsque le registre de réception SCDR est plein et peut donc être lu
6 TC Transmit Complete 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
1 mis à 1 lorsqu’une émission de donnée est terminée (y compris bit de stop)
7 TDRE Transmit Data Receive 0 remis à 0 par une lecture de SCSR suivie d’une lecture de SCDR
Empty 1 mis à 1 pour indiquer que le registre d’émission SCDR est vide

Les registres du PORT E

registre PORTE $100A


7 6 5 4 3 2 1 0

registres ADR1 à ADR3 : AD register $1031 à $1034


7 6 5 4 3 2 1 0

registre ADCTL : AD ConTroL register $1030


7 6 5 4 3 2 1 0
CCF - SCAN MULT CD CC CB CA
0 0 - - - - - - RESET

Page 40
Ecole Supérieure de Technologie de Meknès Informatique Industrielle

CD CC CB CA entrée Resultat CD CC CB CA entrée choisie Resultat

choisie
0 CA 0 0 0 0 PE0 ADR1 1 0 0 0 réservé ADR1
ces bits sélectionnent 0 0 0 1 PE1 ADR2 1 0 0 1 réservé ADR2
1 CB l’entrée ou les entrées du 0 0 1 0 PE2 ADR3 1 0 1 0 réservé ADR3
port E qui seront utilisées 0 0 1 1 PE3 ADR4 1 0 1 1 réservé ADR4
2 CC par la conversion 0 1 0 0 PE4 ADR1 1 1 0 0 VRH ADR1
0 1 0 1 PE5 ADR2 1 1 0 1 VRL ADR2
3 CD 0 1 1 0 PE6 ADR3 1 1 1 0 ½ VRH ADR3
0 1 1 1 PE7 ADR4 1 1 1 1 réservé ADR4
4 MULT MULTiple channel 0 le CAN réalise 4 conversions successives sur l’entrée choisie par CA à CD

1 le CAN réalise une conversion sur chaque entrée du groupe choisi par CD et CC
5 SCAN SCAN control 0 les 4 conversions (1 ou 4 entrées suivant MULT) sont réalisées une seule fois

1 les conversions demandées ont lieu en continu et les registres sont actualisés
6 - non utilisé 0
7 CCF Conversion Complete Flag 0 remis à 0 par écriture de ADCTL

1 mis à 1 à la fin des 4 conversions qui ont lieu au moins une fois

Page 41

Vous aimerez peut-être aussi