Bonjour, je veux commender deux moteurs et j'ai fais un programme de test pour voir si ça peut marcher mais ce n'ai pas le cas et je ne sais pas pourquoi.J'ai besoin de votre aide.Merci. Voici le code

#include<p18f2620.h>
// Utilise le quartz interne
#pragma config OSC = INTIO67
// Pas de wath dog
#pragma config WDT = OFF
// Pas de low voltage programming
#pragma config LVP = OFF
// Power-up timer activé
#pragma config PWRT = ON

/****************************** **********************/
/* Initialisation des variables */
/****************************** **********************/

#define INIT_PORTA TRISA=0b11111111 //entrées
#define INIT_PORTB TRISB=0b00000000 //sorties
#define INIT_PORTC TRISC=0b10000000 //PortC Config
#define M_AVANT_M1 LATBbits.LATB0 //Marche avant moteur 1
#define M_ARRIERE_M1 LATBbits.LATB1 //Marche arriere moteur 1
#define sens1_M1 LATAbits.LATA2 //Marche avant moteur 1
#define sens2_M1 LATAbits.LATA3 //Marche arriere moteur 1

#define M_AVANT_M2 LATBbits.LATB2 //Marche avant moteur 2
#define M_ARRIERE_M2 LATBbits.LATB3 //Marche arriere moteur 2
#define sens1_M2 LATAbits.LATA4 //Marche avant moteur 2
#define sens2_M2 LATAbits.LATA5 //Marche arriere moteur 2

/****************************** **********************/
/* Declaration des variables globales */
/****************************** **********************/

//int Periode_PWM; //Periode_PWM=(PR2+1)*4*Tosc*TMR 2
//int Tosc; //frequence de 32Mhz donc Tosc=31.25ms


unsigned int avant,arriere;

/****************************** **********************/
/* Declaration des prototypes des fonctions */
/****************************** **********************/

void init_pic(void);
void init_PWM(void);
void signal_pwm(void);
void marche_avant_M1(void);
void marche_arriere_M1(void);
void frein_moteur_M1(void);
void marche_avant_M2(void);
void marche_arriere_M2(void);
void frein_moteur_M2(void);

/****************************** **********************/

void init_pic(void)
{
// Internal clock set to 8Mhz
OSCCONbits.IRCF2 = 1;
OSCCONbits.IRCF1 = 1;
OSCCONbits.IRCF0 = 1;

// Active la PLL pour passer a 32Mhz
OSCTUNEbits.PLLEN = 1;

INIT_PORTA;
INIT_PORTB;
//INIT_PORTC ;
}

/****************************** *********************/

void init_PWM(void)
{
PR2=50; //
CCPR1L=0; //Duty cycle =0
CCPR2L=0; //Duty cycle =0
CCP1CON= 0b00001100; //PWM1 mode Duty cycle =0
CCP2CON= 0b00001100; //PWM2 mode Duty cycle =0
T2CONbits.TMR2ON=1; // Timer2 On
T2CONbits.T2CKPS0=0; //prescaler bit de poids faible
T2CONbits.T2CKPS1=0; //prescaler bit de poids fort
// on aura donc un prescaler égale à 1
//dans TMR2 on aura 1
}

/****************************** *********************/

void signal_pwm(void)
{
CCPR1L=50; // rapport cyclique de 50
CCPR2L=20; // rapport cyclique de 20
}

/****************************** **********************/

void marche_avant_M1(void)
{
M_ARRIERE_M1=0;
M_AVANT_M1=1;
}

/****************************** *************************/

void marche_arriere_M1(void)
{
M_AVANT_M1=0;
M_ARRIERE_M1=1;
}

/****************************** *************************/

void frein_moteur_M1(void)
{
CCPR1L=0; // rapport cyclique de 0
sens1_M1=0;
sens2_M1=1;
M_ARRIERE_M1=0;
M_AVANT_M1=0;
}

/****************************** *************************/

void marche_avant_M2(void)
{
M_ARRIERE_M2=0;
M_AVANT_M2=1;
}

/****************************** *************************/

void marche_arriere_M2(void)
{
M_AVANT_M2=0;
M_ARRIERE_M2=1;
}

/****************************** *************************/

void frein_moteur_M2(void)
{
CCPR2L=0; // rapport cyclique de 0
sens1_M2=0;
sens2_M2=1;
M_ARRIERE_M2=0;
M_AVANT_M2=0;
}

/****************************** *************************/

/****************************** *************************/
/* Fonction principale : main() */
/****************************** *************************/

void main(void)
{
init_pic();
init_PWM();
frein_moteur_M1();
frein_moteur_M2();
signal_pwm(); // sotie du siganl PWM sur CCP1 et CCP2 pattes 13 et 12 du pic

while(1)
{
//Moteur1
if(sens1_M1==sens2_M1)
{
if(sens1_M1==1)
{
marche_avant_M1();
}
else
{
marche_arriere_M1();
}
}
else
{
frein_moteur_M1();
}

//Moteur2

if(sens1_M2==sens2_M2)
{
if(sens1_M2==1)
{
marche_avant_M2();
}
else
{
marche_arriere_M2();
}
}
else
{
frein_moteur_M2();
}
}
} //end main