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.
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.