52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/*
|
|
* 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 4MHZ /* Crystal frequency in MHz */
|
|
#endif
|
|
|
|
#define MHZ *1000 /* 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);
|
|
|