#include #include #include #include "..\..\..\..\lib\7188xb.h" #define EOITYPE_INT0 0x0c #define EOITYPE_INT1 0x0d #define INT_EOI 0xff22 // End-of-interrupt register #define INT_MASK 0xff28 // Interrupt mask register extern void read_enc1(long *); extern void read_enc2(long *); long EncLatch1,EncLatch2; //------------------------------------------ unsigned long OldIntVect0=0,OldIntVect1=0,OldIntVect4=0; void interrupt Int0Isr(void) { read_enc1(&EncLatch1); outpw(INT_EOI,EOITYPE_INT0); } void InstallInt0Isr(void) { //Install interrupt service routine for Z1 OldIntVect0=IntVect[0x0C]; // save old ISR IntVect[0x0C]=(unsigned long)Int0Isr; // install new ISR outpw(INT_MASK, inpw(INT_MASK)&0xffef);// enable INT-0 } void RestoreInt0Isr(void) { if(OldIntVect0){ IntVect[0x0C]=OldIntVect0; // restore OLD ISR outpw(INT_MASK,inpw(INT_MASK)|0x0010);// disable INT-0 } } // ----------------------- void interrupt Int1Isr(void) { read_enc2(&EncLatch2); outpw(INT_EOI,EOITYPE_INT1); } void InstallInt1Isr(void) { //Install interrupt service routine for Z2 OldIntVect1=IntVect[0x0D]; // save old ISR IntVect[0x0D]=(unsigned long)Int1Isr; // install new ISR outpw(INT_MASK, inpw(INT_MASK)&0xffdf);// enable INT-1 } void RestoreInt1Isr(void) { if(OldIntVect1){ IntVect[0x0D]=OldIntVect1; // restore OLD ISR outpw(INT_MASK,inpw(INT_MASK)|0x0020);// disable INT-1 } }