Electronique By Epix®
Page 1 sur 5
Monostables et astables avec le 68HC11
A. Rappel sur le 68HC11 :
Le 68HC11 possède 2 accus de 8bits :
- A
- B
On peut utiliser ces derniers pour les fonctions suivantes :
- stockage temporaire
- réalisation d’opérations
- relation avec l’ALU
Remarque : a et b peuvent se concaténer pour former un registre de 16 bits.
Le 68HC11 possède aussi deux registres de 16 bits chacun
- X
- Y
Ces deux registres ne peuvent qu’incrémenter ou décrémenter.
Le 68HC11 à aussi un registre de code condition (CCR) :
Voici son fonctionnement :
S X H I N Z V C
Les indicateurs :
C Indicateur de retenu Ce bit est à 1, si la dernière opération à produit une retenue.
V Indicateur de
dépassement Ce bit est à 1, si la dernière opération mathématique a produit un
résultat dont la taille dépasse celle du registre cible.
Z Indicateur de résultat nul. Ce bit est à 1, si la dernière opération a donné un résultat nul.
N Négatif Ce bit est à 1, si le résultat de la dernière opération a donné un
résultat négatif dans la représentation des nombres en base 2.
H Demi retenu Ce bit est à 1, si la dernière opération sur ‘ bits à produit une
retenue.
Les commutateurs :
I Interruption IRQ Si ce bit est à 1, alors les interruptions IRQ sont ignorées
X Interruptions XIRQ Si ce bit est à 1, alors les interruptions XIRQ sont masquées.
S stop Si ce bit est à 1, alors l’interruption STOP est ignorée.
Chacun des 8 bits du CCR constitue soit un indicateur (le processeur informe l’utilisateur), soit un
commutateur (l’utilisateur commande le processeur).
Electronique By Epix®
Page 2 sur 5
B. Rappel sur la numération des nombres positifs et négatifs :
Sur 8 bits, on a classiquement :
28 = 256 possibilités (on peut compter de 0 à 255, en décimal).
Mais étant donné que l’on veut représenter les nombres négatifs, on considère que le bit de poids fort
nous informe sur le signe du nombre.
A7 (MSB) A6 A5 A4 A3 A2 A1 A0 (LSB)
Signe x x x x x x x
Le bit de poids le plus fort nous informe du signe :
- S’il est positif, ne nombre formé par les 7 autres bits et négatif.
- S’il est négatif, ne nombre formé par les 7 autres bits et positif.
On a donc la répartition suivante :
Décimal A7 (MSB)
A6 A5 A4 A3 A2 A1 A0 (LSB)
0 0 0 0 0 0 0 0 0
127 0 1 1 1 1 1 1 1
-0 1 0 0 0 0 0 0 0
-127 1 1 1 1 1 1 1 1
Etant donné que le « zéro » apparaît à deux reprises (une fois dans les positifs, une fois dans les
négatifs), on obtient :
! 128 valeurs pour les nombres positifs (0 à 127)
! 128 valeurs pour les nombres négatifs (0 à -127)
! Ce qui fait un total de 256 cas (ce qui conforte la thèse de départ).
C. Le monostable non redéclenchable :
Un monostable est un système déclenché par un front (soit montant, soit descendant, selon le type de
configuration requise), et qui délivre en sortie une impulsion calibrée.
NB : On notera qu’il existe des monostables « analogiques », mais ici, nous nous intéressons
seulement aux monostables réalisable avec le 68HC11.
Avec le 68HC11, on rencontre un obstacle : réaliser un monostable est faisable, mais durant la
période de fonctionnement, le processeur est « occupé », il faut donc opter pour des solutions telles
que : - le timmer (temporisateur)
- les compteurs (générateur d’impulsions)
- interruption en temps réel
- watchdog (chien de garde).
Electronique By Epix®
Page 3 sur 5
D. Le monostable redéclenchable :
Un monostable redéclenchable est un système déclenché par un front (soit montant, soit descendant,
selon le type de configuration requise), et qui délivre en sortie une impulsion calibrée, mais qui a la
possibilité d’être redéclenché si un front est présent en entrée.
E. Réalisation pratique d’un monostable non redéclenchable :
A l’aide du jeu d’instruction assembleur, on peut réaliser un monostable :
Commentaire
LDAA
#$00 On stocke la valeur « 00 » dans le registre A. 1
STAA $1004 On applique le contenu du registre A, sur le port d’adresse
$1004, en l’occurrence, il s’agit du port B (et non le registre B). 2
ici LDAA
#$FF On stocke la valeur « FF » dans le registre A. 3
LDAB
$1000 On stocke la valeur présente à l’adresse $1000, et on la stocke
dans le registre B. (En d’autres termes, on fait une lecture du
port A).
4
ANDB
#$01 On fait un « ET logique », entre le registre « B », et la valeur
« $01 », afin de connaître l’état du bit Bo. 5
BEQ ici Si la condition précédente n’est pas satisfaite, on se branche sur
l’étiquette nommé « ici ». 6
LDAB
#$01 On stocke la valeur « 01 », dans le registre « B ». 7
STAB $1004 On applique le contenu du registre B, sur le port d’adresse
$1000, en l’occurrence, il s’agit du port A (et non le registre A). 8
titi DECA
On décrémente la valeur contenu dans le registre A. 9
BNE titi Si l’instruction précédente n’est pas égale à 0, on se branche sur
l’étiquette nommée « titi ». 10
LDAB
#$00 On stocke dans le registre B, la valeur « 00 » 11
STAB $1004 On applique le contenu du registre B, sur le port d’adresse
$1004, en l’occurrence, il s’agit du port B (et non le registre B). 12
Electronique By Epix®
Page 4 sur 5
Algorigramme de fonctionnement :
Principe du monostable :
- On fait une lecture du port A, et dés qu’un front montant est observé (passage du niveau
bas, au niveau haut), on mets le bit B0 du port B, au niveau haut durant toute la durée
stable.
- Pour fixer la durée stable, on utilise une boucle, qui se charge de décrémenter le contenu
d’une variable, jusqu’à ce que cette dernière soit égale à zéro.
Rappel sur les instructions du 68HC11 :
LDAA Charger le registre A, avec la valeur désirée.
STAA Stocker en mémoire la valeur du registre A
ANDB « ET logique » bit à bit, entre le registre, et la mémoire désignée.
BEQ « Branche si égal ». On se branche à une étiquette nommée, si la valeur de
l’instruction est égale à celle de la mémoire opérande.
DECA Décrémente le registre A
BNE « Branche si Non Egal ». On se branche à une étiquette nommée, si la valeur de
l’instruction est différente de celle de la mémoire opérande.
Electronique By Epix®
Page 5 sur 5
F. Calcul de la durée
On a réalisé un monostable, mais on désire connaître la durée correspondant à l’état haut. Pour cela,
il suffit de compter le nombre de cycles, puis de le multiplier par le nombre de fois que ces cycles
seront exécutés.
! On regarde dans le listing du programme, l’endroit ou se situe la boucle :
titi DECA
2 cycles
BNE titi 3 cycles
LDAB
#$00 2 cycles
STAB $1004 3 cycles
Les deux premières instructions sont répétées tant que le contenu du registre « A » n’est pas
égal à zéro. Comme, on a fixé le registre « A » à la valeur « FF », la boucle va se répéter 255 fois
(car dés qu’elle sera égale à zéro, elle va s’arrêter).
Les deux dernières instructions, ne vont se répéter qu’une seule fois.
Au final, on a donc :
T = ( 5 x 255 ) + 2 + 3
T = 1280 cycles.
La documentation constructeur nous stipule que la durée d’un cycle avoisine les 540ns, ce qui fait
donc une durée de :
Durée = 1280 x 540ns
Durée = 0,7 ms.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !