Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Eeprom pic 16f887



  1. #1
    yassine2255

    Eeprom pic 16f887

    bonjour ,
    ci dessous le code suivant il permet de stocker deux valeurs à travers 2 boutons puis les lire pour l'utiliser dans la fonction en simulation les deux valeurs sont sauvegardés correctement lorsque j'ai programmé le pic et je fait les tests pratiques , j'ai réalisé que anque je coupe pas l'alimentation tout vas bien , lorsque je la coupe et je la l'allume une autre fois les deux valeurs stockes sont perdus et j'ai besoin de refaire la procedure . une petite aide s'il vous plait et merci
    Code:
    unsigned short current_duty, old_duty, current_duty1, old_duty1;
    float valeur ,adc,maxi,mini,v ;
    void InitMain() {
     ANSEL  = 0x04;              // Configure AN2 pin as analog
      ANSELH = 0;                 // Configure other AN pins as digital I/O
      C1ON_bit = 0;               // Disable comparators
      C2ON_bit = 0;
    
      TRISA  = 0xFF; 
      PORTC = 0;            // PORTA is input
      TRISC  = 0x00;                 // PORTC is output
      PORTB=0 ;
      TRISB = 0b00000011;
    
    
                   // PORTB is input
      TRISD = 0x00;                          // designate PORTC pins as output
      PWM1_Init(10000);                    // Initialize PWM1 module at 5KHz
    
    }
    
    void main() {
      InitMain();
      current_duty  = 248;                 // initial value for current_duty
    
    
      PWM1_Start();                       // start PWM1
    
      PWM1_Set_Duty(current_duty);        // Set current duty for PWM1
    
    
      while (1) {
             mini== EEPROM_Read(0x01);
      maxi== EEPROM_Read(0x00);
       valeur = ADC_Read(2);
         adc=valeur/4 ;
                        
    
      
           
           if (Rb0_bit)   //If the switch is pressed
        {   maxi=adc;
           EEPROM_Write(0x00,maxi);
    
           RB3_bit=1;
           delay_ms(100);
           RB3_bit=0;
           delay_ms(100);
         
            }
         
    
        if (rb1_bit)   //If the switch2 is pressed
        {
             mini=adc;
             EEPROM_Write(0x01,mini);
    
            RB4_bit=1;
             delay_ms(100);
             RB4_bit=0;
             delay_ms(100);
           
            }
            
    
        
          v=((255/(maxi-mini))*(adc-mini));
          portd=v;
                             }
    }

    -----

    Dernière modification par yassine2255 ; 27/05/2015 à 19h11.

Sur le même thème :

Discussions similaires

  1. Pic 16f887
    Par bilelchk dans le forum Électronique
    Réponses: 2
    Dernier message: 15/04/2015, 21h08
  2. Dac r2r, ADC et pic 16F887
    Par yassine2255 dans le forum Électronique
    Réponses: 25
    Dernier message: 20/02/2015, 09h53
  3. Pic 16f887 [timr2]!!
    Par yazeero dans le forum Électronique
    Réponses: 4
    Dernier message: 15/02/2013, 00h06
  4. Réponses: 3
    Dernier message: 22/10/2012, 11h49
  5. Pic 16f887 timer0
    Par Snoopy85 dans le forum Électronique
    Réponses: 30
    Dernier message: 11/03/2009, 07h43