Programació en C del PIC 18F45K20

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Temps de retard

En molts programes ens cal posar un temps de retard, ja sigui per esperar algun esdeveniment o per fer una velocitat de canvi compatible amb la visualització de l'usuari.

La manera més senzilla de fer un retard és amb la funció _delay( ) que fa un retard del nombre de cicles d'instrucció indicat entre parèntesi. La configuració per defecte del microcontrolador és amb un rellotge de 1 MHz de manera que el cicle d'instrucció va a 250 kHz, per tant un cicle és 4 μs. La funció està implementada al fitxer xc.h; o sigui que cal carregar-lo. La definició de la funció és:

	void _delay(unsigned long cycles);

és a dir que la funció no retorna cap resultat. Un exemple d'ús:

...
#include <xc.h>					// Carrega el fitxer de funcions
void main (void)				// Inici del programa principal
{
...
		_delay(50000);			// Retard de 50000 cicles (aprox. 0,2 s)
...
}						// Fi del programa

Si volem més precisió, tenim dues funcions més: __delay_us( ) i __delay_ms( ), que fan un retard del temps especificat, la primera en μs i la segona en ms. Per tal que el compilador pugui implementar-ho, necessita saber la freqüència del rellotge del processador que li indicarem amb una línia addicional a la part de configuració, per exemple:

...
#include <xc.h>					// Carrega el fitxer de funcions
#define _XTAL_FREQ  1000000			// La freqüència del rellotge és 1 MHz
void main (void)				// Inici del programa principal
{
...
        __delay_ms(500);	   	 	// Retard de mig segon
...
}						// Fi del programa

També podeu consultar el manual del MPLAB XC8 al web de Microchip.

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.