Cour de programmation
Page 1 sur 1 • Partagez •
Cour de programmation
Cours de C :
Très bon cours de programmation C sur ordinateur :
Le site du Zéro.
Contient aussi des cours sur le HTML, les ordinateurs et ...)
Cours de C pour microcontrôleurs (plutôt PIC) :
Le site de Bigonoff.
Enfin pour un perfectionnement voici un forum de programmation, plutôt pour les personnes à bon niveau (même si il existe des tutoriels pour débutants) :
Developpez.
Très bon cours de programmation C sur ordinateur :
Le site du Zéro.
Contient aussi des cours sur le HTML, les ordinateurs et ...)
Cours de C pour microcontrôleurs (plutôt PIC) :
Le site de Bigonoff.
Enfin pour un perfectionnement voici un forum de programmation, plutôt pour les personnes à bon niveau (même si il existe des tutoriels pour débutants) :
Developpez.
Dernière édition par raphaël le Jeu 11 Mar - 21:13, édité 1 fois
raphaël- Messages : 43
Date d'inscription : 08/09/2009
Cour de programmation
Supplément de C pour micocontrôleurs PIC :
I) Utilisation des ports entrées/sorties standards :
1) Configuration du port :
TRISx = _____; 0 = output(sortie), 1 = input(entrée) du point de vue du microcontrôleur
avec x = A ou B ou C ou D ou E suivant le port souhaité
ex: pour configurer le port B en entré : TRISB = 0b11111111; ob signifie aue le nombre est éxprimé en binaire
pour configurer le port D en sortie : TRISD = 0b00000000;
pour configurer les bits [3..0] du port C en sortie et les bits [7..4] en entré : TRISC = 0b11110000;
2) Lecture du port :
Pour un port configuré en entré :
var = PORTx
ex: pour lire la valeurs du port B (en entrée cf au dessus) et mettre le resultat dans une variable (d'un octet) :
unsigned char var_lue_portB;
var_lue_portB = PORTB;
3) Écriture sur un port :
Pour un port configurée en sortie :
LATx = ____
ex : pour mettre la valeur d'une variable sur le port D (configurée en sortie cf plus haut) :
unsigned char ecriture_portD = 15;
LATD = ecriture_portD;
4) Manipulation supplémentaire sur les ports :
Il est possible d'inverser un port (ou une variable) : ~nom_port ou (~nom var)
ex: var = ~PORTB; //fait que var aura la valeur du PORTB inversé.
On peut aussi recopier tout un port d'un coup vers un autre port : LATx = PORTy
ex: LATD = PORTB;
LATD = ~PORTB; //est aussi possible
5) Manipulation bit à bit sur les ports :
Il est possible, intéressant et souvent utile de manipuler qu'un bit sur un port.
Si le bit du port est configuré en entrée : PORTxbits.Rxy pour viser le bit y du port x. (Rem : y appartient à [0 .. 7])
Si le bit du port est configuré en sortie : LATxbits.LATxy pour viser le bit y du port x.
ex: TRISB=0b00110101; //bits 7,6,3 et 1 en sorties (0) et bits 5, 4, 2, 0 en entrés (1)
TRISD=0b00001111; //bits 7 à 4 en sorties (0) et bits 3 à 0 en entrés (1)
LATBbits.LATB1 = PORTBbits.RB0; //possible dans un même port
LATDbits.LATD4 = PORTBbits.RB2; //possible dans ce sens d'un port à l'autre
LATBbits.LATB7 = PORTDbits.RD0; /possible dans l'autre sens
LATBbits.LATB5 = PORTBbits.RB4; //impossible car le bit 5 du port B n'est pas configuré comme une sortie
LATDbits.LATD6 = PORTDbits.RD5; //impossible car le bit 5 du port D n'est pas configuré en entré
I) Utilisation des ports entrées/sorties standards :
1) Configuration du port :
TRISx = _____; 0 = output(sortie), 1 = input(entrée) du point de vue du microcontrôleur
avec x = A ou B ou C ou D ou E suivant le port souhaité
ex: pour configurer le port B en entré : TRISB = 0b11111111; ob signifie aue le nombre est éxprimé en binaire
pour configurer le port D en sortie : TRISD = 0b00000000;
pour configurer les bits [3..0] du port C en sortie et les bits [7..4] en entré : TRISC = 0b11110000;
2) Lecture du port :
Pour un port configuré en entré :
var = PORTx
ex: pour lire la valeurs du port B (en entrée cf au dessus) et mettre le resultat dans une variable (d'un octet) :
unsigned char var_lue_portB;
var_lue_portB = PORTB;
3) Écriture sur un port :
Pour un port configurée en sortie :
LATx = ____
ex : pour mettre la valeur d'une variable sur le port D (configurée en sortie cf plus haut) :
unsigned char ecriture_portD = 15;
LATD = ecriture_portD;
4) Manipulation supplémentaire sur les ports :
Il est possible d'inverser un port (ou une variable) : ~nom_port ou (~nom var)
ex: var = ~PORTB; //fait que var aura la valeur du PORTB inversé.
On peut aussi recopier tout un port d'un coup vers un autre port : LATx = PORTy
ex: LATD = PORTB;
LATD = ~PORTB; //est aussi possible
5) Manipulation bit à bit sur les ports :
Il est possible, intéressant et souvent utile de manipuler qu'un bit sur un port.
Si le bit du port est configuré en entrée : PORTxbits.Rxy pour viser le bit y du port x. (Rem : y appartient à [0 .. 7])
Si le bit du port est configuré en sortie : LATxbits.LATxy pour viser le bit y du port x.
ex: TRISB=0b00110101; //bits 7,6,3 et 1 en sorties (0) et bits 5, 4, 2, 0 en entrés (1)
TRISD=0b00001111; //bits 7 à 4 en sorties (0) et bits 3 à 0 en entrés (1)
LATBbits.LATB1 = PORTBbits.RB0; //possible dans un même port
LATDbits.LATD4 = PORTBbits.RB2; //possible dans ce sens d'un port à l'autre
LATBbits.LATB7 = PORTDbits.RD0; /possible dans l'autre sens
LATBbits.LATB5 = PORTBbits.RB4; //impossible car le bit 5 du port B n'est pas configuré comme une sortie
LATDbits.LATD6 = PORTDbits.RD5; //impossible car le bit 5 du port D n'est pas configuré en entré
raphaël- Messages : 43
Date d'inscription : 08/09/2009
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum