Besoin d'aide pour comprendre un programme en

pompom -  
loupius Messages postés 789 Statut Membre -
Bonjour,
voilà je suis débutant dans la programmation et j'aurai aimé savoir si quelqu'un aurait pu m'aider à déchiffrer un programme en C afin de le comprendre. Etant donné que je suis interrogé la dessus a la rentrée ! Je peux donner mon adresse mail si nécessaire.
Merci de répondre
Configuration: Windows 7
Firefox 3.5.6

12 réponses

  1. scriptiz Messages postés 1494 Statut Membre 425
     
    Le mieux serait que tu mette le code source du programme en question ici entre les balises <code > et </code > (sans les espaces avant le >) pour que ton code apparaisse proprement sur le forum.
    0
  2. Utilisateur anonyme
     
    Bonjour, ne donne pas ton adresse mail, si tu veux éviter les spams =)

    Postes le ici et entre balises <code> /code>.
    0
  3. scriptiz Messages postés 1494 Statut Membre 425
     
    Le code source du programme que tu veux comprendre, par exemple un bête programme en C qui affiche Hello World :

    #include <stdio.h>
     
    int main(void)
    {
        printf("Hello world!\n");
        return 0;
    }
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Utilisateur anonyme
     
    Et bien le code source, tu dois avoir la source nn ?
    Si tu n'as que l'éxecutable, ne postes pas le binaire, ça nous servirait à rien, par contre si tu n'as pas la source, on va avoir du mal à le déchiffrer, étant donné que le seul code que l'on pourra en tirer sera de l'asm...
    0
  6. pompom
     
    je dois très certainement en avoir un ! mais le programme est assez long et je n'arrive pas a le repérer. est ce que je pourrai publier tout le programme ou c'est pas possible?
    0
  7. Utilisateur anonyme
     
    Oui, mais tu vas avoir du mal à publier le programme !
    Mais postes toujours =)
    0
  8. pompom
     
    #include <p18F4550.h>
    #include "AFFICHAGE.h"
    #include "UART.h"

    #pragma config FOSC = HS
    #pragma config PWRT = OFF
    #pragma config BOR = OFF
    #pragma config WDTPS = 4096
    #pragma config WDT = OFF
    #pragma config LVP = OFF
    #pragma config CPUDIV = OSC1_PLL2
    void OpenUSART(void);
    void tempo (void);
    void liressi(void);
    void recepoctet (void);
    void reception (void);
    void InterruptHandlerHigh ( void);
    void config_reg (void);
    void capture (void);
    void DETECTBIT (void);
    unsigned char N,DRAPEAU,N1,N2,DATA;
    unsigned int VAR;
    unsigned char TAB[25];

    #pragma code InterruptVectorHigh = 0x08

    void InterruptVectorHigh ()
    {
    _asm
    goto InterruptHandlerHigh //jump to interrupt routine
    _endasm
    }
    #pragma code
    #pragma interrupt InterruptHandlerHigh
    void InterruptHandlerHigh ()

    { INTCONbits.GIEH = 0;
    RCONbits.IPEN= 0;
    INTCONbits.TMR0IF = 0;
    T0CONbits.TMR0ON =0;
    // PIE2bits.CCP2IE =0;
    PIR2bits.CCP2IF =0; //check for TMR0 overflow
    // PIE1bits.CCP1IE =0;
    PIR1bits.CCP1IF =0;
    N =TMR0L ;
    DRAPEAU = 1;
    }
    void recepoctet (void)
    {unsigned char i;
    for (i=0;i<8;i++)
    {
    reception ();
    }
    }

    void main (void)
    {
    unsigned int i;

    do{
    WDTCONbits.SWDTEN=0;
    WDTCONbits.SWDTEN=1;

    TRISD =0;
    // do{

    //liressi ();
    //PORTD = 0x01;
    //}while (VAR<1022);

    PORTD =0x01;
    for (i=0;i<65000;i++);
    do{config_reg ();
    PORTD =0x02;
    reception (); // reception des reponses du capteur

    }while (DATA!=0XB4);

    //for (i=0;i<30;i++)
    i=0;
    do
    {recepoctet ();
    TAB[i++] = DATA;
    }while (DATA!=0xAA);
    //do{
    //liressi ();
    PORTD = 0x55;
    // }while (VAR>102);

    INTCON = 0x00;
    OpenUSART ();
    i=0;
    PORTD =0x55;
    do{
    putchar (TAB[i++]);
    }while (TAB[i]!=0xAA);
    echap();
    PORTD = 0x25;

    AFFICHAGE ();

    }while (1);}

    void reception (void)
    {
    DATA>>=1;
    capture ();

    DETECTBIT ();

    }

    void config_reg (void)
    {

    ADCON1=0x0E;
    TRISB =0xff;
    INTCON = 0x80;
    RCONbits.IPEN= 1;
    T0CON =0x42;
    TRISCbits.TRISC2=1;
    TRISCbits.TRISC1=1;
    PIE1bits.CCP1IE=0;
    PIE2bits.CCP2IE=0;
    TRISD =0;
    CCP1CON = 0x05;
    CCP2CON = 0x04;
    }

    void liressi(void)
    {ADCON0 =0x11;
    ADCON1 =0x0A;
    ADCON2 =0xBE;
    TRISAbits.TRISA5 =1;
    ADCON0bits.GO_DONE =1;
    while (ADCON0bits.GO_DONE ==1);
    VAR = ADRESH;
    VAR<<=8;
    VAR = VAR|ADRESL;

    }

    void capture (void)
    {RCONbits.IPEN= 1;
    IPR1bits.CCP1IP =1;
    PIE1bits.CCP1IE=1;
    INTCON = 0x80;
    TMR0L=0;
    T0CONbits.TMR0ON =1;
    DRAPEAU = 0;
    //PORTD =0x03;
    while (!DRAPEAU);
    //PORTD =0x04;
    N1=N;
    DRAPEAU = 0;
    INTCON = 0x80;
    RCONbits.IPEN= 1;
    IPR2bits.CCP2IP =1;
    PIE2bits.CCP2IE =1;
    T0CONbits.TMR0ON =1;
    while (!DRAPEAU);
    //PORTD =0x05;
    N=(N-N1);
    //PORTD =N;
    }

    void DETECTBIT (void)
    {

    if ((N>59) & (N<95))
    {DATA &=0x7F;}

    else DATA|= 0x80;

    }
    0
  9. scriptiz Messages postés 1494 Statut Membre 425
     
    Tu as oublier d'entourer ton code des balises <code > et </code > pour qu'il soit plus lisible... tu peux modifier ton message.
    0
  10. Utilisateur anonyme
     
    Ok, par contre je ne connais pas ta bibliothèque p18F4550.h. Mais je pense qu'il s'agit très probabement d'une programmation d'automate ou autre...
    0
  11. pompom
     
    en fait ce programme sert a recevoir des données envoyées par un autre prog, ces données sont par exemple l'humidité la pression, la température, la vitesse du vent.. mais ce que j'aurai aimé (si c possible) c connaitre les diverses fonctions du programme, connaitre leur role.
    0
  12. pompom
     
    personne n'est en mesure de me répondre? =(
    0
    1. loupius Messages postés 789 Statut Membre 148
       
      Ce programme n'est pas du 'genre' attendu.
      Tu avais omis de dire qu'il s'agissait d'un programme pour un PIC 18F4550... et là il y a beaucoup moins de 'clients' pour te répondre.
      En fait ton programme en 'C' est beaucoup plus proche de l'assembleur que du 'C' et réussir à comprendre ce que fait précisémment ce programme va bien t'occuper le temps des vacances.
      Si tu ne l'as déjà, charge le datasheet (sur le site de Microchip); prend le d'une main et ton courage de l'autre ;-)
      La compréhension du PIC est passionante.
      Bonnes vacances.
      0