_usec_delay(cexpr);
_usec_delay(cexpr) is useful when an exact delay is required. It generates code that is guaranteed to delay a given number of micro-seconds. This is done using loops with one, two, or three variables, and no-op instructions as necessary.
For _usec_delay to work correctly, interrupts must be disabled, and `PRAGMA TARGET CLOCK' must be issued to set the system clock speed.
Note that _usec_delay() will generate delays up to 4,294.967295 seconds (or ~71.5 minutes), this isn't really the best use of space. On a 20MHz 16f877 this required 1043 instructions.
This is typically used for delays of a few 10s or 100s of uSec.
Parent topic: Built-in Functions