#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;
}