//////////////////////////////////////////////////////////// // Date: 28 May 2004 // Author(s): Tang Tung Yan // Company: Softlogic Electronic (www.slge.com) // Revision: B // C-Compiler: Dynamic C // // Purpose: SLGE include files for Dynamic C //////////////////////////////////////////////////////////// /*** BeginHeader */ const char acPower[8]={1,2,4,8,16,32,64,128}; const char acRevPower[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; #define LF 0x0A #define CR 0x0D const char acCR[]={CR,0}; #define outL_porta(cBit) BitWrPortI(PADR, &PADRShadow ,0,cBit) #define outH_porta(cBit) BitWrPortI(PADR, &PADRShadow ,1,cBit) #define outL_portb(cBit) BitWrPortI(PBDR, &PBDRShadow ,0,cBit) #define outH_portb(cBit) BitWrPortI(PBDR, &PBDRShadow ,1,cBit) #define outL_portc(cBit) BitWrPortI(PCDR, &PCDRShadow ,0,cBit) #define outH_portc(cBit) BitWrPortI(PCDR, &PCDRShadow ,1,cBit) #define outL_portd(cBit) BitWrPortI(PDDR, &PDDRShadow ,0,cBit) #define outH_portd(cBit) BitWrPortI(PDDR, &PDDRShadow ,1,cBit) #define outL_porte(cBit) BitWrPortI(PEDR, &PEDRShadow ,0,cBit) #define outH_porte(cBit) BitWrPortI(PEDR, &PEDRShadow ,1,cBit) #define outL_portf(cBit) BitWrPortI(PFDR, &PFDRShadow ,0,cBit) #define outH_portf(cBit) BitWrPortI(PFDR, &PFDRShadow ,1,cBit) #define outL_portg(cBit) BitWrPortI(PGDR, &PGDRShadow ,0,cBit) #define outH_portg(cBit) BitWrPortI(PGDR, &PGDRShadow ,1,cBit) #define clear_bit_sh(cPort,cBit,aShadow) BitWrPortI(cPort ,aShadow ,0,cBit) #define set_bit_sh(cPort,cBit,aShadow) BitWrPortI(cPort ,aShadow ,1,cBit) ////////////////////////////////////////////////////////////////////////////////////////// //not portable since do not have shadow register.. still retain for compatibility //with previous code ////////////////////////////////////////////////////////////////////////////////////////// #define clear_bit(cPort,cBit) WrPortI (cPort, NULL, RdPortI(cPort) & acRevPower[cBit]) #define set_bit(cPort,cBit) WrPortI (cPort, NULL, RdPortI(cPort) | acPower[cBit]) ////////////////////////////////////////////////////////////////////////////////////////// /*** EndHeader */ //============================================================================== /*** BeginHeader delay_s*/ void delay_s(unsigned int nDuration); /*** EndHeader */ nodebug void delay_s(unsigned int nDuration) { //SEC_TIMER is updated 1 s by the periodic_interrupt unsigned long ulEnd; ulEnd=SEC_TIMER + nDuration; while (SEC_TIMER < ulEnd); } //============================================================================== /*** BeginHeader delay_ms*/ void delay_ms(unsigned int nDuration); /*** EndHeader */ nodebug void delay_ms(unsigned int nDuration) { auto unsigned long lDoneTime; //MS_TIMER is updated 1 ms by the periodic_interrupt lDoneTime = MS_TIMER + nDuration; while( (long) (MS_TIMER - lDoneTime) < 0 ); } //============================================================================== /*** BeginHeader delay_tick*/ void delay_tick(unsigned int nDuration); /*** EndHeader */ nodebug void delay_tick(unsigned int nDuration) { //TICK_TIMER is updated 2048 times per second by the periodic_interrupt unsigned long ulEnd; ulEnd=TICK_TIMER + nDuration; while (TICK_TIMER < ulEnd); } //============================================================================== /*** BeginHeader delay_count*/ void delay_count(unsigned int nCount); /*** EndHeader */ nodebug void delay_count(unsigned int nCount) { char r, i; for (r=0;r<=nCount;r++) i++; }