« Utiliser les PIC 16F et 18F/Les ports et le langage C » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Correction des encodages de caractère
m Robot : Changement de type cosmétique
Ligne 8 :
 
Les [[w:Port_matériel|PORTs]] sont des [[w:Registre_(informatique)|registre]]s destinés à gérer les entrées sorties : allumer une [[w:Diode_électroluminescente|led]], lire si un [[w:Capteur|capteur]] est à un ou 0 sont des actions que peuvent faire les PORTs.
== Manipulation des bits des ports et registres ==
Nous avons déjà présenté dans le chapitre précédent comment il était possible de manipuler les [[w:Bit|bit]]s avec des masques. Il existe une autre méthode que nous allons présenter maintenant.
 
Ligne 17 :
L'installation de l'environnement de développement gratuit MPLAB de [[w:Microchip|Microchip]] vous permet d'utiliser les deux derniers gratuitement (il faut payer pour avoir la version optimisée).
 
=== On connaît seulement le bit par sa position ===
 
Jusqu'à présent nous avons désigné les positions de [[w:Bit|bit]]s par b0 ([[w:Bit_de_poids_faible|poids faible]]) à b7 ([[w:Bit_de_poids_fort|poids fort]]).
* En mikroC, il est possible d'accéder à un bit particulier pour toute variable sur 8 bits avec B0..B7 ou F0..F7.
 
=== On connaît le bit par son nom ===
La documentation des composants PIC donne des noms aux [[w:Bit|bit]]s de la plupart des [[w:Registre_(informatique)|registre]]s. Pour ces registres, on peut utiliser la même méthode ou utiliser les noms des bits.
* En MikroC : nom du bit suivi par _bit ou nom du registre "." nom du bit
Ligne 30 :
Si vous voulez connaître le nom des bits, je ne vois aucun autre moyen que de lire les fichiers d'en-têtes.
}}
==== Exemple de fichier d'en-tête pour MikroC ====
À proprement parler, pour le compilateur MikroC, les définitions ne sont pas dans un fichier avec une extension (.h) mais dans des fichiers qui se trouvent dans un répertoire defs et qui ont l'extension (.c). On en présente un extrait maintenant :
<source lang="c">
Ligne 56 :
{{remarque|contenu=Gardez en mémoire pour toute la suite, que le registre '''OPTION''' s'appelle OPTION_REG en MikroC.}}
 
==== Exemple de fichier d'en-tête pour Hitech C ====
Par exemple pour le [[w:PIC_16F84_de_Microchip|PIC 16F84 de Microchip]], on trouvera un ficher d'en-tête pour le compilateur Hitech C nommé pic1684.h dans lequel on peut lire :
<source lang="c">
Ligne 70 :
qui vous donne le nom des bits du [[w:Registre_(informatique)|registre]] '''STATUS''' ! Vous vous seriez certainement attendu à "C" au lieu de "CARRY" si vous avez lu toutes les documentations présentées jusqu'à maintenant.
 
==== Exemple de fichier d'en-tête pour C18 ====
Voici un autre exemple, pour le '''PORTA''' pour le compilateur C18 trouvé dans le fichier p18f4550.h.
<source lang="c">
Ligne 107 :
Cet exemple nous montre la diversité des noms des [[w:Bit|bit]]s pour un même [[w:Port_matériel|port]].
 
=== Exemple pour comparer ===
Nous présentons un exemple pour comprendre :
{| class="wikitable"
Ligne 147 :
Remarquez les techniques différentes utilisées par trois compilateurs.
 
== Les PORTs du 16F84 ==
=== Le PORT A: RA0 … RA4 ===
Le PORT A est un des deux [[w:Port_matériel|port]]s du [[w:PIC_16F84_de_Microchip|PIC 16F84]], et comprend 5 lignes Entrées/Sorties.
Ligne 160 :
La ligne RA4 est une entrée à Trigger de Schmitt et une sortie à drain ouvert qui est multiplexée avec l’entrée de Timer '''TMR0'''.
 
==== Le PORT A et ses bits en MikroC ====
 
La définition du port A est faite dans le fichier :
Ligne 171 :
Il n'y a aucune définition de noms de [[w:Bit|bit]]s. Il vous faut donc utiliser ''PORTA.F0'' à ''PORTA.F4''
 
==== Le PORT A et ses bits en HitechC ====
Voici les noms du '''PORTA''' et de ses [[w:Bit|bit]]s :
<source lang="c">
Ligne 187 :
Rappelez-vous qu'il n'y a que 5 [[w:Bit|bit]]s d'utilisables dans le PORTA dans le [[w:PIC_16F84_de_Microchip|PIC 16F84]].
 
=== Le registre TRISA ===
Le [[w:Registre_(informatique)|registre]] '''TRISA''' (Bank 1) est le registre qui permettra de placer les broches indépendamment en entrée ou en sortie.
{{propriété|contenu=
Ligne 197 :
Pour des exemples de manipulation du PORT A en [[w:Assembleur|assembleur]], lisez [[b:Comment_démarrer_avec_un_PIC16F84|Comment démarrer avec un PIC 16F84]].
 
==== Le registre TRISA et ses bits en MikroC ====
La définition du [[w:Port_matériel|port]] A est faite dans le fichier :
<source lang="c">
Ligne 207 :
Il n'y a aucune définition de noms de [[w:Bit|bit]]s. Il vous faut donc utiliser ''TRISA.B0'' à ''TRISA.B4''
 
==== Le registre TRISA et ses bits en HitechC ====
Voici les noms du '''TRISA''' et de ses bits :
<source lang="c">
Ligne 223 :
Rappelez-vous qu'il n'y a que 5 [[w:Bit|bit]]s d'utilisables dans le PORTA dans le [[w:PIC_16F84_de_Microchip|PIC 16F84 de Microchip]].
 
=== Fonctionnement des PORTs ===
Les [[w:Port_matériel|PORT]]S fonctionnent toujours sur le principe
Ligne 239 :
1, et le tout sera replacé dans '''PORTA'''. RA4 est donc maintenant à 0, sans que vous l’ayez explicitement modifié.
 
=== Le PORT B et le registre TRISB ===
Ces [[w:Registre_(informatique)|registre]]s fonctionnent exactement de la même manière que '''PORTA''' et '''TRISA''', mais concernent bien entendu les 8 broches RB. Tous les [[w:Bit|bit]]s sont donc utilisés dans ce cas.
Voyons maintenant les particularités du '''PORTB'''. Les entrées du '''PORTB''' peuvent être connectées à une [[w:Résistance_de_tirage|résistance de tirage]] au +5V de manière interne, cette sélection s’effectuant par le bit 7 du registre '''OPTION''' (effacement du bit7 RBPU pour valider les résistances de rappel au +5V).
 
==== PORTB TRISB et leurs bits en Mikro C ====
 
<source lang="c">
Ligne 259 :
Encore une fois aucune définition de [[w:Bit|bit]]s particuliers.
 
==== PORTB TRISB et leurs bits en Hitech C ====
Le comilateur Hitech C définit naturellement les [[w:Registre_(informatique)|registre]]s correspondants et en plus donne un nom aux [[w:Bit|bit]]s.
<source lang="c">
Ligne 290 :
</source>
 
=== Brochage ===
Le brochage du PIC 16F84A en boitier [[w:DIL|DIL]] est le suivant :
 
[[ImageFichier:Brochage_16F84.jpg‎|thumb|center|250px|Brochage du PIC16F84]]
 
Comme on peut s'y attendre on retrouve tous les [[w:Port_matériel|PORT]]s sur le brochage : les 5 bits du '''PORTA''' (RA4 ... RA0) et les 8 bits du '''PORTB''' (RB7 ... RB0).
 
 
== Les PORTs du 16F877 ==
[[Catégorie:Langage C]]
[[Catégorie:Architecture des ordinateurs]]
 
==Les PORTs du 16F877==
Voir [[w:16F877|PIC 16F877]] dans wikipédia en attendant.
 
== Les PORTs du 18FXXXX ==
 
Voici la documentation:
Ligne 457 ⟶ 454 :
Les bits de TRISB sont désignés par TRISBbits.TRISB0 ... TRISBbits.TRISB7 avec le compilateur C18.
 
== Voir aussi ==
* [[w:Microcontrôleur_PIC|microcontôleur PIC]]
* [[w:PIC_16F84_de_Microchip|PIC 16F84 de Microchip]]
Ligne 469 ⟶ 466 :
}}
 
[[Catégorie:Langage C]]
[[Catégorie:Architecture des ordinateurs]]
[[Catégorie:Langage C]]
[[Catégorie:Architecture des ordinateurs]]