Beruflich Dokumente
Kultur Dokumente
1111
1110
0001 1
0000 0
F
E
#
On supposera que la pression sur une touche Ierme un interrupteur simple.
- En analysant cet nonc, vriIier que le probleme est mal pos, le corriger, puis raliser
le systeme adquat.
III - Ralisation du registre tampon C (figure 3)
On propose maintenant de raliser le registre tampon C. Ce registre permettra de charger
le bus d`adresses (16 bits) et le bus de donnes (8 bits.) a partir des valeurs tapes sur le
clavier.
Le registre C est Iorm de bascules type D. Ce registre reoit un nouveau code du clavier
en C0, C1, C2, C3 et dcale automatiquement d`un pas les anciens codes (le code situ en
C12, C13, C14, C15 est perdu).
- Quelle est la taille (en bits) du registre C ? Combien de bascules sont ncessaires ?
- Dessiner entierement le registre C. Mettre en vidence le chemin suivi par les donnes
du clavier au slecteur d`adresses, ainsi que les signaux de contrle.
IV - Ralisation du slecteur dadresses (figure 3)
C`est le circuit qui actionne directement le bus d`adresse mmoire. Il s`initialise avec la
commande SEL et reoit la commande INC.
- Dessiner entierement ce circuit, en incluant les signaux de contrle.
V - Ralisation du contrleur de bus de donnes (figure 3)
C`est le circuit qui permet d`crire dans la mmoire. Recevant la commande ECR, il place
la mmoire en mode d`criture puis charge le bus de donnes avec les valeurs des bits de
poids Iaibles du registre C. Il incrmente ensuite l`adresse mmoire et place la mmoire en
mode de lecture.
- Dessiner completement ce circuit. Quelle caractristique particuliere doit-il comporter ?
TD Microcontrleur INSA GE
3/4
TD Microcontrleur INSA GE
4/4
INSA GE IF2
1/3 ToG 2007
TD Microcontrleur, famille PIC
Seance 3
Dmultiplexage dadresses
On souhaite commander, avec un microcontrleur, 16 sorties quelconques associes a des
voyants de signalisation. On veut pouvoir modiIier l`tat de chaque sortie (active : 1, ou non
active : 0) sans modiIier l`tat des autres sorties. On veut aussi pouvoir mettre a zro toutes
les sorties Iacilement.
AIin de minimiser le nombre de Iils ncessaires au pilotage des 16 sorties, on propose
d`utiliser deux dmultiplexeurs 74HC259 (cI. Figure 1).
La Iinalit de cet exercice est de raliser le cblage et la logique entre un microcontrleur
de type PIC et les entres des 74HC259 de la Figure 1.
Figure 1 . Solution propose pour le pilotage ae 16 sorties. Les LED symbolisent les sorties.
I Solution sans circuits 74HC259
- Sans les dmultiplexeurs 74HC259, combien de Iils seraient ncessaires au pilotage des
16 sorties ?
- Cette solution est elle toujours convenable ?
TD 3 Microcontrleur INSA GE
2/3
II Solution retenue : utilisation de circuits 74HC259
Analyser la table de vrit du circuit 74HC259 (cI. Figure 2 et Figure 3).
- Avec un seul circuit, combien de sorties peuvent tre pilotes ? Combien de bits (ou Iils)
sont ncessaires au pilotage de ce circuit ?
- Quels sont les 4 modes de Ionctionnement de ce circuit ?
- D`apres le cahier des charges, quels sont les modes de Ionctionnement du 74HC259
utiles a notre systeme et quelle(s) Ionction(s) leurs sont associes ?
- Pour les modes aecoaer et aaressable latch , prcisez quand la valeur de la
donne G est applique sur une sortie 4.
III Liaison microcontrleur systme de 16 voyants
On se place maintenant cot microcontrleur. On associe une adresse a chaque voyant (ou
sortie). On pilotera l`tat d`une sortie en slectionnant cette sortie grce a son adresse puis en
crivant son nouvel tat sur le bus de donnes. EnIin, on validera le changement d`tat de la
sortie.
- Combien de ELWV GDGUHVVHV sont ncessaires au pilotage des 16 voyants ?
- De mme pour les ELWV GH GRQQpHV ?
- Sachant que l`on veut pouvoir mettre toutes les sorties a 0 Iacilement et qu`il est
ncessaire de valider les donnes pour eIIectuer le changement d`tat d`une sortie, combien
de bits sont ncessaires au FRQWU{OH de ce systeme ?
IV Ralisation du cblage
- A quoi doit-on relier les entres A
0
, A
1
et A
2
puis D des 74HC259 ? Prvoir la
validation des donnes.
- Comment peut on piloter 16 sorties ? Raliser le schma de cblage du bus d`adresse, ne
pas oublier la validation des donnes.
- Ajouter la logique pour permettre une mise a zro de toutes les sorties (on disposera
d`un bit reset provenant du microcontrleur).
TD 3 Microcontrleur INSA GE
3/3
Figure 2 . Schema fonctionnel au 74HC259.
Figure 3 . Table ae verite au 74HC259.
INSA GE IF2
1/7 ToG 2007
TD Microcontrleur, famille PIC
Seance 4
Premire application avec un PIC : faire clignoter une LED
Le but de cette sance de TD est d`crire le programme assembleur pour le PIC16C84
permettant de Iaire clignoter une LED. Le schma de l`application est propos sur la Figure 1.
Des que le montage sera mis sous tension, la LED devra clignoter indIiniment (priode
de 400 millisecondes).
Figure 1 . Schema ae lapplication.
I Organigramme du programme
Dessiner l`organigramme de l`application. Pour la temporisation on Iera apparatre une
Ionction Tempo .
TD 4 Microcontrleur INSA GE
2/7
II Fonction Tempo
Le code assembleur suivant est celui d`une Ionction de temporisation. Les variables
Tempo_value_B1 et Tempo_value_B2 sont stockes en RAM aux adresses 0x0020 et
0x0021. Le microcontrleur est cadenc a 4MHz.
1 Tempo_Wms:
2 BCF STATUS, RP0 ;
3 MOVWF Tempo_value_B1 ;
4 Tempo_B1:
5 MOVLW .249 ;
6 MOVWF Tempo_value_B2 ;
7 Tempo_B2:
8 NOP ;
9 DECFSZ Tempo_value_B2,1;
10 GOTO Tempo_B2 ;
11 DECFSZ Tempo_value_B1,1;
12 GOTO Tempo_B1 ;
13 RETURN ;
a- Indiquez pour chaque ligne de cette Ionction ce qui est ralis par le microcontrleur
(cI. documents constructeur Figure 3).
b- En dduire l`organigramme de la Ionction Tempo_Wms.
c- Donner le nombre de cycles correspondant a l`excution de chaque instruction (cI.
documents constructeur Figure 3).
d- En dduire le temps d`excution de la Ionction Tempo_Wms en Ionction de la valeur
contenue dans le registre W (cI. Figure 6).
e- JustiIier l`utilisation de l`instruction NOP ligne 8 et de la valeur littrale ligne 5.
I- Avec un seul appel a cette Ionction, quelle est la dure de la temporisation la plus
longue que l`on puisse raliser ?
III Programme principal
a- Donner les instructions permettant de conIigurer la broche RB0 pour piloter la LED
(cI. documents Figure 2, Figure 4 et Figure 5).
b- Donner les instructions pour allumer et teindre la LED (cI. Figure 4 et Figure 5).
c- Ecrire en assembleur le programme principal. (Pour obtenir un programme complet,
vous pourrez complter le listing suivant).
TD 4 Microcontrleur INSA GE
3/7
#include <p16F84.inc> ; def. des variables du microprocesseur
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC; config. du PIC
;***** DEFINITION des VARIABLES
Tempo_value_B1 equ 0x0020
Tempo_value_B2 equ 0x0021
;**************************************************************
ORG 0x0000 ; vecteur reset
GOTO main ; aller au dbut du programme
Tempo_Wms:
; code de la question II
RETURN
main: ; programme principal, vous
END ; directive 'fin de programme'
TD 4 Microcontrleur INSA GE
4/7
Annexes :
Extraits de la documentation Microchip PIC16C84
http://ww1.microchip.com/downloads/en/devicedoc/30445c.pdI
Figure 2. Organisation ae la memoire, PIC 16C84
TD 4 Microcontrleur INSA GE
5/7
Figure 3. Jeu ainstructions aes PIC 16CXXX
TD 4 Microcontrleur INSA GE
6/7
Figure 4 . Fonctionnement au PORTB
TD 4 Microcontrleur INSA GE
7/7
Figure 5 . Exemple autilisation et aescription aes registres associes au PORTB.
Figure 6 . Cycles horloge et instructions
INSA GE IF2
1/7 ToG 2007
TD Microcontrleur, famille PIC
Sances 5 et 6
Soru1o11on por bo1ogoge,
opp11oo11on pour 1e oodoge des 1ouoes d'un o1ou1er
Le but de cette sance de TD est dcrire en assembleur (famille PIC16XXX) une fonction
permettant de scruter un clavier de 16 touches et de donner la valeur de la touche presse (on
parlera de dcodage). On supposera quune seule touche est appuye la fois.
Le schma interne du clavier est dcrit sur la Figure 1.
La fonction de scrutation/dcodage sera appele par le programme principal. Cette
fonction devra attendre quune touche soit presse. Elle retournera la valeur dcode (de 0
F).
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
RA0
RA1
RA2
RA3
RB0 RB1 RB2 RB3
Figure 1 : Schma fonctionnel du clavier (sans les rsistances, les diodes)
1 - Somo de 1'opp11oo11on
- Raliser le schma global de lapplication (cf. Figure 2). On veillera particulirement aux
rsistances de rappels et de protections ncessaires lutilisation du clavier.
11 - Orgon1gromme
- Dcrire le principe de fonctionnement de la scrutation du clavier.
- Donner une mthode permettant de faire le dcodage.
- Etablir lorganigramme de la fonction de scrutation/dcodage (faire apparaitre ces
fonctions).
111 - Progrommo11on des ]ono11ons
- Ecrire en assembleur les fonctions de scrutation et de dcodage. Le code de la touche (de
0 F) sera retourn via le registre W.
TD 5-6 Microcontrleur INSA GE
2/7
1V - Pour o11er p1us 1o1n.
- Exemples dutilisation : minuterie programmable, digicode 4 chiffres,
- Programmation en utilisant uniquement le port B (pour la lecture RB4 RB7), le port A
est ainsi libr.
- Critiquer la solution de programmation mise en place pour la scrutation et proposer une
mthode plus adapte.
Figure 2: Schma du PIC 16F84
TD 5-6 Microcontrleur INSA GE
3/7
Annees :
1ro11s de 1o dooumen1o11on M1oroo1p P1CJtCS4
http://ww1.microchip.com/downloads/en/devicedoc/30445c.pdf
Figure 3: Organisation de la mmoire, PIC 16C84
TD 5-6 Microcontrleur INSA GE
4/7
Figure 4: Jeu dinstructions des PIC 16CXXX
TD 5-6 Microcontrleur INSA GE
5/7
Figure 5 : Description du fonctionnement du PORT A
TD 5-6 Microcontrleur INSA GE
6/7
<
Figure 6 : Description du fonctionnement du PORT B
TD 5-6 Microcontrleur INSA GE
7/7
Figure 7 : Dtails des registres du PIC16C84.
INSA GE IF2
1/9 ToG 2007
TD Microcontrleur, famille PIC
Seance 7
Exercices de programmation en assembleur
Il est conseill de savoir Iaire ces exercices.
Conseils :
- commencer par Iaire un organigramme,
- ensuite, traduire rigoureusement et tape par tape votre organigramme
- ne pas hsiter a ajouter des variables temporaires (en RAM) ncessaires au codage
assembleur,
- ne chercher pas trop a optimiser votre code et l`utilisation de la mmoire,
- utiliser des noms de variables clairs (valeurs, Ionction ou de boucle),
- encore une Iois : utiliser des variables (temporaires, parametres, .) en RAM.
I Table de retour de fonction
D Raliser la Ionction de dcodage hexadcimal 7 segments (cI. cours).
E On veut connatre les valeurs approches de sin(x) pour x entier et compris entre 0 et
90. 3URSRVHU une solution de mise en ouvre (attention aux valeurs relles.).
II Adressage index
D Ecrire le programme permettant d`additionner 2 vecteurs de taille n. Les vecteurs sont
en mmoire RAM aux adresses v1 et v2, ainsi que leur taille n. Le vecteur rsultat s sera aussi
stock en RAM. On suppose que la somme de chaque composante est inIrieure a 255. (cI.
Figure 4)
E Les 46 valeurs pour x0, 2, 4, ., 90 de
) sin( . 255 x ont t crites dans les 46
premieres adresses de l`EEPROM du PIC. Ecrire la Ionction retournant la valeur de sin(x),
x|0;90|. (cI. Figure 5 et Figure 6).
F ModiIier la Ionction prcdente aIin d`obtenir sin(x) pour x|0;180| (cI. Figure 8).
III Arithmtique : addition 16 bits
- Faire la Ionction $GG permettant d`additionner deux valeurs a et b de 16 bits. Le
rsultat de l`addition s Iera aussi 16 bits. Chaque variable 16 bits sera compose de 2 octets :
la partie basse (octet de poids Iaible, par exemple al pour a) et la partie haute (poids Iort, ah).
- Ecrire un programme utilisant la Ionction Aaa16. Les variables a et b seront a initialiser
aux valeurs de votre choix.
- Signaler le dpassement de capacit (cI. Figure 3) en allumant une LED sur PORTB0~.
IV Arithmtique : Multiplication 8 bits
- Faire l`organigramme d`une Ionction permettant de multiplier deux valeurs 8 bits a et b.
Le rsultat sur 16 bits sera crit dans 2 variables 8 bits ml (octet de poids Iaible) et mh (octet
de poids Iort).
- Ecrire le code assembleur de cette Ionction.
TD 7 Microcontrleur INSA GE
2/9
Annexes :
Extraits de la documentation Microchip PIC16C84
http://ww1.microchip.com/downloads/en/devicedoc/30445c.pdI
Figure 1. Organisation ae la memoire, PIC 16C84
TD 7 Microcontrleur INSA GE
3/9
Figure 2 . Details aes registres au PIC16C84.
TD 7 Microcontrleur INSA GE
4/9
Figure 3. Detail au registre STATUS
TD 7 Microcontrleur INSA GE
5/9
Figure 4 . Description ae laaressage inairect
TD 7 Microcontrleur INSA GE
6/9
Figure 5. Description aes accs a lEEPROM (1/2)
TD 7 Microcontrleur INSA GE
7/9
Figure 6 . Description aes accs a lEEPROM (2/2)
TD 7 Microcontrleur INSA GE
8/9
Figure 7. Jeu ainstructions aes PIC 16CXXX
TD 7 Microcontrleur INSA GE
9/9
Figure 8 . Description aetaillee aes instructions SUBLW et SUBWF
INSA GE IF2
1/11 ToG 2007
TD Microcontrleur, famille PIC
Seance 8
Application :
Pilotage dune sortie parmi 8
On souhaite piloter une sortie parmi 8 a l`aide d`un clavier 16 touches. Seules les 8
premieres touches (de 0 a 7) sont utilises, chaque touche est associe a une sortie. L`appuie
sur une touche provoque l`inversion de l`tat logique de la sortie correspondante.
A l`initialisation, on souhaite que toutes les sorties soient inactives (tat logique bas).
On disposera des Ionctions suivantes :
TempoWms : qui permet d`attendre W millisecondes pour un PIC cadenc a 4MHz.
ScruteClavier : qui scrute le clavier tant qu`aucune touche n`est enIonce et retourne
la valeur de la touche enIonce dans W. Le clavier doit tre connect au PORTB : bits 0 a 3
pour l`criture colonne active, bits 4 a 7 pour la lecture des lignes (dtection d`une touche si
tat haut, tat bas si aucune touche n`est enIonce).
On disposera d`un PIC 16F84.
On utilisera un dmultiplexeur pour le pilotage des 8 sorties (type 74HC259, cI. Figure 10
et Figure 11).
Le clavier est un ensemble de 16 boutons poussoir cbls de maniere a permettre la
scrutation par balayage (Figure 12).
I Schma de lapplication
D Expliquer et justiIier le choix des composants du schma de l`application (Figure 1). On
s`intressera notamment aux rles et aux valeurs des rsistances R1 a R8.
II Organigramme de lapplication
D Faire l`organigramme global de l`application.
E Dtailler le pilotage des sorties (cI. document 74HC259, Figure 11).
III Programmation
Ecrire le programme en assembleur. On pourra Iaire appel aux Ionctions TempoWms et
ScruteClavier (ne pas rcrire ces Ionctions).
TD 8 Microcontrleur INSA GE
2/11
Figure 1 . Schema Application 8 sorties
TD 8 Microcontrleur INSA GE
3/11
Annexe 1:
Extraits de la documentation Microchip PIC16C84
Figure 2. Organisation ae la memoire, PIC 16C84
TD 8 Microcontrleur INSA GE
4/11
Figure 3 . Details aes registres au PIC16C84.
TD 8 Microcontrleur INSA GE
5/11
Figure 4. Detail au registre STATUS
TD 8 Microcontrleur INSA GE
6/11
Figure 5 . Description au fonctionnement au PORT A
TD 8 Microcontrleur INSA GE
7/11
Figure 6 . Description au fonctionnement au PORT B
Figure 7. Schema au PIC 16F84
TD 8 Microcontrleur INSA GE
8/11
Figure 8. Jeu ainstructions aes PIC 16CXXX
TD 8 Microcontrleur INSA GE
9/11
Figure 9. Caracteristiques electriques
TD 8 Microcontrleur INSA GE
10/11
Annexe 2:
Extraits de la documentation du 74HC259
Figure 10 . Schema fonctionnel au 74HC259
Figure 11 . Table ae verite au 74HC259
TD 8 Microcontrleur INSA GE
11/11
Annexe 3:
Schma du clavier.
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Figure 12 . Schema fonctionnel au clavier (sans les resistances, les aioaes.)