unsigned long int EMCardNo;
unsigned char previous;
void interrupt isr(void)
{
unsigned char changed,temp,newlow,newhigh;
CLRWDT(); //Clear watchdog timer
//----- PORTB Interrupt -----//
if (RBIE && RBIF) //Mask off other bits
{
temp=PORTB; //Read PORTB
RBIF=0; //clear interrupt
changed=temp^previous; //find only pins that have changed
newhigh=changed&previous; //and have gone from low to high
newlow=changed&(~previous); //find pins that are new lows
previous=temp;
if(newlow & 0x20) //D0 went low
{
EMCardNo=0;
EMCardNo=EMCardNo<<1;
EMCardNoCounter++;
}
if(newlow & 0x10) //D1 went low
{
EMCardNo=1;
EMCardNo=EMCardNo<<1;
EMCardNoCounter++;
}
}
}