#include "GPIO.h"


void Int_Init(unsigned addr);
void __irq Interrupt(void);
void Led_Init(void);

_main()
{
	Led_Init();
	Int_Init((unsigned)Interrupt);
	while(1);	
}

void __irq Interrupt(void) 
{
	if(rEINT0PEND&0x01)
	
		rUTXH0='1';
	else if(rEINT0PEND&0x02)
		rUTXH0='2';
	else if(rEINT0PEND&0x04)
		rUTXH0='3';
	else if(rEINT0PEND&0x08)
		rUTXH0='4';
		else if(rEINT0PEND&0x10)
		rUTXH0='5';
	rEINT0PEND=0xffffffff;
	
	rGPKDAT=~rGPKDAT;
	
	rVIC0ADDRESS =0x0;
		rVIC1ADDRESS =0x0;
}


void Int_Init(unsigned addr)
{
	rGPNCON|=0x00000AAA;
	
	
 	rGPNPUD&=0xfffff000;

 rGPLCON1 = (rGPLCON1 & ~(0xff<<12)) | (0x33<<12);  //K7,K8
 	rGPLPUD=0x00000000;
 
 	rEINT0CON0=rEINT0CON0&0xfffff000|0x222;
 	 rEINT0CON1 =(rEINT0CON1 & ~(0xff<<4)) |(0x22<<4);
 		rEINT0FLTCON0=0xffffff;
 			rEINT0FLTCON1=0xffffff;
 				rEINT0FLTCON2=0xffffff;
 					rEINT0FLTCON3=0xffffff;
 rEINT0MASK &= ~0x18003f;




 	rVIC0INTSELECT&=~0x00003f;
 rVIC1INTSELECT&=~0x3;
 	
 	rVIC0INTENABLE|=0x00000003f;
 	 rVIC1INTENABLE |=1;
 	  rVIC1INTENABLE |=2;
 	
 
	rVIC0VECTADDR0 =addr;
	rVIC0VECTADDR1 =addr;
	rVIC1VECTADDR0 =addr;
	rVIC1VECTADDR1 =addr;
}


void Led_Init()
{
rGPKCON0=0x11111111;	
	rGPKDAT=0xffff;		
	rGPKPUD=0x00;	

}