Mostrando entradas con la etiqueta c. Mostrar todas las entradas
Mostrando entradas con la etiqueta c. Mostrar todas las entradas

viernes, 19 de julio de 2013

Microcontroladores PIC en mikroC 3 - Boton (LED Prendido o Apagado)

En el siguiente programa el LED conectado en el Puerto RB0 cambiara de estado (Prendido-Apagado) si es que se presiona el pulsador en el Puerto RD1.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS y el diagrama de flujo del programa.

Diagrama de conexiones. (clic en la imagen para ampliar)



 Diagrama de Flujo (clic en la imagen para ampliar)


Código empleado en el programa.

int estado    = 0;                      // variables a utilizar
int estadoAnt = 0;
int salida    = 0;

void main() {
    ANSEL  = 0x00;                      // puertos E/S digital
    ANSELH = 0x00;
    C1ON_bit = 0x00;                    // se apagan los comparadores
    C2ON_bit = 0x00;
   
    TRISB = 0x00;                       // puerto B como salida
    TRISD.F1 = 1;                       // puerto D1 como entrada
    PORTB = 0x00;                       // inicialización del puerto.

    while(1){
        estado = Button(&PORTD,1,1,1);  // regresa 0 ó 255 la libreria de boton
                                        // para antirrebotes de microC
                                        // parametro1: pide el puerto
                                        // parametro2: numero del puerto RD1
                                        // parametro3: tiempo en ms: 1ms
                                        // parametro4: pregunta por el estado
                                                     //pregunta por un alto :1
                                       

        /* para un mejor entendimiento del código se sugiere
           ver el diagrama de flujo adjunto */

        if((estado == 255) && (estadoAnt == 0)){
            salida = 1 - salida;
        }
        estadoAnt = estado;
        if(salida == 1){
            PORTB = 255;
        }
        else{
            PORTB = 0;
        }
    }
}



A continuación se adjuntan los archivos para descargar el proyecto, el archivo .hex para el microcontrolador y la simulacion en ISIS.

Descargar 

Microcontroladores PIC en mikroC 2 - Puertos Bit a bit

En el siguiente programa por el Puerto C se obtendra el dato del Puerto B, esto mediante un dip Swith y una barra de LEDs.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS.


Codigo empleado en el programa.

void main(){
    ANSEL =0x00;        // los puertos se configuran como
    ANSELH = 0x00;      // E/S digital
    PORTC=0x00;         // inicialización del puerto.
    TRISC=0x00;         // puerto C como salida.
    TRISB=0xFF;         // puerto B como entrada.

    while (1){
        PORTC=PORTB;    // mueve el estado del puerto B al C
    }
}


A continuación se adjuntan los archivos para descargar el proyecto, el archivo .hex para el microcontrolador y la simulacion en ISIS.

Descargar 

Microcontroladores PIC en mikroC 1 - Blink LED (Hola Mundo)


Para prender y apagar un LED (Blink LED) en un microcontrolador PIC no es necesario crear complicadas rutinas de tiempo en  ensamblador debido a que en microC ya existen las librerias para realizar dicha acción. Para mostrar el parpadeo del LED se utilizará un Microcontrolador PIC16F887.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS. En el diagrama puede verse un diodo LED junto a una resistencia de 330 ohm, además en el pin 1 del microcontrolador se agrego un pequeño circuito, el cual debe colocarse para que MCLR este siempre en estado de 1, al presionar el Boton habrá un reset en el microcontrolador.




void main() {
    ANSEL      = 0x00;                               // los puertos se configuran como
    ANSELH   = 0x00;                               // E/S digital

    PORTB      = 0x00;                              // se inicializa el puerto B con 0
    TRISB.F0  = 0;                                    // se usa como salida

    while(1){                                               // ciclo
        PORTB.F0 = ~PORTB.F0;              // hace parpadear el LED
        Delay_ms(500);                                // cada 500 ms.
    }
}

A continuación se adjuntan los archivos para descargar el proyecto junto con la simulacion en ISIS.