Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

[RESOLU] LCD I2C
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 364
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#1 Message par venom » sam. 17 févr. 2018 23:05 lien vers la Data-Sheet : Cliquez ici

Bonjour a tous,

Certain on pu me lire sur ce topic de pspic qui a réalisé une communication entre un pic et un lcd 16x2
via ce module :
Im1.JPG


Je souhaite donc en faire autant mais en C. Pour ce projet je souhaite juste afficher du texte sur l’écran. Pour ce qui et du matériel, voici ce que j'ai:

pic 16f887 Datasheet
le module pcf8574AT Datasheet
un lcd 16x2 (pas de datasheet) :oops:
et une breadbord :-D

Voilà pour ce qui est du matériel. J'ai fait un petitschema sous proteus pour vous montrer le branchement que j'ai fait (car niveau photo je n'ai pas de quoi faire une belle qualité)

Voici donc le schéma :
schema.png


J'ai quand même fait une simulation sous isis (même si a plusieurs reprises vous m'avez dit que la simu reste de la simu) :oops: :sifflotte:
sa fonctionne. biensur sur la breadbord ça ne fonctionne pas, si non j'aurais ecrit en gros et gras "youhou !!!!!!!" :lol:

J'ai récuperer un code sur libstock que j'ai modifier pour un 16f887.
Le voici :
Code mise a jour et fonctionnelle le 21/05/2018
Merci a paulfjujo qui a fait tout le code :-D

Code : Tout sélectionner

///////////////////////////////
//    name : LCDI2C          //
//    create : venom         //
//    pic : 16f887 4MHz      //
//  Merci à Paulfjujo        //
//Qui a corrigé tout le code //
///////////////////////////////

// config
//CONFIG1 : $2007 : 0x24F4
//CONFIG2 : $2008 : 0x0600


#define _LCD_FIRST_ROW          0x80     //Move cursor to the 1st row
#define _LCD_SECOND_ROW         0xC0     //Move cursor to the 2nd row
#define _LCD_THIRD_ROW          0x94     //Move cursor to the 3rd row
#define _LCD_FOURTH_ROW         0xD4     //Move cursor to the 4th row
#define _LCD_CLEAR              0x01     //Clear display
#define _LCD_RETURN_HOME        0x02     //Return cursor to home position, returns a shifted display to
                                         //its original position. Display data RAM is unaffected.
#define _LCD_CURSOR_OFF         0x0C     //Turn off cursor
#define _LCD_UNDERLINE_ON       0x0E     //Underline cursor on
#define _LCD_BLINK_CURSOR_ON    0x0F     //Blink cursor on
#define _LCD_MOVE_CURSOR_LEFT   0x10     //Move cursor left without changing display data RAM
#define _LCD_MOVE_CURSOR_RIGHT  0x14     //Move cursor right without changing display data RAM
#define _LCD_TURN_ON            0x0C     //Turn Lcd display on
#define _LCD_TURN_OFF           0x08     //Turn Lcd display off
#define _LCD_SHIFT_LEFT         0x18     //Shift display left without changing display data RAM
#define _LCD_SHIFT_RIGHT        0x1E     //Shift display right without changing display data RAM

// Adresse I2C du LCD
#define LCD_ADDR 0x7E   // venom  adresse du PCF8574A = 0x7E.

//test led fosc
sbit LED at PORTC.B0;
sbit LED_Dir at TRISC.B0;

unsigned int i,j;
char rs;

// Lcd constants
char txt1[] = "FantasPic !     ";
char txt2[] = "LCD I2C !       ";


void CRLF1(void){
UART1_Write(13);
UART1_Write(10);
}


void I2C_LCD_Cmd(char out_char) {

    char hi_n, lo_n;
    rs = 0x00;
    hi_n = out_char & 0xF0;
    lo_n = (out_char << 4) & 0xF0;

    I2C1_Start();
    I2C1_Is_Idle();
    I2C1_Wr(LCD_ADDR);
    I2C1_Is_Idle();
    I2C1_Wr(hi_n | rs | 0x04 | 0x08);
    I2C1_Is_Idle();
    Delay_us(50);
    I2C1_Wr(hi_n | rs | 0x00 | 0x08);
    I2C1_Is_Idle();
    Delay_us(100);
    I2C1_Wr(lo_n | rs | 0x04 | 0x08);
    I2C1_Is_Idle();
    Delay_us(50);
    I2C1_Wr(lo_n | rs | 0x00 | 0x08);
    I2C1_Is_Idle();
    I2C1_Stop();

    if(out_char == 0x01)Delay_ms(25);
}

