Programació en mpasm del PIC 16F690

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

Bucles de retard

La configuració per defecte del microcontrolador és amb un rellotge de 4 MHz. Cada instrucció normal requereix quatre cicles de rellotge i, per tant, cada instrucció normal s'executa en un microsegon (us). Quan la instrucció que s'executa no és la següent (perquè hi ha un salt en el programa) es perden quatre cicles de rellotge i, per tant, triga 2 μs en executar-se. En aquest apartat estem suposant la configuració per defecte.

Per a retards de pocs microsegons podem fer servir la instrucció nop que introdueix un retard d'un microsegon.

Bucle de 0,77 ms

La funció següent crea un bucle de retard de 0,77 ms. No importa quin valor tingui l'acumulador. L'acumulador no es modifica.

	Retard1			; Variable de retard	
					;
					; Funció de retard de 0,8 ms
					;
RetC
	decfsz		Retard1,f	
	goto		RetC
	return

Bucle de 0,2 s

La funció següent crea un bucle de retard de 0,2 s. No importa quin valor tingui l'acumulador. L'acumulador no es modifica.

	Retard1			; Variables de retard	
	Retard2
					;
					; Funció de retard de 0,2 s
					;
RetM
	decfsz		Retard1,f		
	goto		RetM		
	decfsz		Retard2,f	
	goto		RetM
	return

Bucle variable de microsegons

La funció següent crea un bucle de retard variable. L'acumulador conté el nombre de cops que es repeteix el bucle i cada bucle dura uns 3 μs. Per exemple, amb un valor d'entrada de 10 tindrem un bucle de 30 μs. L'acumulador no es modifica.

	Retard1			; Variable de retard	
					;
					; Funció de retard
					;
Retus
	movwf		Retard1
Bucleus	
	decfsz		Retard1,f
	goto		Bucleus
	return

Bucle variable de milisegons

La funció següent crea un bucle de retard variable. L'acumulador conté el nombre de cops que es repeteix el bucle i cada bucle dura 771 μs. Per exemple, amb un valor d'entrada de 13 tindrem un bucle de 10 ms. L'acumulador no es modifica.

	Retard1			; Variables de retard	
	Retard2
					;
					; Funció de retard
					;
Retms
	movwf		Retard2
Buclems	
	decfsz		Retard1,f
	goto		Buclems
	decfsz		Retard2,f
	goto		Buclems
	return

Bucle variable de segons

La funció següent crea un bucle de retard variable. L'acumulador conté el nombre de cops que es repeteix el bucle i cada bucle dura 0,2 s. Per exemple, amb un valor d'entrada de 10 tindrem un bucle de 2 s. L'acumulador no es modifica.

	Retard1			; Variables de retard	
	Retard2
	Retard3
					;
					; Funció de retard de 0,2 W s
					;
Rets
	movwf		Retard3
Bucles
	decfsz		Retard1,f		
	goto		Bucles		
	decfsz		Retard2,f		
	goto		Bucles		
	decfsz		Retard3,f	
	goto		Bucles
	return

 

 

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