Envío Gratis en compras mínimas de $1200 mxn Enviamos a toda la Republica Mexicana
Buscar

Práctica 1 con Miuva 18. Parpadeo de LED PIC C

El objetivo de esta práctica es familiarizarse con Miuva 18 y entender el funcionamiento del encendido y apagado de un LED utilizando PIC C Compiler.

Procedimiento

Por la forma en la que está conectado el led Miuva 18 es necesario que enviemos un “1” lógico para encenderlo. La mofificación de este bit puede hacerse con cualquiera de las siguientes intrucciones:

output_low(PIN_E0);     //Manda una señal en bajo al pin E0
output_high(PIN_E0);    //Manda una señal en alto al pin E0
output_toggle(PIN_E0);  //Invierte la señal actual del pin E0

En los PICs existe un registro llamado TRISx el cual está asociado a definir si un puerto será usado como entrada o salida, en este registro asignamos un “1” lógico a los pines del puerto que serán entradas y un “0” a los que serán salidas. Por ejemplo: Para definir los pines del puerto B como salidas (por que ahí están conectado el LED) el registro TRISB tiene que tener el valor 0x00. Esto lo hacemos con la siguiente línea de código:

set_tris_e(0x00);

Ahora solo queda definir un “ciclo infinito” para que Miuva se encargue de repetir el proceso de:

Cambiar el estado del LED -> Esperar 1 segundo

Esto lo podemos hacer de diferentes formas, con un ciclo while o for; por ejemplo:

while(true){
     //Todo lo que esté aquí dentro se repetirá infinitamente
}

Con esto podemos armar el siguiente código con el cual el led RGB de Miuva se encenderá y apagará cada 200 milisegundos.

 

Código en PIC C

#include <18F46K22.h>                    // la librería del PIC
#fuses HSM,NOWDT,PUT,BROWNOUT, MCLR,NOLVP,NOXINST,NOWRT,NOPLLEN
#use delay(clock = 12MHz)                //Seleccionamos la frecuencia de reloj de 12MHz 


void main(){                              //Función principal
     set_tris_b(0x00);                   //Configuramos el puerto B como salida
            while(true){                 //Inicia el Ciclo infinito
                 output_toggle(PIN_B1);  //Invertimos el valor actual del Pin
                 delay_ms(1000);          //Esperamos 200 milisegundos
                                         //Acaba el ciclo infinito
   }                                       //Acaba la función principal
}

Funcionamiento