miércoles, 3 de febrero de 2016

Microprocesadores

Lea cuidadosamente el siguiente documento y realice lo que se le pide:
Comencemos con la instrucción “Button”, la cual es utilizada para la eliminación de rebotes en pulsadores o para efectuar repeticiones en un botón, como sucede en el caso de los teclados de las computadoras, en las cuales si dejamos presionado un botón o tecla, la misma se repite indefinidamente a una frecuencia específica, la cual puede ser variada fácilmente como lo demostraremos a continuación.
Antes de empezar, veamos la sintaxis de la instrucción Button:

Button
Sintaxis: Button pin, estado, retardo, rango, variable, acción, etiqueta
La instrucción “Button” elimina los rebotes de un “pulsador” o “switch”, y genera auto-repetición.

Pin: especifica el pin del puerto en el cual será conectado el pulsador.

Estado: indica cual es estado lógico que debe ocurrir cuando el pulsador es presionado (0 o 1). Si es 0, el pulsador deberá ser activo-bajo y si es 1, el pulsador deberá ser activo-alto (Ver figura 1).
Figura 1

Retardo: es una variable o constante (0 – 255) que especifica cuantos ciclos deben pasar antes de efectuar la auto-repetición. Este campo tiene dos funciones especiales: si el campo retardo es igual 0, no permite anti-rebote y no permite auto-repetición. Si el campo retardo es igual a 255, permite el antirebote pero no permite la auto-repetición.
Rango: es una variable o constante (0 – 255) que especifica el número de ciclos entre auto-repeticiones.
Variable: es una variable auxiliar tipo Byte, definida también al inicio del programa para uso exclusivo de la instrucción Button, por lo cual no deberá ser utilizada con otro fin en el programa. Siempre debe ser inicializada antes del comando Button.
Acción: indica el estado del botón cuando éste no es presionado.
Etiqueta: la instrucción realiza un salto a la etiqueta definida en este campo cuando el pulsador no ha sido presionado.
Adicionalmente utilizaremos la instrucción “Pulsout” en el ejemplo, para generar pulsos de tiempo definido.

PULSout
Sintaxis: PULSout pin, nivel, variable
La instrucción “PULSout”, genera pulsos con una duración definida en decenas de microsegundos. (Tiene una resolución de 10 microsegundos para un oscilador de 4 Mhz, y una resolución de 2 microsegundos para un oscilador de 20 Mhz).
Para este trabajose armarán tres ejemplos basados en el circuito de la figura 2.
Figura 2

Se puede observar en el diagrama esquemático, que mientras el pulsador permanece abierto, hay un cero lógico en el pin RB0, el cual debemos configurar como entrada en el programa. Cuando el pulsador sea presionado, el estado lógico en el pin RB0 será un uno lógico.
La salida a través de la cual se van a generar los pulsos será el pin RB1, en el cual hemos conectado un osciloscopio para poder ver el resultado de las señales generadas a partir de las especificaciones dadas en cada ejemplo a continuación.

Para el primer ejemplo, se pide generar un pulso de 1.5 milisegundos una vez presionado el botón. Luego, pasados 20 milisegundos con el botón presionado, debe empezar una auto-repetición de este pulso cada 10 milisegundos.

Veamos el siguiente programa:
Define Osc 4
TRISB = %11111101 ' Configuración del puerto B
A Var Byte ' declaración de la variable A para la instrucción Button.
A = 0 ' inicializa la variable A
PORTB.1 = 0 ' Inicializa la Salida RB0
Inicio:
Button PORTB.0,1,2,1,A,0,Tiempo
PulsOut PORTB.1,150 ' Genera un pulso de 1.5ms o 150 decenas de microsegundos.
Tiempo:
Pause 10 ' Pausa de 10 mili segundos

GoTo Inicio ' Salta a inicio
End
Ahora analicemos la secuencia del programa:
· Mientras el pulsador permanece abierto, la instrucción Button salta a la etiqueta especificada, la cual en este caso hemos denominado “Tiempo”. Seguidamente el programa completa el ciclo ejecutando las instrucciones que siguen, y finalmente retorna a la etiqueta inicio.
· Si es presionado el pulsador, se genera el primer pulso a través de la instrucción “Pulsout PortB.1, 150” (figura 3), y el programa continúa su curso hasta completar el primer ciclo. En este punto la auto repetición aún no comienza, ya que hemos especificado en la instrucción Button, que ésta debe comenzar al terminar el segundo ciclo:
Figura 3


Ejercicio
Genere un pulso de 2.5 milisegundos, con un tiempo para anti-rebotes en el pulsador de 30 milisegundos, y un tiempo entre cada auto-repetición de 10 milisegundos.



Ejercicios de Física