1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| //fichier de declaration des registres internes du microcontroleur
#include <p18f4682.h>
#include <portb.h> /* for the RB0/INT0 interrupt */
//Déclaration des PORTXbits.RXX utilisés
#define LED_ON PORTAbits.RA0
//Configuration Bits
#pragma config OSC = XT //Config du type de l'oscillateur
//Sous programmes
void init_uc(void);
void EnableHighInterrupts (void);
void LED (void);
void initializeLED(void);
//Déclarations des variables
/***************************************************************************
*********************Programme Principal************************************
***************************************************************************/
void main (void)
{
init_uc(); //Appel SP Initialisation du microcontroleu
EnableHighInterrupts ( );
initializeLED();
OpenRB0INT (PORTB_CHANGE_INT_ON & /* enable the RB0/INT0 interrupt */
PORTB_PULLUPS_ON & /* configure the RB0 pin for input */
FALLING_EDGE_INT); /* trigger interrupt upon S3 button
depression */
LED ();
}//Fin Programme Principal
/***************************************************************************
Nom : void init_uc(void)
Role : Configuration et initialisation des Ports E/S
----------------------------------------------------------------------------
Contraintes : Aucune
Donnees en entree : Aucune
Donnees en sortie : Aucune
Donnees glob. modif. : Aucune
*****************************************************************************/
void init_uc(void)
{
TRISA=0x00; // PORTA en sortie
TRISB=0x0F; // RB7-RB4 en sortie RB3-RB0 en entrée
TRISC=0x1F; // RC7-RC5 en sortie RC4-RC0 en entrée
TRISD=0x4F; // PORTD en sortie sauf RD7 RD5 RD4
TRISE=0x00; // PORTE en sortie
PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
PORTE=0x00;
ADCON1=0b00001111; //Configuration du portA en numérique
}
void EnableHighInterrupts (void)
{
RCONbits.IPEN = 1; /* enable interrupt priority levels */
INTCONbits.GIEH = 1; /* enable all high priority interrupts */
}
void LED (void)
{
LED_ON = 1; /* turn the buzzer on */
while (1); /* wait for the S3 button to be pressed */
}
void initializeLED(void)
{
if(LED_ON==0)LED_ON=1;
if(LED_ON==1)LED_ON=0;
INTCONbits.INT0IF = 0; /* clear flag to avoid another interrupt */
} |
Partager