Retardos para pic
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...
Regístrate para leer el documento completo.