Documente Academic
Documente Profesional
Documente Cultură
fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Objectifs
Mettre en œuvre un circuit d’entrée / sortie d’ un système micro-contrôleur
Réaliser un organigramme de programmation d’ un système micro-contrôleur
Rédiger en assembleur un programme à partir d’un organigramme
Pré-requis
– Electronique numérique, série 8
– Principe organigramme
Savoirs associés
– Structure d’un système programmable
– Organisation de la zone adressable
– Mécanisme des interruptions
– Programmation en assembleur
1
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Sommaire
I. Introduction
II. Structure d’un système programmable
1. Architecture des systèmes à base de micro-processeur
2. Architecture des systèmes à base de micro-contôleur
III. Choix d’un micro-contrôleur
IV. Développement de système à base de micro-contrôleur
1. Organisation du développement (programmation seule)
2. Organisation du développement (matériel et programmation)
V. Etude d’un micro-contrôleur 16 bits : le 8XC196KC
1. Architecture du 8XC196KC
2. Zone adressable du micro-contrôleur
3. Fichier de registre et Special Fonction Register du micro-
contrôleur
4. Ports d’entrées / sorties Tout Ou Rien
5. Ports de sorties à Modulation de Largeur d’Impulsions (PWM)
6. Interruptions du micro-contrôleur
7. Ports d’entrées de conversion analogique / numérique
Travail personnel
Autocorrection
2
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
I. Introduction
Le micro-contrôleur est né lorsque les technologies d’intégration ont eu suffisamment progressé
pour permettre sa fabrication et aussi parce que très souvent, dans des applications domestiques
ou industrielles, on a besoin d'un système "intelligent" ,complet, puissant, facile à mettre en
oeuvre et d'une grande souplesse d'emploi ; le tout dans un seul boîtier. Il permet dans un seul
boîtier d’avoir tous les éléments nécessaire à la mise en œuvre d’un automatisme industiel. Il ne
reste qu’à l’interfacer avec les différents capteurs et préactionneurs du process à commander.
Grâce à l'arrivée des micro-contrôleurs, des cartes qui contenaient des dizaines de circuits
intégrés logiques se sont vues réduites à un seul boîtier.
CIRCUITS D'INTERFACE
PORTS E/S PARALELLES,SERIES - CAN - PWM..
MONDE EXTERIEUR
3
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
CONVERTISSEUR
A/N GENERATEUR EPROM
D'HORLOGE SUR 87XX
ECHANTILLONEUR 8
BLOQUEUR
UNITE LOGIQUE TIMER 1 SIGNAUX DE
CONTROLEUR
CHIEN DE GARDE 232 REGISTRES ET CONTROLE
ARITHMETIQUE TIMER 2 MEMOIRE
MULTIPLEXEUR
16
PORT3
16
BUS ADRESSES
BUS DONNEES
P.W.M. PORT SERIE E/S RAPIDES
PORT4
MULTIPLEXEUR
P2
4
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
DEVICES ROM/ RAM TIMER A/D I/O PINS I/O SERIAL SPEED PROCESS
TYPE
EPROM COUNTER CHANELS PORTS ( MHz )
5
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
DEBUT
ENONCE DU
PROBLEME
ECRIRE UN
ORGANIGRAMME
CHOIX DU LANGAGE
DE PROGRAMMATION
ECRIRE LE
PROGRAMME SOURCE
ASSEMBLER
OU COMPILER
.LIB BIBLIOTHEQUE N O
ERREUR
.OBJ DE PROGRAMMES
EDITEUR DE LIENS
LINKER ET RELOCATE
TELECHARGER ET
TESTER LE PROGRAMME
O PROGRAMME N
AU POINT
PROGRAMMER
L'EPROM
FIN
On ne peut pas parler de micro-contrôleur sans aborder les logiciels de programmation et les
matériels permettant de développer le composant. Pour réaliser les programmes exécutables, on
6
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
utilisera l'assembleur ou le compilateur C (édités par le constructeur ou une autre société). Pour
étudier le micro-contrôleur, il existe une carte d'évaluation développée par le constructeur.
2. Organisation du développement (matériel et programmation)
Pour cette solution, on développe conjointement la carte micro-contrôleur et le logiciel.
Le développement de la carte et du logiciel associé comprend trois phases :
1. Développement de la carte et du programme simultanément.
2. Association des deux parties matérielle et logicielle.
3. Utilisation d'un émulateur pour tester cet ensemble.
DEBUT
DEFINITION DU
PRODUIT
ECRIRE DESSINER
L'ORGANIGRAMME LE SCHEMA
ECRIRE
SIMULATION
LE CODE SOURCE
LINKER AND
PROTOTYPE
RELOCATE
FIN
7
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
CONVERTISSEUR
A/N CPU GENERATEUR EPROM
D'HORLOGE SUR 87C196KC
256 BYTES
ECHANTIONNEUR
RAM
BLOQUEUR
T2CAPT
HOLD
HDLA
MULTIPLEXEUR BREQ
PORT 0 E/S RAPIDES
PORT 2 PWM1
PORT1 PWM2
A partir de cette structure, on constate que le 8XC196KC dispose d'un certain nombre d'entrées
et de sorties:
• 5 ports d’entrées/sorties parallèles sur 8 bits (Port 0, Port 1, Port 2, Port 3 et Port 4).
• 2 à 4 entrées rapides HSI.
• 6 à 4 sorties rapides HSO.
• 8 entrées Convertisseur Analogique/Numérique multiplexées sur 8 ou 10 bits.
• 3 sorties PWM (PWM0, PWM1, PWM2).
• 1 port de communication série.
• 26 registres spéciaux ( SFRs ).
• 232 registres (cases mémoire).
• 256 octets de mémoire type RAM reconfigurable en registre.
• 2 compteurs ( Timer 1 et Timer 2 ) utilisables avec les Entrées/Sorties rapides.
• 4 Timers logiciels utilisés pour générer les événements.
• 1 chien de garde utilisé pour verrouiller l'unité centrale dans certain cas de figure.
• 1 contrôleur de mémoire externe.
• 28 sources d'interruption.
2. Zone adressable du micro-contrôleur
Le micro-contrôleur 8XC196KC possède 16 bits d'adresse. Il peut donc adresser 64 Koctets de
mémoire. Voici la répartition des 64 Koctets de mémoires adressables par le micro-contrôleur
8XC196KC sur la carte INTEL EVB196 :
• La mémoire interne du 8XC196KC apparaît en bas de 0000H à 01FFH (2 x 256 cases).
• La mémoire externe apparaît de 2000H à 5FFFH (4096 cases dont certaines affectées).
• Les ports 3 et 4 sont situés au adresses 1FFEH et 1FFFH.
8
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
FFFFH
Mémoire Externe
6000H
Mémoire ROM/EPROM interne
Zone RAM externe disponible ou Mémoire Externe
2080H Début du programme
Réservé Intel sur un Reset
205EH
15 vecteurs du PTS
2040H
8 vecteurs d'interruption
2030H
Clef de sécurité Rom/Eprom
2020H
Réservé Intel
2019H
Octet de configuration
2018H
Réservé Intel
2014H
10 vecteurs d'interruption
2000H
Port 3 et Port 4
1FFEH
Mémoire Externe
0200H
RAM interne additionnelle
Zone interne du 8XC196KC 0100H
Fichier de Registres et SFRs
0000H
9
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
10
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
• Les octets IOC0, IOC1, IOC2, IOC3 permettent de configurer certains périphériques du
µC.
• Les octets IOS0, IOS1, IOS2 donnent l'état de ces mêmes périphériques (ex :
conversion CAN terminée).
• Pour chaque périphérique, nous reviendrons sur l'état de ces registres SFRs.
Vérifier l'état des registres SFRs concernés, avant d'utiliser les E/S.
4. Ports d’entrées / sorties Tout Ou Rien
Nous avons 5 ports d'entrées/sorties parallèles à 8 bits (ports 0, 1, 2, 3 et 4). Il existe des ports
qui sont à entrée seule, à sortie seule et des ports qui sont bidirectionnels. Les broches où se
trouvent les ports d'entrées/sorties parallèles sont souvent utilisées avec d’autres fonctions (le
port 0 est sur les mêmes broches que les entrées analogiques par exemple).
Le PORT 0 est un port d'entrée (à lecture seule). Son contenu est accessible à l'adresse 0EH des
SFRs de la fenêtre HWINDOW 0. En plus de cette fonction entrée logique, ce port peut être
utilisé en entrée analogique. C'est donc un port multifonctions. Les niveaux logiques sont :
• Ventrée < 0.8V Niveau logique 0
• Ventrée > 2.2V Niveau logique 1
Le PORT 1 fonctionne quand à lui totalement en mode bidirectionnel (soit en sortie, soit en
entrée). Son contenu est accessible à l'adresse 0FH des SFRs de la fenêtre HWINDOW 0 (en
écriture pour la sortie, en lecture pour l’entrée). Les niveaux d'entrée sont les mêmes que pour
le port 0. Voici le schéma de ce port pour l’entrée et la sortie.
5V
VALIDATION
ECRITURE LATCH
8XC196KC
ATTENTION : Pour les ports bidirectionnels, il faut adopter quelques règles:
En entrée si l'ensemble des entrées est relié à la masse, le courant de 7mA par sortie risque
d'être trop important pour le boîtier ( 7mA X 8=56mA ).
Solution matérielle : mettre une résistance en série de 1KΩ.
Solution logicielle : écrire 1 dans le port 1, lorsqu'il est utilisé en entrée.
En sortie dans certains cas de figure, on peut avoir un niveau électrique sur la broche de sortie
différent du contenu du registre du port 1 en lecture. Par exemple avec le montage ci-dessous si
on écrit dans le port 1 à l'adresse 0FH des SFRs le mot 00000001B. le transistor est bien saturé,
mais si on lit le contenu du port 1, on aura 00000000B à cause du niveau électrique d'entrée du
transistor bipolaire.
11
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
80C196KC
P1.0
0.7V
v( t )
t
αT T
Trois solutions sont envisageables :
• En utilisant un port de sortie parallèle dont on change l'état en agissant sur deux
temporisateurs complémentaires (T1 pour αT; T2 pour ( T-αT )). Avec un tel système, nous
pouvons utiliser ce signal dans une large gamme de fréquence et de rapport cyclique, mais
ce choix est lourd car il faut deux temporisateurs, du calcul mobilisant le processeur pour
exécuter le programme.
• En utilisant une sortie rapide HSO du micro-contrôleur. Nous ne l’étudierons pas.
• En utilisant une des trois sorties PWM du micro-contrôleur.
Etudions cette dernière solution. Les sorties PWM sont au nombre de trois: PWM0, PWM1,
PWM2. Le synoptique fonctionnel est donné ci-dessous.
FREQUENCE QUARTZ /2
/2 REGISTRE
1 BUS
COMPTEUR COMPARATEUR
0 8 8 PMW_CONTROL 8
IOC2.2
OVERFLOW EQUAL
S R
Q
SORTIE PWM0, 1 OU 2
12
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
256
• Quand IOC2.2 = 0, la période PWM est T= = 32 µs ou 31,25 KHz
8 × 10 6
2 × 256
• Quand IOC2.2 = 1, la période PWM est T = = 64 µs ou 15,625 KHz
8 × 10 6
FONCTIONNEMENT : Le compteur 8 bits s’incrémente à chaque impulsion d'horloge.
Lorsque le compteur est égal à 00H ( overflow ), la sortie PWM passe à 1. Quand le compteur
atteint la valeur chargée dans le registre PWM_CONTROL, la sortie du PWM passe à 0.
Lorsque le compteur est à nouveau en dépassement, la sortie PWM bascule de nouveau à 1. Le
signal de sortie de PWM est de fréquence fixe et rapport cyclique variable avec le contenu du
registre PWM_CONTROL. Le rapport cyclique vaut PWM_CONTROL/256.
Pour accéder aux sorties PWM une selection est necéssaire par un bit de direction :
A l'aide du registre de contrôle concerné, on dirige la sortie PWM correspondante vers la sortie.
Remarques: Les 3 PWM utilisent le même compteur de 8 bits. Donc, ces trois sorties passent
en même temps au niveau 1 logique. Le bit de division de l'horloge IOC2.2 est donc actif pour
les trois PWM. La nouvelle valeur de PWM_CONTROL ne sera prise en compte qu'après le
passage en overflow du compteur.
Si le contenu de PWM_CONTROL = 0FFH, alors la sortie du PWM reste à l'état haut de 00H à
0FEH et passe à zéro de 0FFH à 00H. Le rapport cyclique maximal est donc de 99,6 %
INITIALISATION D'UNE PWM:
13
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
14
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
6. Interruptions du micro-contrôleur
En automatisme la prise en compte d'événements (changement d'état d'une entrée) peut être
envisagée selon deux approches :
METHODE SCRUTATIVE : Dans la suite d'instructions du programme on insère un test puis
en fonction du résultat on réalise la séquence d'instructions correspondante.
NON OUI
TEST D'EVENEMENT = 1
NON OUI
TEST D'EVENEMENT = 1
SEQUENCE
SEQUENCE
D'INSTRUCTIONS
D'INSTRUCTIONS
SUITE
SUITE
15
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
16
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Ces interruptions sont mémorisées dans deux registres IPEND1 et INT_PENDING de plus il est
possible de les masquer (interdire leur prise en compte) grâce à deux registres IMASK1 et
INT_MASK. Il est également possible de masquer l’ensemble des interruption par I dans
PSW.9.
7 6 5 4 3 2 1 0
12H IPEND1: NMI HSI EXT T2 T2 HSI RI TI
13H IMASK1: FIFO INT OVFL CAPT FIFO
FULL PIN 4éme
7 6 5 4 3 2 1 0
09H INT_PENDING: EXT SERIAL SOFT HSI.0 HSO HSI A/D TIMER
08H INT_MASK: INT PORT TIMER PIN PIN DATA DONE OVFL
Chaque vecteur utilise 2 adresses consécutives dans l'espace 2000H/200FH et 2030H/203FH dans
lesquelles sera rangée par l'utilisateur l'adresse de sa routine d'interruption (ISR).
Organisation de la circuiterie d’interruption :
17
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
SOURCES D'INTERRUPTION
DETECTEUR DE TRANSITIONS
REGISTRE DE MEMORISATION
MASQUAGE GENERAL
ENCODEUR DE PRIORITE DE 0 à 15
GENERATEUR D'INTERRUPTION
- SAUVEGARDE DU CONTEXTE
- CHARGEMENT DU VECTEUR
D'INTERRUPTION DANS PC
affectation globale :
18
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
19
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Source d'IT
Bit mémoire
de l'IT
61 cycles maximum
Le schéma précédent montre que l'intervalle de temps maximum séparant l'instant d'apparition d'un
événement et l'instant d'entrée dans l'ISR correspondant peut prendre au maximum 61 state times
(coups d'horloge). Pour un quartz à 16 MHz cela donne: 125ns x 61 = 7,6µS de retard.
20
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
7
6
SUCCESSIVE 5
8 TO 1 4
ANALOG AD_RESULT
SAMPLE APPROXIMATION 3
HI
2
ANALOG AND A/D 1
INPUT 0
HOLD
CONVERTER
MULTIPLEXER 7
6
AD_RESULT
BUSY 3
CONTROL LOGIC
LO
2
1
0
AD_COMMAND
CHANNEL 3
2
1
0
<1
START CONVERSION
Nous avons une résolution de 19,53 mV ( 8 bits ) ou de 4,88 mV ( 10 bits ) pour une dynamique
d’entrée de 5 V. Pour une fréquence du quartz de 16 MHz une conversion sur 8 bits peut être
réalisée en 9,8125µs. Pour lancer la conversion, choisir la vitesse du convertisseur et pour
connaître le résultat, nous avons besoin de 5 bits du registre AD_COMMAND.
REGISTRE DE COMMANDE AD_COMMAND ( 02H de SFRs )
21
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
1 : Conversion finie
0 : Conversion en cours
22
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Travail personnel
1. Mise en œuvre du module d’entrée rapide
Ce sont des entrées qui, lorsqu'un événement arrive sur l'une d'elles, enregistrent
automatiquement la date et l'état logique de celui-ci dans une pile du µC.
On peut enregistrer comme cela, 8 événements consécutifs avec leurs dates.
HSI.0 TIMER 1
DETECTEUR FREQUENCE QUARTZ/16
HSI.1 16 BITS
HSI.2 D'EVENEMENT 4 16
HS.3
20
8 PILES FIFO 7
20
HOLDING REGISTER
4 4 16
BUS DE DONNEES
23
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
HSI ENABLE
FIFO TIMER 1
INTERRUPT AND
16 BITS
LOGIC CONTROL LOGIC
4 16
HOLDING REGISTER
8 4 8 16
Au regard de ce synoptique, un certain nombre de registres sont utiles afin d'exploiter les HSI.
Le registre HSI_MODE (HWINDOW 0, adresse 03H) nous permet de choisir les transitions
actives à enregistrer sur les 4 entrées rapides HSI.
HSI-MODE 03H
7 6 5 4 3 2 1 0
1 2 3 4 5 6 7 8
Suivant le contenu du registre HSI_MODE, nous choisissons un des quatre modes ci-dessus
pour chaque HSI.
BITS MEMORISATION DE L'EVENEMENT
Le registre IOC1 qui se trouve à l'adresse 16H de la HWINDOW 0 permet de valider les HSI.2
et HSI.3. : Pour valider le fonctionnement de HSI.2, il faut IOC1.4 = 0. Pour valider le
fonctionnement de HSI.3, il faut IOC1.6 = 0
Le registre IOC0 qui se trouve à l'adresse 15H de la HWINDOW 0 permet la sélection des
entrées HSI.
24
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
IOC0.5
T2RST
IOC0.3
T2 RST
IOC0.0
HSI.0 HSI
IOC0.2
HSI
HSI.1
TIMER 2
T2CLK CLK
IOC0.7
IOC0.4
HSI.2 HSI
IOC0.6
HSI.3 HSI
• Pour valider HSI.0, il faut mettre IOC0.0 = 1 • Pour valider HSI.1, il faut mettre IOC0.2 = 1
• Pour valider HSI.2, il faut mettre IOC0.4 = 1 • Pour valider HSI.3, il faut mettre IOC0.6 = 1
Par ailleurs, HSI.0 peut être utilisée pour mettre à zéro ( RESET ) le TIMER 2 et HSI.1 peut
être utilisée comme horloge du TIMER 2.
25
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
HSI_STATUS 06H
INDICATEUR DE L'ENTREE
ETAT COURANT
QUI A CREE L'EVENEMENT
DES HSI
( LA DATE CORRESPONDANTE
26
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
• Lorsque INT_MASK1.2 = 1: une interruption sera générée dès qu'un 4ème événement
arrivera dans la pile.
• L'entrée HSI.0 peut être utilisée pour générer une interruption sur chaque front montant.
1. Mise en œuvre du module d’entrée rapide (travail demandé)
Rédiger un organigramme dans lequel vous devez mesurer la vitesse de rotation d’un moto-
reducteur (vitesse de rotation comprise entre 10 et 100 tr/min) associé à un codeur d’impulsions
de 256 points par tour.
• Le codeur est relié à l’entrée HSI.0
• On souhaite avoir le résultat en tr/min dans un mot de 16 bits
2. Ecriture d’un programme en assembleur à partir d’un organigramme
• Utilisation du jeu d’instruction joint en annexe
• Rédaction de programme commentée
Rédiger un programme en le commentant dans lequel vous devez mettre à 1 puis à 0 la sortie 0
du port 1 (P1.0) sans délais entre les deux opérations. Puis recommencer à l’infini (voir
algorithme).
Algorithme Programme
DEBUT CSEG AT 2080H
(le programme est implanté en zone mémoire à partir de l’adresse 2080H)
DI ;interdire les interruptions
(interdire la prise en compte des interruptions (positionne I de PSW à 0))
METTRE A 1
DEBUT:
LA SORTIE 0 (étiquette de branchement pour le bouclage du programme (adresse libre : le
DU PORT 1 compilateur l’imposera))
27
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Lancer la 1°
conversion
Affectations
RSEG AT 30H ; à partir de l’adresse 30H
DSB 9 ; réservation de 9 emplacements 8 bits
CSEG AT 2000H ; à partir de l’adresse 2000H
DCW 0 ; vecteur d’interruption non utilisé aux adresses 2000H et 2001H
DCW SOUS_PROG ; vecteur d’interruption correspondant à A/D
CONVERSION COMPLETE aux adresses 2002H et 2003H
Programme principal
CSEG AT 2080H
DI
LDB IOC1,#00000001B
LDB IOC2,#00010000B
LD SP,100H
LDB INT_MASK,#00000010B
EI
LDB AD_COMMAND,#00001000B
BOUCLE: BR BOUCLE
Sous programme d’interruption
CSEG AT 3000H ; à partir de l’adresse 3000H
SOUS_PROG:
LDB PWM0_CONTROL, AD_RESULT_HI
LDB AD_COMMAND,#00001000B
RET
END
28
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Autocorrection
1. Mise en œuvre du module d’entrée rapide
60
n( tr / min .) =
Période( µs )
256 ×
10− 6
DEBUT
=0
Tester IOS1.7
=1
Pas utile de lire HSI.STATUS
(une seule HSI utilisée : HSI.0)
Placer DATE2 dans DATE1
(l’instant n devient l’instant n-1)
Placer HSI_TIME dans DATE2
(échantillonner l’instant n)
PERIODE = DATE2 - DATE1
(PERIODE, DATE1 et DATE2 en µs)
Convertir PERIODE (µs) en
VITESSE DE ROTATION
(tr/min.) (Voir relation ci-dessus)
29
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
Lancer la 1°
conversion
Affectations
RSEG AT 30H ; à partir de l’adresse 30H :
DSB 9 ; réservation de 9 emplacements de 8 bits
CSEG AT 2000H ; à partir de l’adresse 2000H :
DCW 0 ; vecteur d’interruption non utilisé aux adresses 2000H et 2001H
DCW SOUS_PROG ; vecteur d’interruption correspondant à A/D
CONVERSION COMPLETE aux adresses 2002H et 2003H
30
Philippe LE BRUN Florence.vadee@wanadoo.fr
Lycée Louis ARMAND « : 01 45 14 28 28
173 Bd de Strasbourg ¬ : 01 48 73 63 15
94736 NOGENT sur Marne
31