Computing">
More Web Proxy on the site http://driver.im/Chapitre 4
Chapitre 4
Chapitre 4
6.1. Définition
Un microcontrôleur se présente sous la forme d’un circuit intégré réunissant
tous les éléments d’une structure à base de microprocesseur. Voici généralement ce
que l’on trouve à l’intérieur d’un tel composant :
• Un microprocesseur (C.P.U.),
d’autres unités,
• Des timers pour générer ou mesurer des signaux avec une grande précision
temporelle,
analogiques.
45
Chapitre VI : Etude et programmation des microcontrôleurs
• Encombrement réduit,
• Faible consommation,
• Coût réduit
• Fiabilité
• Mise en œuvre plus simple
46
Chapitre VI : Etude et programmation des microcontrôleurs
• Durée du cycle : Période de l'oscillateur quartz divisée par 4 soit 200 ns pour
un quartz de 20 MHz.
• Deux bus distincts pour le code programme et les data.
• Code instruction : mot de 14 bits et compteur programme (PC) sur 13 bits, ce
• qui permet d'adresser 8 K mots (de h'0000' à h'1FFF')
• Bus DATA sur 8 bits.
• 33 Ports Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie.
• PORTA = 6 bits et PORTB PORTC et PORTD = 8bits PORTE = 3 bits pour
le
• 16F877 et 22 I/O seulement pour le 16F876.
• 4 sources d'interruption :
47
Chapitre VI : Etude et programmation des microcontrôleurs
Les 2 bits MSB des 13 bits d'adresse (bits 11 et 12), viennent du registre
PCLATH (bits 3 et 4) qui est à l'adresse : h'0A'. Il faut impérativement les positionner
pour la bonne page, avant d'utiliser les instructions: CALL et GOTO.
48
Chapitre VI : Etude et programmation des microcontrôleurs
Quand le prédiviseur est affecté au Watchdog (PSA=1), TMR0 est prédivisé par 1.
49
Chapitre VI : Etude et programmation des microcontrôleurs
Les ports d’entrée / sortie numériques peuvent être considérés comme les
périphériques les plus simples du microcontrôleur. Pour le PIC, on contrôle leur
fonctionnement à l’aide de registres spéciaux (deux registres par port). Par exemple,
pour le port A, on a le registre PORTA et le registre TRISA.
50
Chapitre VI : Etude et programmation des microcontrôleurs
Le résultat de la conversion est codé sur 10 bits. C'est une valeur comprise
entre h'000' et h'3FF'.
Le temps de conversion d'un bit est TAD. Pour une conversion totale des 10
bits il faut : 12.TAD.
51
Chapitre VI : Etude et programmation des microcontrôleurs
A = Entrée Analogique.
D = I/O Digitale.
52
Chapitre VI : Etude et programmation des microcontrôleurs
Au reset le registre ADCON1 est initialisé à h'00'. Cela signifie que les 5 bits
du Port A et les 3 bits du Port E sont configurés en entrées analogiques.
Pour récupérer le 5 bits du Port A et les 3 bits de Port E en tant que I/O
digitales il faut écrire la valeur h'06' dans ADCON1.
53
Chapitre VI : Etude et programmation des microcontrôleurs
Donc afin de pouvoir réaliser une application à base de pic, nous devons tout
d’abord commencer par écrire le programme dans un éditeur de texte indépendant ou
dans l’éditeur du compilateur choisi et ce avec le langage évolué choisi (C, Pascal,
basic, etc.), ensuite il faut utiliser le compilateur afin de générer le code machine, et
c’est donc un fichier en .hex qui est généré.
Une fois nous avons notre code machine, nous avons le choix de le simuler sur
un logiciel de simulation tel que ISIS ou de l’envoyer à l’aide du programmateur et de
son logiciel au pic. Le programmateur permet de transférer le programme compilé
(langage machine) dans la mémoire du microcontrôleur. Il est constitué d’un circuit
branché sur le port COM du PC ou USB, sur lequel on implante le PIC, et d’un
logiciel permettant d’assurer le transfert. Il existe différents logiciels, nous citons :
Icprog, ICSP, picflash 2 usb etc.
54
Chapitre VI : Etude et programmation des microcontrôleurs
}
int bintobcd(char bin) {
…
return ...;
}
void main (void) // Programme principal
{
DDRBA=0xFF // initialisation et configuration
while (1) // Boucle principale
{
…
tempo(100);
…
val2=bintobcd(val1);
}
}
void nmi(void)interrupt 0
{ // Sous programme d’interruption
Chaque ligne d’instruction se termine par un “;”. Le début d’une séquence est
précédé du symbole “{”. La fin d’une séquence est suivie du symbole “}”.
La notation des nombres peut se faire en décimal de façon normale ou en
hexadécimal avec le préfixe “0x”.
55
Chapitre VI : Etude et programmation des microcontrôleurs
void main() {
PORTC = 0x00; // initialisation du PORTC
TRISC = 0; // Configurer tout le PORTC comme sortie
while(1) {
PORTC = ~PORTC;// changer la valeur du PORTC de 0 à 1 et inversement
Delay_ms(1000); // attendre pendant une seconde
}
}
Une fois le programme écrit nous allons le compiler. Dans le dossier du projet
nous allons retrouver notre code source en C dans un fichier dont l’extension est .ppc
et notre fichier en code machine dont l’extension est .hex et c’est ce dernier que nous
allons utiliser pour la simulation ou pour être transférer au pic via le programmateur.
56
Chapitre VI : Etude et programmation des microcontrôleurs
Nous réalisons donc le schéma sous ISIS et nous éditons les propriétés du pic
afin de l’indiquer le fichier .hex généré par le compilateur mikroC ainsi que la
fréquence de l’horloge. Et en lançant la simulation, nous pourrons voir les LEDs
s’allumer et s’éteindre toutes les secondes.
Nous pourrons par la suite transférer notre programme sur le pic via le
programmateur qu’on peut aussi fabriquer nous même.
57