void I2C_LCD_Chr(char row, char column, char out_char) {

    char hi_n, lo_n;
    rs = 0x00;
    switch(row){

        case 1:
        I2C_LCD_Cmd(0x80 + (column - 1));
        break;
        case 2:
        I2C_LCD_Cmd(0xC0 + (column - 1));
        break;
    };
    hi_n = out_char & 0xF0;
    lo_n = (out_char << 4) & 0xF0;
    rs = 0x01;
    I2C1_Start();
     Delay_us(50);
    I2C1_Wr(LCD_ADDR);
     Delay_us(50);
    I2C1_Wr(hi_n | rs | 0x04 | 0x08);
     Delay_us(50);
    Delay_us(50);
    I2C1_Wr(hi_n | rs | 0x00 | 0x08);
    Delay_us(100);
    I2C1_Wr(lo_n | rs | 0x04 | 0x08);
    Delay_us(50);
    I2C1_Wr(lo_n | rs | 0x00 | 0x08);
    I2C1_Stop();
}


void I2C_LCD_Init()
 {
    rs=1;
    Delay_ms(500); //30 // laisser le temps au LCD de s'alimenter correctement
    I2C_LCD_Cmd(0x30);
    Delay_ms(10);
    I2C_LCD_Cmd(0x30);
    Delay_ms(10);
    I2C_LCD_Cmd(0x30);
    Delay_ms(10);
    I2C_LCD_Cmd(0x20);
    Delay_ms(10);
    I2C_LCD_Cmd(0x28);
     Delay_ms(10);
    I2C_LCD_Cmd(0x06);
     Delay_ms(10);
    I2C_LCD_Cmd(0x01);
     Delay_ms(50);
}

void I2C_LCD_Out(char row, char col, char *text) {
    while(*text)
         I2C_LCD_Chr(row, col++, *text++);
}


