Mplab X y c18 - Encender y Apagar Un Led Con Un Boton
Mplab X y c18 - Encender y Apagar Un Led Con Un Boton
Mplab X y c18 - Encender y Apagar Un Led Con Un Boton
Seguimos con las publicaciones en C18, en ejemplos anteriores hemos visto la manera de manipular un puerto como salida ahora toca el turno de ver como se manipula un pin como salida, para ello tenemos un botn conecto al pin RE0 con su resistencia de pull-down tambin se ha colocado un LED con su debida resistencia en el pin RE1 y se agrego una resistencia a +5V en el pin MCLR par que el circuito funcione correctamente. As queda el circuito que utilizaremos:
Lo que har el circuito ser encender o apagar el LED cada que se presione el botn. Para el cdigo tenemos dos archivos el Config_FusesPIC.h y el main.c, como ya sabemos en el primero tenemos la configuracin de todos los FUSES del PIC, el segundo es el archivo donde esta todo el cdigo para que el circuito trabaje adecuadamente. Es importante recordar que se ocupara el oscilador interno configurado a 4MHz.
1 Pedro Snchez
http://electronicayrobotica.wordpress.com/
2 Pedro Snchez
http://electronicayrobotica.wordpress.com/
Ahora nuestro cdigo en el archivo main.c nos queda de la siguiente forma: main.c
#include <p18f4620.h> #include <stdio.h> #include <stdlib.h> #include <delays.h> #include "Config_FusesPIC.h"//Configuracin de FUSES #define BUTTON PORTEbits.RE0 #define BUTTON_TRIS TRISEbits.RE0 #define LED_STATUS PORTEbits.RE1 #define LED_STATUS_TRIS TRISEbits.RE1 void main(void){ //Configura oscilador interno a 4MHz OSCCONbits.IRCF2=1; OSCCONbits.IRCF1=1; OSCCONbits.IRCF0=0; ADCON1=0xFF;//Entradas y salidas digitales //Configuracin de Entradas/Salida BUTTON_TRIS=1;//Pin del boton como entrada LED_STATUS_TRIS=0;//Pin del LED como salida //Se inicializn los puertos en cero BUTTON=0; LED_STATUS=0; while(1){ if (BUTTON==1){ Delay1KTCYx(50);//Retardo de 50 mS LED_STATUS^=1; } } }
3 Pedro Snchez
http://electronicayrobotica.wordpress.com/
Parte del cdigo ya se conoce por que se ha utilizado en ejemplos anteriores lo nuevo en este ejemplo es el uso de etiquetas. Tanto para referirse a un PORT como a un TRIS, el uso de etiquetas facilita el acceso a dichos pines y el cdigo se ve mucho mejor. Para referirse a los pines Reo y RE1 se tiene lo siguiente: #define BUTTON #define BUTTON_TRIS #define LED_STATUS #define LED_STATUS_TRIS PORTEbits.RE0 TRISEbits.RE0 PORTEbits.RE1 TRISEbits.RE1
Despus se configura el oscilador interno, se dice que van a ser entradas digitales y se inicializan los puertos usando las etiquetas. Ahora dentro del while tenemos un simple ejemplo en donde se revisa el estado del pulsador, agregamos un pequeo retardo para evitar rebotes mecnicos de los pulsadores, despus tenemos la instruccin LED_STATUS^=1; lo que hace es intercambiar el estado del pin, por ejemplo para la primera vez que se presione el botn el LED encender, si el botn se vuelve a presionar el LED se apagara.
4 Pedro Snchez
http://electronicayrobotica.wordpress.com/