#include "LPC214x.H" // LPC2148 registres
#define LED (1<<2) // Led en P0.2 actiu a '0'
#define PULSADOR (1<<4) // pulsador P0.4 polsat a '0'
#define MaskPULSADOR (1<<4)
int volatile intrp_count=0;
long timeval;
/***********************************************/
void eint1_srv(void) __irq
{
++intrp_count;
EXTINT=2; // Borra el flag VICVectAddr=0;
}
/***********************************************/
void init_eint1(void)
{
EXTMODE=2; // EINT1 is edge sensitive.
EXTPOLAR=2; // rising-edge sensitive (FLANG DE PUJADA)
PINSEL0|= 2 << 28; // CONFIGURA P0.14= EINT1 (BIT 29:28)
VICVectAddr0= (unsigned long) eint1_srv;
VICVectCntl0 = 0x20 | 15;
VICIntEnable = 1 << 15;
}
/***********************************************/
int main(void)
{
unsigned char i;
long j;
PINSEL0&=0xFFFFFCCF; // Configura GPIO (P0.2 = bit 5:4 i P0.4 = bit 9:8)
IODIR0|=LED; // PIN0.2 LED
IOPIN0|=LED; // Apaga el LED en 0.2
IODIR0&=0xFFFFFFEF; // PIN0.4 la entrada del pulsador
init_eint1();
for (i=0;i<20;i++) // parpadel LED
{
for (j = 0; j < 700000; j++ );
IOPIN0^=LED;
}
while(1)
{
// if (IOPIN0 & MaskPULSADOR) IOSET0=LED;
// else IOCLR0=LED;
if (intrp_count) IOSET0=LED;
else IOCLR0=LED;
}
}