Matériels :
Un PC avec les logiciels PCWH ( Compilateur C pour PICs de CCS) et MPLAB De Microchip
Prise en compte et
restitution du matériel.
Signature :
INTRODUCTION
1) FONCTIONNEMENT DU MICRO-CONTROLEUR.
PIC18F242
Démarrage du
programme
Les ports E/S possèdent jusqu'à 8 bits rattachés chacun à une broche du boîtier et pouvant
être configurés individuellement soit en entrée soit en sortie, par programme.
Le programme ne peut réaliser qu'une seule instruction (commande) à la fois. On parle de
logique séquentielle.
Les instructions sont réalisées au rythme de l'oscillateur (une instruction toutes les 4
périodes de l'oscillateur).
Le microcontrôleur se place en début de programme à chaque impulsion (à l'état bas) sur
la broche MCLR (en général à la mise sous tension ou lors de l'appui sur le bouton
RESET).
Vss br 8 et br 19 (Masse )
Vdd br 20 (+5V DC)
La fréquence de l'oscillateur peut aller jusqu'à 40 MHz, soit une instruction toutes les
100ns.
Trois ports d'E/S
Chaque bit des ports est rattaché à une broche du boîtier et peut être configurer en entrée
ou en sortie. En outre ils sont tous configurables pour une application plus spécifique
(Conversion Analogique Numérique pour le PORTA, transmission série pour le PORTC,
PWM et capture d'impulsions pour le PORTB, …).
3) PROGRAMMATION DU MICRO-CONTROLEUR.
4-1) programme 1
On souhaite réaliser un programme qui allume les quatre DEL connectées sur les ports RB0 à
RB3 lorsque l'on appuie sur un bouton poussoir connecté sur RA4.
La carte ICD2 est auto-alimentée via le cordon USB par l’ordinateur. Ne pas
brancher le cordon adaptateur +9VDC à cette carte.
Les commentaires :
ALGORITHME :
Début algorithme
Faire RB3 à RB0 en sortie , RA4 en entrée
Tant que 1=1 (boucle sans fin)
Si RA4 = 0
Alors
Faire RB0 à RB3 =1
Sinon
Faire RB0 à RB3 = 0
Fin Si
Fin tant que
Fin algorithme
Travail demandé :
A partir du fonctionnement souhaité et de l’algorigramme, compléter le listing du
programme source fourni ci-dessous (parties encadrées).
Retrouver sur le programme les différentes étapes de l’algorigramme (prendre 5
couleurs différentes
Instruction à utiliser :
A partir du diaporama :
Listing du programme
else
{
// RB0 à RB4 à 0
} }
4-2) programme 2
Cahier des charges : 4 leds clignotent pendant 200ms si le bouton poussoir RA4 est appuyé,
sinon elles sont éteintes.
ALGORIGRAMME
ALGORITHME :
Début algorithme
Faire RB0 à RB3 en sortie , RA4 en entrée
Faire RB0 à RB3 à 0
Tant que 1=1
Tant que RA4 = 0
Faire
RB0 à RB3 = 1
Temprisation 0.2s
RB0 à RB3 = 0
Temporisation 0.2s
Fin tant que
Fin tant que
Fin algorithme
Travail demandé :
(PORT B) = 0
non
B
O
U non
Valeur
C <=
L 0000 1000
E ?
F oui
O
R Décalage à gauche de 1
décalage de n bits à gauche ( << ) :
bit de la variable valeur
x = y << n
(PORTB) = valeur
Temporisation de 0.5s
C. Algorithme
DEBUT ALGORITHME
FIN POUR
FIN ALGORITHME
Aide : utiliser la condition do … while et la boucle For… (voir document initiation au langage C)
Travail à faire :
Faire le programme de cet ordinogramme (ajouter votre nom en commentaire) et le tester.
Signature du professeur :
Cahier des charges : réaliser un chenillard à deux sens de défilement. La première LED à s'allumer
est la LED1 reliée à RB0. La LED2 s’allume 0,5 seconde plus tard et ainsi de suite jusqu’à la LED4.
Ensuite, c’est au tour de la LED3 de s’allumer pour revenir à la LED1. (la condition , pour que le
chenillard démarre , est que le bouton poussoir RA4 soit appuyé sinon les leds sont éteintes.)
Travail à faire :
Aide : utiliser le décalage logique à gauche puis le décalage logique à droite avec des boucles for
Signature du professeur :
VDD
VSS
VEE
R4
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
470
1
2
3
4
5
6
7
8
9
D1 D2 D3 D4 D5
10
11
12
13
14
LED-GREEN LED-RED LED-RED LED-RED LED-RED
VEE
VCC
GND
R5 Q1
J6 2N2222
JUMPER 2k2
J9
JUMPER
VCC = 5V
VCC
X1
Quartz 4MHz
R2
4k7 J7 U1
RV1 13 15
JUMPER OSC1/CLKI RC0/T1OSO/T1CKI
1 16
MCLR/Vpp RC1/T1OSI/CCP2A
17
RC2/CCP1
2 18
50%
RA0/AN0 RC3/SCK/SCL
3 23
RA1/AN1 RC4/SDI/SDA
4 24
RA4 5
RA2/AN2/VREF- RC5/SDO
25
RA3/AN3/VREF+ RC6/TX/CK
5k 6 26
RA4/T0CKI RC7/RX/DT
7
RA5/AN4/SS/LVDIN
14 19
RA6/OSC2/CLKO RD0/PSP0
20
RB2 RD1/PSP1
RB0 33 21
RB0/INT0 RD2/PSP2
34 22
RB1/INT1 RD3/PSP3
35 27
RB1 RB2/INT2 RD4/PSP4
36 28
RB3/CCP2B RD5/PSP5
37 29
RB3 RB4 RD6/PSP6
38 30
RB5/PGM RD7/PSP7
39
RB6/PGC
40 8
RB7/PGD RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
PIC18F452