Je ne comprends pas ce programme

Résolu/Fermé
JigeFilms Messages postés 159 Date d'inscription dimanche 3 août 2008 Statut Membre Dernière intervention 22 juillet 2011 - 21 avril 2011 à 14:46
 le père - 21 avril 2011 à 15:19
Bonjour,
Je dois dire ce que ce programme fait mais je ne le comprend pas si vous pouvez m'aider S'il vous plai , c'est Urgent:


#include<p18f4520.h>
#include<timers.h>

void initialisations(void)
{

OSCCONbits.SCS0=0;
OSCCONbits.SCS1=1; //oscillateur interne
OSCCONbits.IRCF0=1; //sélection de la fréquence
OSCCONbits.IRCF1=1; //de l'horloge interne
OSCCONbits.IRCF2=1; //à 8MHz
//OSCTUNEbits.PLLEN=1; //4x8MHz=32MHz
while(OSCCONbits.IOFS==0);


// lignes bumpers RD0(droit), RD1(gauche)
// lignes wheel drop RD2(gauche), RD3(droit), RD4(avant)
// lignes Boutons Poussoirs BPP1/RD5(PLAY), BP2/RD6(ADVANCE) et RB5(/BP)
TRISD=0xFF;

//diodes LED1 RE0
// LED2 RE1
// LED2 RE2
TRISE=0;

//OSC RB0/INT0
//défaut moteur droit RB1/INT1
//défaut moteur gauche RB2/INT2
// /BP
TRISB=0xFF;

//ligne sens moteur gauche RA6
//ligne sens moteur droit RA7
TRISAbits.TRISA6=0;
TRISAbits.TRISA7=0;
//ligne PWM moteur gauche
//ligne PWM moteur droit
TRISCbits.TRISC1=0;
TRISCbits.TRISC2=0;
//initialisation PWM pour une fréquence de 1000Hz avec rapport cyclique nul
PR2=132; //pour fosc interne à 8MHz avec facteur prédivision pour le Timer2 à 1 => fpwm=15000Hz
CCPR1L=0; //rapport cyclique 0%
CCPR2L=0; //rapport cyclique 0%
CCP1CON=0x0C; //P1M1 et P1M0 à 0 / DC1B1 et DC1B0 à 0 / CCP1M3=1 et CCP1M2=1
CCP2CON=0x0C; //DC2B1 et DC2B0 à 0 / CCP2M3=1 et CCP2M2=1
T2CONbits.T2CKPS0=0;
T2CONbits.T2CKPS1=0; //prescaler timer2 à 1
T2CONbits.TMR2ON=1;

//convertisseur AN CLIFF et WALL ADCON1: -- -- VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0
// ADCON2: ADFM -- ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0
ADCON1=0b00001010; //VREF-=Vss VREF+=Vdd AN0 à AN4 entrées analogiques
ADCON2=0b10010010; //justification droite 4TAD 8Tosc
ADCON0bits.ADON=1;
TRISAbits.TRISA0=1; //CLIFF1 RA0/AN0
TRISAbits.TRISA1=1; //CLIFF2 RA1/AN1
TRISAbits.TRISA2=1; //CLIFF3 RA2/AN2
TRISAbits.TRISA3=1; //CLIFF4 RA3/AN3
TRISAbits.TRISA5=1; //WALL RA5/AN4


//I2C pour fscl=100KHz avec fosc=8MHz
//data format : Start condition
// envoi adresse 01001010 adresse ave R/W à 0 et A0 à 1 (par câblage)
// envoi donnée xxD5D4D3D2D1D0 ou 0
// Stop condition
SSPADD=19;
SSPCON1=0b00101000;
SSPSTATbits.SMP=1;

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 avril 2011 à 14:57
Cette fonction initialise les variables globales définies dans le fichier p18f4520.h
0
Bonjour

En fait de variables globales, ce sont principalement des registres de fonctions spéciales et d'entrées/sorties.
Il est bien commenté ce programme. Si tu veux plus de précisions, télécharge la doc du 18F4520 sur le site de Microchip, tu auras le détail de chaque bit.
0