• Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Tutoriel 02 PIC16F727 (partie 2 )
#1
Tutoriel 02 PIC16F727 (partie  2 )

Code :
// etape 1 configuration des registres :


// PIC16F727 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = 19        // Brown-out Reset Voltage selection bit (Brown-out Reset Voltage (VBOR) set to 1.9 V nominal)
#pragma config PLLEN = ON       // INTOSC PLLEN Enable Bit (INTOSC Frequency is 16MHz (32x))

// CONFIG2
#pragma config VCAPEN = DIS     // Voltage Regulator Capacitor Enable bits (All VCAP pin functions are disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

#define sortie 0
#define entree 1

#define ON 0
#define OFF 1

#define LED_D16 PORTCbits.RC0

#define LED_D11 PORTEbits.RE0
#define LED_D12 PORTEbits.RE1
#define LED_D13 PORTEbits.RE2

#define _XTAL_FREQ 16000000    // T = 1/f = 1 / 16 000 000  = 62.5 ns

// declaration des fonctions

void cmd_led( unsigned int valeur_tempo);

void tempo(unsigned int valeur_ms);


// programme principale

void main (void)
{
   
    // la valeur de la féquence de l'osc
    // fosc = 16 Mhz T = 1/f T = 1/16000000 = 62.5 ns
    OSCCONbits.IRCF1 = 1 ;
    OSCCONbits.IRCF0 = 1 ;
   
    // configuration port E :
   
    // les trois branche E2,E1, et E0 sont de type numérique
    ANSELEbits.ANSE2 = 0 ;
    ANSELEbits.ANSE1 = 0 ;
    ANSELEbits.ANSE0 = 0 ;
   
   //  les trois branche E2,E1, et E0 sont  des sorties
   
    TRISEbits.TRISE2 = 0 ;
    TRISEbits.TRISE1 = 0 ;
    TRISEbits.TRISE0 = 0 ;
   
    // Mettre le port E OFF
   
    LED_D11 = OFF ; // etat haut --> led RD11 off
    LED_D12 = OFF ; // etat haut --> led RD12 off
    LED_D13 = OFF ; // etat haut --> led RD13 off

   
    while (1)
    {
        PORTE = 0b111 ; // toutes les leds RD11,12 et 13 sont off
        __delay_ms(250);
       
        for (int i = 0 ; i < 3 ; i++  ) 
        {
            PORTE = PORTE  <<1 ;  // 0b110
            __delay_ms(250); // attente de 500 ms
        }
              
    }

 
}
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)