MICROCONTROLADORES

MICROCONTROLADORES: LED ENCIENDE Y APAGA CON UN PULSADOR.

Explicación del circuito:

Si RA0 se encuentra en estado bajo, el led enciende en un segundo y si RA0 se encuentra en estado alto, el led se apaga en un segundo.

Materiales:

  • Un pic16f887.
  • Un led rojo.
  • Una resistencia de 220Ω.
  • Una resistencia de 10kΩ.
  • Un pulsador. 

Simulación.

microcontroladores circuito led pulsador

Funciones utilizadas en el programa:

#INCLUDE <16F887.h>: La librería a utilizar es la del pic16F887

#USE DELAY(CLOCK=4000000): Se configura la frecuencia del reloj del sistema a 4MHZ.

#FUSES XT, NOPROTECT,NOWDT:  Son los bits de configuración. En donde:

#FUSES XT: Se habilita el oscilador del sistema. 

#FUSES NOPROTECT: Se deshabilita la protección contra lectura de la FLASH.

#FUSES NOWDT: Se deshabilita el Watch Dog Timer.

#BYTE PORTA=5 / #BYTE PORTA=0X05: Se define el puerto A, que se sitúa en la dirección 0X05 de la memoria RAM.

#BYTE PORTB=6 / #BYTE PORTB=0X06: Se define puerto B , que se sitúa en la dirección 0X06 de la memoria RAM. 

#DEFINE SW1 PORTA, 0: El pulsador se coloca en el pin cero del puerto A.

#DEFINE LED  PORTB, 7: El led se coloca en el pin siete del puerto B(RB7).

SET_TRIS_A(255): Para configurar el puerto A como entrada digital. En este caso, se trabaja con decimal; pero también se puede trabajar con binario de la siguiente forma: 0B11111111.

SET_TRIS_B(0B01111111): Se configura el pin siete del puerto B(RB7), como salida digital. 

SET_TRIS_C(255): Se configura el puerto C como entradas digitales. Como se está trabajando con decimal, también es posible trabajar con binario de la siguiente manera: 0B11111111.

BIT_CLEAR(LED)/ BIT_CLEAR(PORTB,7): Pone en cero el bit  de la variable (el puerto B). Entonces el led se encuentra apagado.

BIT_SET(LED)/BIT_SET(PORTB, 7): Pone en uno el bit de la variable(el puerto B). Entonces el led está encendido. 

BIT_TEST(SW1)/BIT_TEST(PORTA,0): Pone en uno el bit de la variable, en este caso, el puerto A. Pero como está negado en el programa !BIT_TEST(SW1)/!BIT_TEST(PORTA,0), devuelve un cero. 

 

Simulación.

codigo fuente.

//Parpadea el led  si RA0=bajo y si RA0=alto,el LED=apagado.LED esta en RB7

#INCLUDE <16F887.h>
//Es el reloj o frecuencia que se usa para generar retardos
#USE DELAY(CLOCK=4000000)
//Bit de configuración inicial que se habilitan o desabilitan para que pueda trabjar el microcontrolador
#FUSES XT,NOPROTECT,NOWDT

//Define los registros 
//El cinco y el seis son las posiciones de memoria de la memoria RAM
#BYTE PORTA=5
#BYTE PORTB=6

//Definición de entrada/salidas
#DEFINE SW1  PORTA,0  //Swiche se va a colocar en RA0
#DEFINE LED  PORTB,7  //Led se coloca en RB7

main(){

//Con TRIS, esta instrucción indica que se esta trabajando como digitales
SET_TRIS_B(0B01111111);    //OB inidica que se esta trabajando en binario, RB7 es configurado como salida digital 
SET_TRIS_A(255);   //Aquí se trabaja en decimal y se puede poner en binario como 0B11111111, es configurado entrada digitales
SET_TRIS_C(255);   //Aquí se trabaja en decimal y se puede poner en binario como 0B11111111,  es configurado entrada digitales
BIT_CLEAR(LED);   //El led inicialmente esta apagado 

WHILE(1){      
    IF(!BIT_TEST(SW1)){  //BIT_TEST, evalua que lo haya en parentesis valga uno; pero en este caso esta negado y vale cero 
          BIT_SET(LED);  //Prende led
          DELAY_MS(1000);  //Retardo
          BIT_CLEAR(LED); //Apagar led
          DELAY_MS(1000); //Retardo
         }
           ELSE{
            BIT_CLEAR(LED);  //Apaga led
           }
       }
     }


CONTENIDOS MÁS RELEVANTES.

soy el administrador del sitio web. si tienes alguna duda, no dudes en contactarme

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *