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
| #include <p18f458.h>
#define led1 PORTAbits.RA0
#define led2 PORTAbits.RA1
#define led3 PORTAbits.RA2
#define led4 PORTAbits.RA3
#define inter1 PORTBbits.RB5
void InterruptHandlerHigh (void);
//---------------------------------interruption------------------------
#pragma code InterruptVectorHigh = 0x08
void
InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //jump to interrupt routine
_endasm
}
//------------------------------------------------------------------------
// High priority interrupt routine
#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{
if (INTCONbits.RBIF)
{
INTCONbits.RBIF = 0; // mise à 0 du flag c'est ici le pb !
led3=1;
led4=1;
led1=0;
led2=0;
}
}
//------------programme_principal------------------------------------------
void main (void)
{
TRISB=0xFF*; // PORTB en entrée
ADCON1=0x07; // PORTA en digital
TRISA=0x00; // PORTDA en sortie
PORTA=0x00;
INTCON=0b10001000; // autorisation des interruptions sur RB4 à RB7
while(1)
{
led3=0;
led4=0;
led1=1;
led2=1;
}
} |
Partager