Besoin d'aide pour comprendre un programme en
pompom
-
loupius Messages postés 789 Statut Membre -
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
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
-
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.
-
Bonjour, ne donne pas ton adresse mail, si tu veux éviter les spams =)
Postes le ici et entre balises <code> /code>. -
-
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; } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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... -
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?
-
-
#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;
} -
Tu as oublier d'entourer ton code des balises <code > et </code > pour qu'il soit plus lisible... tu peux modifier ton message.
-
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...
-
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.
-
-
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.
-