Bonjour,
voila, je viens de tester un petit programme avec un PIC 18F. Ce programme utilise le timer0. Voici mon programme qui fonctionne parfaitement, il fait clignoter ma diode sur RA2:
Le Prescaler est réglé à 1:256 , mais je n'arrive pas a trouver la relation entre cette valeur et la valeur de mon quartz, de meme que je ne sais pas comment calculer le temps d'un cycle...?Code:#include <p18f4525.h> #include <delays.h> #include <adc.h> #include <stdlib.h> //Déclaration des PORTXbits.RXX utilisés #define BUZZER PORTBbits.RB3 #define LEDA5 PORTAbits.RA5 #define LEDA4 PORTAbits.RA4 #define LEDA3 PORTAbits.RA3 #define LEDA2 PORTAbits.RA2 //Configuration Bits #pragma config OSC = HS //OSCILLATOR #pragma const config FCMENB = OFF //Fail Safe Clock Monitor Disabled #pragma const config IESOB = OFF //Internal External Osc. Switch Disabled #pragma config PWRT = OFF //Power Up Timer Disabled #pragma const config BOR = BOHW //Brown Out Reset Enabled in HW, SBOREN disabled #pragma const config BORV = 20 //Brown Out Voltage : 2.0V #pragma config WDT = OFF //WATCHDOG HW Disabled - SW Controlled #pragma config DEBUG = OFF //DEBUG Disabled #pragma config LVP = OFF //Low Voltage Programming Disabled //Sous programmes void init_uc(void); void config_timer(void); //Déclarations des variables #pragma interrupt LED void LED(void) { if (INTCONbits.TMR0IF) { INTCONbits.TMR0IF = 0; //efface le drapeau d'IT LEDA2=!LEDA2; } } #pragma code vecteur_d_IT=0x08 void TIMER(void) { _asm goto LED _endasm } #pragma code /*************************************************************************** *********************Programme Principal************************************ ***************************************************************************/ void main (void) { init_uc(); //Appel SP Initialisation du microcontroleur while(1) { config_timer(); }//Fin While(1) }//Fin Programme Principal /*************************************************************************** Nom : void init_uc(void) Role : Configuration et initialisation des Ports E/S *****************************************************************************/ void init_uc(void) { ADCON1=0x0F; // Configuration en numérique TRISA=0x00; // PORTA en sortie TRISB=0xF7; // PORTB en entrée --sauf RB3 en sortie TRISC=0x00; // PORTC en sortie TRISD=0x00; // PORTD en sortie TRISE=0x00; // PORTE en sortie PORTA=0x20; // PORTB=0x00; /// PORTC=0x00; ////Initialisation à 0 des Ports PORTD=0x00; /// PORTE=0x00; // } /*************************************************************************** Nom : void config_int(void); Role : *****************************************************************************/ void config_timer(void) { T0CON=0x87; INTCONbits.TMR0IE=1; INTCONbits.GIEH = 1; }
J'aurais besoin de votre aide.
Encore merci
-----