Bonjour,

Je vous explique mon problème:
Je veux faire tourner un moteur sur une sortie MLI du 16F877, pour cela j'ai un potar de 5kohms relié à une entrée analogique. Mon potar au +5v et à la masse.
Tous fonctionne bien MAIS je voudrais que quant mon potar est au milieu mon moteur ne tourne pas (signal MLI à 0) car en ce moment il est à 50%(tout à fait normal !) et que plus je monte mon potar plus le signal MLI augmente (marche avant du moteur).

Voici pour l'instant le code que j'obtiens:

Code:
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=6000000)

#byte porta   = 0x05
#byte portb   = 0x06
#byte portc   = 0x07
#byte portd   = 0x08
#byte porte   = 0x09
#byte PR2     = 0x92
#byte CCPR1L  = 0x15
#byte CCPR2L  = 0x1B
#byte CCP1CON = 0x17
#byte T2CON   = 0x12
#byte TRISA = 0x85
#byte TRISC = 0x87
#byte TRISB = 0x86
#byte TRISD = 0x88
#byte TRISE = 0x89

unsigned int8 mesure=0x00;

// declaration des fonctions //
void init(void);
unsigned char conversion(unsigned char voie);

/*******************************************************************/
void init(void)
{
TRISA=0xF1;     //broches RA1 RA2 RA3 en sortie
TRISB=0x00;     //broches toutes en sortie
TRISC=0b11111011;//broche RC2 en sortie
PORTA=0b011100;    // initialisation des ports d'entrées et sorties //
PORTB=0x00;
PORTC=0x00;
PR2= 0xFF;  //frequence de la MLI : 250Hz
T2CON=0x07; //validation timer 2 pour MLI
CCP1CON=0x3F;//validation mode MLI
}

void main(void)
{ init();
   delay_ms(500);
  setup_adc_ports(0x8E);  //configuration des entrées analogiques
  setup_adc(ADC_CLOCK_DIV_8);//choix de l'horloge du CAN

while(1)  //le programme se répète perpétuellement
  {  set_adc_channel(0); //choix entrée AN0 pour le CAN
     delay_us(10);       //délai 10microsecondes obligatoire
     mesure=read_adc();  //lecture résultat conversion
     CCPR1L=mesure;      //envoi de la valeur donnée par le CAN
                         //directement sur la sortie MLI
  }
}

Merci pour vos réponses