/*
   *  Delay functions for HI-TECH C on the PIC
   *
   *  Functions available:
   *      DelayUs(x)  Delay specified number of microseconds
   *      DelayMs(x)  Delay specified number of milliseconds
   *
   *  Note that there are range limits: x must not exceed 255 - for xtal
   *  frequencies > 12MHz the range for DelayUs is even smaller.
   *  To use DelayUs it is only necessary to include this file; to use
   *  DelayMs you must include delay.c in your project.
   *
   */

  /*  Set the crystal frequency in the CPP predefined symbols list in
      HPDPIC, or on the PICC commmand line, e.g.
      picc -DXTAL_FREQ=4MHZ
      
      or
      picc -DXTAL_FREQ=100KHZ
      
      Note that this is the crystal frequency, the CPU clock is
      divided by 4.

   *  MAKE SURE this code is compiled with full optimization!!!
      
   */

  #ifndef XTAL_FREQ
  #define XTAL_FREQ   6MHZ        /* Crystal frequency in MHz */
  #endif

  #define MHZ *1000L          /* number of kHz in a MHz */
  #define KHZ *1          /* number of kHz in a kHz */

  #if XTAL_FREQ >= 12MHZ

  #define DelayUs(x)  { unsigned char _dcnt; \
                _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
                while(--_dcnt != 0) \
                    continue; }
  #else

  #define DelayUs(x)  { unsigned char _dcnt; \
                _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
                while(--_dcnt != 0) \
                    continue; }
  #endif

  extern void DelayMs(unsigned char);