Programando PIC con CCS ejercicio 2 (botón) 🕹️


Unos de los dispositivos más sencillo para introducir información, es el botón o pulsador, hay dos forma de conexión de uso común y que también es válida para otros dispositivos como los switches (conmutador), los jumper y otros interruptores


Dejando de lado los puertos analógicos/digitales los cuales, lo tocaremos más adelante, la mayoría de los pines de los puertos de los micro-controladores se puede configurar como entradas, que detectara si en la entrada hay un bajo (0) o un alto (1) (estados lógicos) lo cual podemos usar, esa información dentro del código para que realice una determinada acción.



Existe dos forma y depende del estado lógico que queremos en el estado pasivo del botón y cuando lo presionamos, el nombre que se le da es debido a la configuración de la resistencia que usa.



  • La configuración resistor PULL DOWN, pasa de un bajo (0 o 0V) a un alto (1 o 5V) cuando es presionado.
  • La configuración resitor PULL UP, pasa de un alto (1 o 5V) a un bajo (0 o 0V) cuando es presionado.

Con esta breve explicación vamos manos a la obra con un pequeño ejemplo para cada uno.


1) Configuración con resistor PULL DOWN.



Creamos nuestro proyecto en PIC-C CCS con la siguiente configuración :
  • Para un micro-controlador PIC12C509A.
  • Una frecuencia de 500 KHz y una configuración oscilador de 4 <= MHz.



El cual le agregamos el siguiente código, para el ejemplo con resistor PULL DOWN:



Para la simulación en ISIS Proteus usaremos esta configuración.




De todos modos aquí hay información de como realizar el proyecto y enlazarlo con la simulación.


Breve explicación del código:




  • En la linea 1 se carga el archivo *.h donde esta algunas configuración.
  • Con el while (linea 7) creamos un bucle infinito, entre los corchetes 8 y 13.
  • En la linea 9 tenemos una condición si se cumple que el pin GP1 (B1) es bajo (recuerde que la condición ! es igual al NOT lógico) se asigna al puerto GP0 un alto (linea 10) el cual el LED estará apagado.
  • De lo contrario (linea 11) no se cumple la condición (linea 9) se asignara (linea 12) un bajo en GP0 (B0) el cual va encender el LED.
  • Yo se que al principio la lógica inversa es difícil, pero el código es sencillo para que usted entienda con un poquito de paciencia y compilación en frió.


2) Configuración con resistor PULL UP.

  • La creación del proyecto es identifica al anterior, pero con el nombre main2 para el ejemplo 2.

El cual le agregamos el siguiente código.



Para la simulación en ISIS Proteus, la configuración del Micro es igual al anterior.



La explicación del código:




  • Es prácticamente idéntica al del ejemplo 1.
  • En la linea 9 tenemos una condición si se cumple que el pin GP1 (B1) es alto (recuerde la condición !) se asigna al puerto GP0 un alto (linea 10) el cual el LED estará apagado.
  • De lo contrario (linea 11) si no se cumple la condición (linea 9) se asignara (linea 12) un bajo en GP0 (B0) el cual va encender el LED.


3) Toggle.

  • Para este ejemplo usaremos el mismo diagrama de ISIS Proteus del ejemplo 2 y también la misma configuración del proyecto.
  • La función es la siguiente al presionar el botón se encenderá el LED y al presionarlo de nuevo lo apagara.

El código es el siguiente:





Ya queda de parte de lector interpretar el código; el circuito de ISIS Proteus es el siguiente.



Se puede mejorar con un retardo en el código o un circuito anti-rebote en el botón, pero eso es es tema para un próximo articulo :D


También le puede interesar:


Nota:

Debo insistir que no soy ningún experto en el tema, estoy aprendiendo y quiero compartir lo que aprendo, así que le invito que cualquier consejo o corrección, hacerlo en los comentarios o enlaces de contacto del blog.


Fuentes:



Comentarios

Entradas más populares de este blog

Super Mario RPG 🎮