void main() 
{
    OSCCON = 0b01101000;                   // configuration OSCCON interne 4mhz
                                           // 0b01110000 oscillateur 8 Mhz
                                           // 0b01101000 oscillateur 4 Mhz
                                           // 0b01011000 oscillateur 2 Mhz
                                           // 0b01001000 oscillateur 1 Mhz
                                           // 0b00111000 oscillateur 500 Khz
                                           // 0b00101000 oscillateur 250 Khz
                                           // 0b00011000 oscillateur 125 Khz
                                           // 0b00001000 oscillateur 31 kHz

    while(OSCCON.HTS==0);                  // boucle en attendant de voir le flag à 1

    C1ON_bit = 0;                          // Disable comparators
    C2ON_bit = 0;

    PORTA=0;
    ANSEL  = 0;                            // Configure AN pins as digital I/O
    ANSELH = 0;
    TRISA = 0b11101111;
    PORTC=0;
    TRISC = 0b10100110;
    LED_Dir=0;
    LED=0;
    Delay_ms(100);

    //test FOSC visuel avec une  led
      for (i=0;i<2;i++)
      {
       LED=1;
        Delay_ms(1000);
       LED=0;
        Delay_ms(1000);
      }

     I2C1_Init(100000);

     I2C_LCD_Init();
     Delay_ms(500);


    I2C_LCD_Cmd(_LCD_CLEAR);    Delay_ms(50);
    I2C_LCD_Cmd(_LCD_RETURN_HOME);     Delay_ms(50);
    I2C_LCD_Cmd(_LCD_CURSOR_OFF);    Delay_ms(50);
    I2C_LCD_Out(1,1,txt1);
    I2C_LCD_Out(2,1,txt2);

  while(1) {

   }






Voici pour ceux qui est des options du projet:
Sans titre.png


Mais je pense repartir de zero niveau code. Deja pour mieux apprendre le fonctionnement de l'i2c puis pour repérer les éventuelles erreurs car la sa ne fonctionne pas sur la breadbord :langue: Et Jérémy l'a fait mais avec une puce PCF2119. Je pense donc m'inspirer de son code :wink:

Voila les news de mon nouveau projet. :wink:
Ps: en general je met du temps a mes projet (manque de temps, trop de hobby) Mais la je viens d'etre papa donc les nuits sont courtes et le temps libre a encore reduit oops :-D Mais c'est du bonheur.







@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par venom le lun. 21 mai 2018 10:43, modifié 17 fois.

LCD I2C
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#2 Message par paulfjujo » dim. 18 févr. 2018 12:00 lien vers la Data-Sheet : Cliquez ici

bonjour,

Est-tu sur de ton adresse 0x7F , quid des strap d'adresse A0 A1 A2 sur le pigboard PCF8754A ?

Mets des resistances de rappel (pull up) de 2,7K entre SCL et +5V et idem pour SDA ...

Rajoute un delay de 500mS entre l'init I2C et l'init LCD
Essaie de remplacer tes delais en µS par des delais en mS
surtout pour l'init du LCD .

As tu bien configuré FOSC pour que les delais correspondent bien ..
32 MHz -> 8Mhz x 4 PLL ?

LCD I2C
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 811
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » dim. 18 févr. 2018 12:22 lien vers la Data-Sheet : Cliquez ici

Bonjour venom, paulfjujo, et tout le forum,

venom a écrit :
Source du message Mais la je viens d'etre papa


Un petit cadeau en or, un petit ange dans votre vie, c’est de la douceur et tellement de bonheur ! Toutes mes félicitations :wink:

-------------------------------------------------------------------------------------------------------------------------------

paulfjujo a écrit :
Source du message 2 MHz -> 8Mhz x 4 PLL ?


A ma connaissance ce PIC16F887 n'a pas de PLL, un soucis en moins, mais il y a bien un oscillateur interne.

En assembleur il faut paramétrer OSCCON, par exemple pour un choix sur 8Mhz, voici ce que l'on fait.

Code : Tout sélectionner


    Errorlevel
-302 ; Supprime le message "Ensure that bank bits are correct" 


    list        p
=16F887                  ; processeur utilisé 
    
#include    <p16F887.inc>              ; Définitions des constantes

 __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT 
 __CONFIG _CONFIG2
, _WRT_OFF & _BOR21V                                                                                                   

  ORG H
'00'
      goto debut 

  ORG  H
'04'
      retfie      

debut

                                          
; 01111000 oscillateur 8 Mhz  
      movlw    B
'01111000 '               ; 01101000 oscillateur 4 Mhz    
      movwf    OSCCON                     
; 01011000 oscillateur 2 Mhz
                                          
; 01001000 oscillateur 1 Mhz
                                          
; 00111000 oscillateur 500 Khz
                                          
; 00101000 oscillateur 250 Khz
                                          
; 00011000 oscillateur 125 Khz
                                          
; 00001000 oscillateur 31 kHz 
                                          


C'est la configuration de __CONFIG _CONFIG1 qui mettra l'oscillateur interne en fonction

c'est pratiquement le même que le 16F88, il se configure presse de la même manière mais avec
plus de patte, très bon choix :wink:

==> A+
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

LCD I2C
Gérard
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 764
Âge : 59
Enregistré en : septembre 2015
Localisation : Alsace

#4 Message par Gérard » dim. 18 févr. 2018 18:09 lien vers la Data-Sheet : Cliquez ici

venom a écrit :Bonjour a tous,

...
Mais la je viens d'etre papa donc les nuits sont courtes et le temps libre a encore reduit oops :-D Mais c'est du bonheur.


@++


Toutes mes félicitations.
Oui, les nuits à venir seront courtes, mais du bonheur pour des décennies.
Le 11 / 07 / 2017, j'ai commandé une Ford Mustang.
Le 31 / 08 / 2017, j'ai eu la Mustang, un régal.

LCD I2C
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 364
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#5 Message par venom » dim. 18 févr. 2018 20:59 lien vers la Data-Sheet : Cliquez ici

paulfjujo a écrit :bonjour,
Est-tu sur de ton adresse 0x7F , quid des strap d'adresse A0 A1 A2 sur le pigboard PCF8754A ?


Bonsoir, pour ceux qui estde l'adresse, pspic m'a confirmé que c'etait bien ça. Je suis aussi tomber sur un tableau qui donner aussi 0x7F si A0 A1 A2 n'etaient pas relié.

J'ai exactement le PCF8754AT

paulfjujo a écrit : Mets des résistances de rappel (pull up) de 2,7K entre SCL et +5V et idem pour SDA ...

Pareil pspic m'a dit que sur les module a puces PCF8754AT les résistances pull-up étaient inutiles. Mais si ça ne mange pas de pain pas de souci je vais en mettre. :wink: :langue:

paulfjujo a écrit : Rajoute un delay de 500mS entre l'init I2C et l'init LCD
Essaie de remplacer tes delais en µS par des delais en mS
surtout pour l'init du LCD .


C'est fait, j'ai remit le code a jour au 1er post. :wink: J'ai tout passer en ms et ajouté un delay 500 entre i2c et le lcd.

paulfjujo a écrit :As tu bien configuré FOSC pour que les delais correspondent bien ..
32 MHz -> 8Mhz x 4 PLL ?


J'avoue que mon incompétence dans le domaine me joue encore des tours. :oops: Je ne connais pas trop FOSC je brule sans doute les etapes d'apprentissage. :cry:
J'ai regarder sur le net et si je ne me trompe pas je doit ajouter OSCCON = 0b11110010; pour avoir le FOSC a 32Mhz c'est bien ça ?

J'ai aussi vu sur le net que sa parle de 32Mhz diviser par 4 PLL ce qui égale a 8mhz. :shock: J'avoue partager dans la semoule pour le coup. Je n'y connais vraiment rien en ce qui concerne les valeurs Mhz.

Temps-x a écrit :A ma connaissance ce PIC16F887 n'a pas de PLL, un soucis en moins, mais il y a bien un oscillateur interne.

Je te renvoie a ma réponse du dessus :sifflotte:

Bien évidement les modifications n'on rien donner de bon :-D


Merci a tous pour vos félicitations. J'ai hésite a poster dans Coin Fourre-tout mais bon. Merci !






@++

LCD I2C
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#6 Message par paulfjujo » mar. 20 févr. 2018 10:06 lien vers la Data-Sheet : Cliquez ici

Bonjour,



:bravo: Felicitations ! et bon courage . (surtout pour la maman!)
au fait un p'tit gars ou une fille ?

essaie de rajouter ceci dans l'init

Code : Tout sélectionner


  C1ON_bit 
= 0;                             // Disable comparators
  C2ON_bit = 0;



et en debut de programme , une led qui clignote sur une sortie quelconque ... sur le port C.

LCD I2C
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 364
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#7 Message par venom » mar. 20 févr. 2018 20:55 lien vers la Data-Sheet : Cliquez ici

Bonjour Paul et tout le forum.

HS: il s'agit d'une petite fille nommée Athénaïs.

Ok pour les modifications et la led. J'avais vu cette idée de led dans ce code Jérémy dans lequel tu a fort participé :wink: :-D .

Après j'ai bien étudié ce code qui est davantage compréhensible pour moi car Jérémy l'a bien commenté en français. :sifflotte:

Je pourrais sûrement partir de ce code la et l'adapter pour mon 16f887 qu'en pensé tu ???






@++

LCD I2C
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#8 Message par paulfjujo » mer. 21 févr. 2018 09:59 lien vers la Data-Sheet : Cliquez ici

bonjour Venom et à tous,


Vu que tu as déja fait un Tuto en basic sur le LCD I2C, tu devrais pouvoir t'en sortir avec cette version C et 16F887..
Bien verifier les particularités de ce PIC .. et le comportement bizarre de MikroC avec les 16F lorsqu'on utilise beaucoup de RAM.
Verifier si tu n'as pas de warning ou IRP bit dans les messages resultant de la compilation.
La compil peut etre réussie .. mais un warning peut t'annoncer un disfonctionnement.

Ce serait plus profitable pour toi ,de deverminer TON programme.. c'est mon humble avis .

A+

LCD I2C
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 364
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#9 Message par venom » mer. 21 févr. 2018 12:49 lien vers la Data-Sheet : Cliquez ici

Bonjour Paul,

Non le code en basic n'est pas de moi il est de pspic. Moi le code que je présente ci-dessus est un code en C trouver sur libstock.

Ok pour les warning. Je ne savais pas que sa pouvait compiler avec des warning. Merci de ton aide et de ta patience :wink:

Pareil comment sa se calcule une résistance pull-up pour i2c ? Car j'ai croisé des montages, ils montent jusqu'à 10K






@++

LCD I2C
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#10 Message par paulfjujo » sam. 24 févr. 2018 19:09 lien vers la Data-Sheet : Cliquez ici

bonsoir Venom et à tous ,


j'ai reactualisé un code que j'avais posté aussi sur libstock en 2014 , prevu initialement pour un 18F
adapté au LCD 2119 adresse 0x74 .. sera sans doute à adapter

3 fichiers
le fichier principal avec le main
le fichier de definition des parametres LCD
le fichier bibliotheque
je l'ai bien re-testé sur ma carte 44 Pin DEMO Board Microchip
( livrée avec mon Pickit2 ! mais pas tres pratique avec des trous à 0,127mm au lieu de 2,54)
J'alimente le tout avec le Pickit2.
FOSC=4MHz

J'ai bien séparé les fonctions pour ecrire du texte en ROM ou en RAM..
avec les 16F ,il faut faire attention .

Code : Tout sélectionner

//    pic : 16f887 4MHz      //
// rev Paulfjujo 24-02-2018


// config
//CONFIG1 : $2007 : 0x2CF4
//CONFIG2 : $2008 : 0x0600

const char txt1[] = "I2C LCD";
const char txt2[] = "PIC16f887";  // TEXTE dans le CODE FLASH ROM
unsigned char TEXTE[48];  // TEXTE en RAM
unsigned char *txt;

#define FOSC 4  // MHz

 // HARDWARE = 44 Pin Demo Board Microchip  16F887  avec Pickit2
//  pinout settings
sbit LD7 at RD7_bit;
sbit LD6 at RD6_bit;
sbit LD5 at RD5_bit;
sbit LD4 at RD4_bit;
sbit LD3 at RD3_bit;
sbit LD2 at RD2_bit;
sbit LD1 at RD1_bit;
sbit LD0 at RD0_bit;

sbit SW1 at RB0_bit ;

unsigned int i,j,k;
unsigned char Addr;

#define With_LCD_I2C
#ifdef With_LCD_I2C

#include "LCD_definitions.h"
//#define LCD_ADDR 0x7E        // adresse du PCF8574A = 0x7E. adresse du PCF8574 = 0x4E
//#define LCD_ADDR 0x74        // adresse de mon LCD2119 !
// LCD 2119 2x16 cars en I2C hardware
void LCD_CLS(void);
int LCD2119_Init(void);
void LCD_RAZ_Ligne(int L);
void LCD_Write_Chr_At(int Ligne,int col,char c1,int special);
void LCD_Write_Text_At(unsigned int Ligne,unsigned int col,char * t1);
void LCD_Write_CText_At(unsigned int Ligne,unsigned int col,const char * t1);
void LCD_Write_CText(const char * t1);
void Cree_Euro(void) ;
void Cree_8_cars_CGRAM(void)  ;
void LCD_Cde(unsigned char Cde);
void LCD_Gauche(void);
void LCD_Droite(void);
#endif


void main()
{
  OSCCON=0;
  OSCCON.IRCF2=1;
  OSCCON.IRCF1=1;
  OSCCON.IRCF0=0;
  OSCCON.SCS=1;
  //OSCCON=0b01110001 ; // 8MHz (111) & SCS=1  (sinon 4 MHz par defaut)
  //OSCCON=0b01100001 ; // 4 MHz par defaut
  //OSCCON = 0b11110010;   // configuration osc interne 32Mhz  (avec PLL)

    ANSEL  = 0;                            // Configure AN pins as digital I/O
    ANSELH = 0;
    TRISA=0xFF;
    TRISB=0xFF;
    TRISC = 0x00;
    PORTC = 0x00;
    TRISD=0;   // 8 leds
    PORTD = 0;
    C1ON_bit = 0;                      // Disable comparators
    C2ON_bit = 0;

    // 1er test hardware sur les 8 leds PORT D
    // pour verif FOSC

    PORTD = 0;
    for (j=0;j<8;j++)
    {
     k=1<<j;
     PORTD=k;
     Delay_ms(100);
    }
    PORTD=0;
    
    I2C1_Init
(100000);

    Delay_ms(500);                         // ajout delay 500ms

    Addr=LCD_ADDR;
    k=LCD2119_Init() ;   // l'affichage de >> >> >>  EST NORMAL ( ROM type U dans le LCD2119 )
    Cree_8_cars_CGRAM() ;  // 8 caracteres speciaux (dont Euro et Degré)
    
    LCD_Write_Chr_At
(1,1,'A',0);
    LCD_Write_Chr_At(1,2,'B',0);
    LCD_Write_Chr_At(2,8,'C',0);
    LCD_Write_Chr_At(2,9,'D',0);
    Delay_ms(1000);
    
    LCD_CLS
();
    Delay_ms(1000);
 
   while
(1)
   {
    LCD_RAZ_Ligne(1);
    LCD_Write_CText("1ere ligne .....");
                   //1234567890123456
    LCD_RAZ_Ligne(2);
    LCD_Write_CText_At(2,1,"2 em ligne 12346");
    Delay_ms(2000);
    
    LCD_CLS
();        // efface tout l'ecran
    Delay_ms(100);
    LCD_Write_CText(txt1);
    LCD_Write_CText_At(2,3,txt2);
    Delay_ms(2000);
    
    LCD_RAZ_Ligne
(1);
    LCD_Write_CText_At(1,1," 8 car. speciaux");
    LCD_RAZ_Ligne(2);
    for(i=0;i<8;i++)  LCD_Write_Chr_At(2,i,i,1);
    Delay_ms(2000);
    
    LD5
=!LD5;
    }
}
 


projet complet
_16F887_Demo_Board_LCD_I2C_180224.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités