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

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
Ligne 33 :
==== 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 :
<sourcesyntaxhighlight lang="c">
//***** MikroC fichier P18F84A.c ******
const unsigned short
Ligne 53 :
OPTION_REG absolute 0x0081,
....
</sourcesyntaxhighlight>
Cela permet de connaître le nom des bits du [[w:Registre_(informatique)|registre]] '''STATUS''' et de confirmer le nom du registre '''OPTION''' (comme OPTION_REG). Rappelez-vous que le langage C est sensible à la [[w:Casse|casse]] des caractères.
{{remarque|contenu=Gardez en mémoire pour toute la suite, que le registre '''OPTION''' s’appelle OPTION_REG en MikroC.}}
Ligne 59 :
==== 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 :
<sourcesyntaxhighlight lang="c">
/* STATUS bits */
 
Ligne 68 :
volatile bit DC @ (unsigned)&STATUS*8+1;
volatile bit CARRY @ (unsigned)&STATUS*8+0;
</syntaxhighlight>
</source>
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.
<sourcesyntaxhighlight lang="c">
extern volatile near union {
struct {
Ligne 105 :
};
} PORTAbits;
</syntaxhighlight>
</source>
Cet exemple nous montre la diversité des noms des [[w:Bit|bit]]s pour un même [[w:Port_matériel|port]].
 
Ligne 115 :
| Hitech C
|-
|<sourcesyntaxhighlight lang="c"> char demo;
demo.F5 = 1;
 
Ligne 127 :
// ou encore (MikroC pro seulement)
T0IF_bit = 0; // Clear TMR0IF
</syntaxhighlight>
</source>
|<sourcesyntaxhighlight lang="c"> char demo;
demo= demo |0x20;
 
Ligne 136 :
// utilisation du nom d'un bit
INTCONbits.TMR0IF=0;// Clear TMR0IF
</syntaxhighlight>
</source>
|
<sourcesyntaxhighlight lang="c">
//Le nom du bit a changé !!!
T0IF = 0; // Clear TMR0IF
</sourcesyntaxhighlight>
|}
 
Ligne 162 :
 
La définition du port A est faite dans le fichier :
<sourcesyntaxhighlight lang="c">
//***** Extraits du fichier P16F84A.c (MikroC) *******
unsigned short register volatile
 
PORTA absolute 0x0005;
</syntaxhighlight>
</source>
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 :
<sourcesyntaxhighlight lang="c">
//***** Extraits du fichier pic1684.h (HitechC) *******
....
Ligne 183 :
volatile bit RA1 @ (unsigned)&PORTA*8+1;
volatile bit RA0 @ (unsigned)&PORTA*8+0;
</syntaxhighlight>
</source>
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]].
 
Ligne 198 :
==== Le registre TRISA et ses bits en MikroC ====
La définition du [[w:Port_matériel|port]] A est faite dans le fichier :
<sourcesyntaxhighlight lang="c">
//***** Extraits du fichier P16F84A.c (MikroC) *******
unsigned short register
OPTION_REG absolute 0x0081,
TRISA absolute 0x0085,
</syntaxhighlight>
</source>
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 :
<sourcesyntaxhighlight lang="c">
//***** Extraits du fichier pic1684.h (HitechC) *******
....
Ligne 219 :
volatile bit TRISA1 @ (unsigned)&TRISA*8+1;
volatile bit TRISA0 @ (unsigned)&TRISA*8+0;
</syntaxhighlight>
</source>
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]].
 
Ligne 232 :
# Tout le '''PORTA''' est réécrit (concerne les pins en sortie).
Ainsi, supposons par exemple que le RA4 soit en sortie et mis à 1. Comme il est en [[w:Sortie_collecteur_ouvert|sortie drain ouvert]], si une électronique externe le force à 0, si vous effectuez l’opération suivante :
<sourcesyntaxhighlight lang="pic16">
bsf PORTA , 1 ; mettre RA1 à 1
</syntaxhighlight>
</source>
Lorsque le '''PORTA''' va être lu, RA4 sera lu comme 0, bien qu’il soit à 1. RA1 sera forcé à
1, et le tout sera replacé dans '''PORTA'''. RA4 est donc maintenant à 0, sans que vous l’ayez explicitement modifié.
Ligne 245 :
==== PORTB TRISB et leurs bits en Mikro C ====
 
<sourcesyntaxhighlight lang="c">
//******* Extraits du fichier P16F84A.c (MikroC) ******
unsigned short register volatile
Ligne 255 :
TRISB absolute 0x0086,
....
</syntaxhighlight>
</source>
Encore une fois aucune définition de [[w:Bit|bit]]s particuliers.
 
==== PORTB TRISB et leurs bits en Hitech C ====
Le compilateur Hitech C définit naturellement les [[w:Registre_(informatique)|registre]]s correspondants et en plus donne un nom aux [[w:Bit|bit]]s.
<sourcesyntaxhighlight lang="c">
//****** Extraits du fichier pic1684.h (HitechC) ******
volatile unsigned char PORTA @ 0x05;
Ligne 287 :
volatile bit TRISB1 @ (unsigned)&TRISB*8+1;
volatile bit TRISB0 @ (unsigned)&TRISB*8+0;
</syntaxhighlight>
</source>
 
=== Brochage ===