Retardos para pic

Solo disponible en BuenasTareas
  • Páginas : 15 (3543 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de noviembre de 2011
Leer documento completo
Vista previa del texto
2009
GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE]
En este segmento se abordara el tema de retardos por software en ensamblador, se aprenderá la estructura de un retardo, el uso de subrutinas y trucos que facilitaran la utilización de retardos en cualquier programa.

Curso básico de PIC

Retardos por software

Contenido:
1)Retardos por software………………………..3 1.1 Ejemplos……………………………………..5 1.2 Preguntas y Respuestas……………….6 2) Bucles anidados…………………………………..7 2.1 Ejemplos………………………….…………..8 2.2 Ejercicio…………………………….…………9 3) Retardos como subrutinas………….……..10 4) Retardos como supresores de ruido…..11 5) Trucos………………………….…………………….12 6) Practicas para compilar y probar……….13

Curso básico de microcontroladores –robo-sapiens@hotmail.com

Página 2

Curso básico de PIC

Retardos por software

A menudo es necesario que nuestros programas usen demoras o retardos, por ejemplo, si deseamos hacer parpadear un led cada segundo evidentemente necesitaremos usar un retardo de 1s. Los retardos son prácticamente omnipresentes en nuestros programas. Y hay dos formas de hacerlos: -Por software -Por TMR0 Retardo por SoftwareLos retardos por Software consisten en que el pic se quede “enciclado” durante un tiempo. Es decir, es necesario usar uno o varios contadores que deberán ser decrementados, cuando dichos contadores lleguen a 0 habrá concluido el retardo. Ejemplo con flujo-grama:

Inicio de retardo

CONTA_1

n

NO CONTA_1 (CONTA_1 – 1)

CONTA_1 = 0 ?

SI

FIN

Curso básico de microcontroladores –robo-sapiens@hotmail.com

Página 3

Curso básico de PIC

Retardos por software

Observe en el diagrama anterior como a una variable CONTA_1 se le asigna un numero n, posteriormente esta variable se decrementa y se pregunta si ha llegado a 0, si no ha llegado a 0 entonces se vuelve a decrementar, y asi sucesivamente hasta que llegue a 0 en cuyo caso es el FIN del retardo. El programa sequedo “perdiendo el tiempo” encilado dando vueltas n veces. Veamos la traducción a ensamblador, para esto consideremos que n=100.

Inicio_retardo movlw movwf decfsz goto -----d’100’ CONTA_1 CONTA_1,F $-.1 --------

;etiqueta para dar nombre al retardo ;W 100 W CONTA_1 -1 y salta si ya llego a 0

; CONTA_1 ; CONTA_1

;NO ha llegado a 0, entonces vuelve a decrementar ;SI llego a 0 entonces FINdel retardo,sigue el programa

Observe que tenemos una instrucción nueva decfsz, esta instrucción es equivalente a decir: Decrementa el registro f y salta si ha llegado a 0 Es una instrucción muy útil y sumamente utilizada principalmente en procesos que se repiten n numero de veces, tales como lo son los retardos. Muy bien, en este punto entendemos el concepto de un retardo por software, sinembargo surge una duda obvia e importante: ¿Cómo calculo el tiempo que durará un retardo? Muy bien, observemos esta parte del código ensamblador: decfsz goto CONTA_1,F $-.1 ; CONTA_1 CONTA_1 -1 y salta si ya llego a 0

;NO ha llegado a 0, entonces vuelve a decrementar

Nótese que esta parte es la que se ejecuta n veces hasta que CONTA_1 llega a 0, asi que solo debemos saber cuánto tardan enejecutarse estas dos instrucciones, luego lo multiplicamos por n y el resultado es el tiempo que dura el retardo. La instrucción decfsz dura 1us y la instrucción goto dura 2us, asi que entre ambas duran 3uS, asi pues el retardo durará:

Retardo = 3uS x n

si n= 100 entonces

Retardo = 300uS

Nota: La parte del código que se ejecuta repetitivamente hasta que CONTA_1 llega a 0 se llama BUCLE.Curso básico de microcontroladores – robo-sapiens@hotmail.com

Página 4

Curso básico de PIC
EJEMPLO:

Retardos por software

Deseamos hacer un retardo de 100uS, entonces usamos el mismo código: Inicio_retardo movlw movwf decfsz goto -----d’n’ CONTA_1 CONTA_1,F $-.1 -------;etiqueta para dar nombre al retardo ;W n W CONTA_1 -1 y salta si ya llego a 0

; CONTA_1 ; CONTA_1

;NO ha...
tracking img