A função abaixo demonstra uma maneira muito simples de obter atrasos de microsegundos com um microcontrolador da família PIC16 com cristal de 20Mhz. Devido à base de tempo muito pequena, utilizou-se apenas um loop que decrementa o variável delay invés de utilizar um timer. Para atrasos de microsegundos, veja a função delay_ms que também utiliza a variável delay e o TMR1.
Variáveis utilizadas:
;********************************************************* ;<FUNÇÃO> ; delay_us ;{ ;<HARDWARE> ; cristal externo de 20Mhz ; <ARGUMENTOS> ; delay = quantidade de microsegundos a serem atrasados ;********************************************************* delay_us: ;clock = 20Mhz banksel delay decfsz delay,f goto delay_us return ; delay_us ;} ;*********************************************************