Implementing Short Delays
/* Program SHORT_TM.C
**
** When interfacing with the Dallas 1-W family, delays of 60 us and
** 500 us are required. Clearly, the TurboC delay function cannot be
** used.
**
** The following routine uses a delay of the form;
**
** for (n=100; n>0; n--) ;
**
** Note that P2.0 is toggled with a delay of the form shown. The period
** was measured as 1.51 kHz or 662 usecs. As there are two such delays,
** 331 usecs or 3 us per. The conclusion is that a rule of thumb is that
** to obtain a short delay of nominally 60 us, a delay of the form;
**
** for (n=20; n>0; n--) ;
**
** may be used.
**
** copyright, Peter H. Anderson, Baltimore, MD, Sept, '00
*/
#include <stdio.h>
#include <dos.h>
#define SEG 0xf000
#define P2_OFFSET 0xff10
#define P2 0
#define PM2 1
#define PMC2 2
void main(void)
{
int n;
unsigned char far *p2;
p2 = MK_FP(SEG, P2_OFFSET);
*(p2+PMC2) = 0x00; /* not special purpose */
*(p2+PM2) = 0xfe; /* least sig bit is an output */
while(1)
{
*p2 = 0x01; /* flash the LED on least sig bit of p2 */
for (n=100; n>0; n--) ;
*p2 = 0x00;
for (n=100; n>0; n--) ;
}
}