Está en la página 1de 9

encender un led con 16f628a en lenguaje c

// las dobles barras son comentarios no son parte del cdigo ni son compiladas siempre y cuando estn en al //misma lnea#include <16f628a.h> //especifico la libreria del pic en este caso 16f628a #fuses XT //especifica que utilizara un cristal de cuarzo #fuses PUT //espera unos milisegundos antes de iniciar #fuses BROWNOUT //si la tensin no es suficiente para el pic este se reinicia //#use standard_io(b) #use delay(clock=4000000) //especifica los 4Mhz del cristal de cuarzo void main() { set_tris_a(00001); set_tris_b(00000000); //funcin principal //configuramos el puerto A como entrada al darle 1 al primer bit //configuramos el puerto B como salida al dejar //el primer bit en 0 pero como vez en este caso los deje todos en 0

do{ //aki iniciamos un ciclo output_low(pin_b0); //la salida del pin-B0 la dejamos en 0 o apagado delay_ms(50); //aki le damos un retardo de 50 milisegundos output_high(pin_b0); //la salida del pin-B0al dejamos como 1 o encendido delay_ms(50); //nuevamente el mismo retardo de los 50 milisegundos

}while(true); }

Proyecto 1
Este programa tendra como tarea: al presionar el pulsador conectado en RA0 se encendera un led conectado en RB0 por 0.5 seg y luego se apagara,el programa corre continuamente.el pic a utilizar es el PIC16F84A.Frecuencia de oscilacion es 4Mhz. Cada proyecto esta para ser descargado en el menu de "Descargas" el codigo c comienza aqui

#include "16f84a.h" #use delay (clock=4000000) #fuses xt,nowdt,noprotect #byte port_a=5 #byte port_b=6 void main(void) { set_tris_a(0b00000001); set_tris_b(0b00000000); port_b=0x00; while (true) { if (input(pin_a0)==0) { port_b=0b00000001; delay_ms(500); port_b=0b00000000; } } }

// pic a utilizar // Fosc=4Mhz // fusibles // declaramos el puerto a en su localidad // declaramos el puerto b en su localidad

// programamos el puerto a para que RA0 sea entrada // programamos el puerto b para q sea salida // inicialmente todo el puerto b estara apagado // bucle infinito,o que el programa se ejecutara infinitamente // preguntamos si RA0 es cero // cuando se cierra el pulsador ejecuta esta tarea // la cual es encender un led conectado en RB0

Proyecto 2

Este programa tendra como tarea: al presionar el pulsador conectado en RA0 se hara una secuencia de luces por el puerto b,y al presionar el pulsador conectado en RA1 se hara otra secuencia de luces por el puerto b.el programa corre continuamente.frecuencia de oscilacion 4Mhz. Cada proyecto esta para ser descargado en el menu de "Descargas" el codigo c comienza aqui #include <16f84a.h> // Pic a utilizar #use delay(clock=4000000) // Cristal a utilizar #fuses xt,nowdt,noprotect // Fusibles #byte porta=5 // Declaro el puerto A en su localidad #byte portb=6 // Declaro el puerto B en su localidad int x=100; // Variable "x" igualada a 100 void main() { set_tris_a(0b00000011); // programamos para q RA0 y RA1 sean entradas set_tris_b(0b00000000); // programamos para que todo el puerto b sea salida portb=0b00000000; // inicialmente todo el puerto b estara apagado for(;;) { if(input(pin_a0)==0) { portb=0b00000001; delay_ms(x); x=100; " delay_ms(x); portb=0b00000100; delay_ms(x); portb=0b00001000; delay_ms(x); portb=0b00010000; delay_ms(x); portb=0b00100000; delay_ms(x); portb=0b01000000; delay_ms(x); portb=0b10000000; delay_ms(x); portb=0b00000000; } if(input(pin_a1)==0) { portb=0b11111111; delay_ms(x); portb=0b00000000; delay_ms(x); portb=0b11111111; delay_ms(x); portb=0b00000000; delay_ms(x); portb=0b11111111; delay_ms(x); // bucle infinito,al igual q "while(true)" // preguntamos si RA0 es cero "0"

// la "x" posee un valor de 100 ,el cual esta declarado al principio con " int

// preguntamos si RA1 es cero "0"

portb=0b00000000; delay_ms(x); } } }

Proyecto 3
Este programa tendra como tarea: Cada vez que presionemos el pulsador conectado en RA0 se mostrara una cuenta binaria de 0 a 255 a traves de unos leds conectados en el puerto B del PIC16F84A. El programa corre continuamente. Frecuencia de oscilacion es 4MHz Cada proyecto esta para ser descargado en el menu de "Descargas" el codigo c comienza aqui #include <16f84a.h> // Pic a utilizar #use delay(clock=4000000) // Crystal a utilizar #fuses xt,nowdt,noprotect // Fusibles #byte portb=6 // Declaro el Puerto B en su localidad int A=0; //constante void main(void) {

set_tris_b(0b00000000); // Programo todo el Puerto B como salida portb=0b00000000; // Inicialmento todo el Puerto B estara apagado while(true) // Bucle Infinito { if(input(pin_a0)==0) // Pregunto si el pulsador conectado en RA0 es cero "0" { A++; // incremento en 1 a la constante "A" portb=A; // Muestro "A" por el Puerto B delay_ms(500); // Doy un retardo para q la cuenta se visualice bien if(a==256) // pregunto si "A" es 256,si es correcto igualo "A" a cero "0" { // y el programa vuelve a comenzar. A=0; } } } }

Contador de 0-9 con 7segmentos

Proyecto 4
Este programa tendra como tarea: Cada vez que presionemos el pulsador conectado en RA0 se ira incrementando una cuenta de 0 a 9 y se visualizara por un display 7 segmentos.El programa corre contuniamente.Frecuencia de oscilacion 4MHz.

cada proyecto esta para ser descargado en el menu de "Descargas" el codigo c comienza aqui #include <16f84a.h> // Pic a utilizar #use delay(clock=4000000) // Cristal a utilizar #fuses xt,nowdt,noprotect // Fusibles #byte portb=6 // Declaro el Puerto B en su localidad void main(void) { int A=0; //constante set_tris_b(0b00000000); // Programo todo el Puerto B como salida portb=0b00000000; // Inicialmento todo el Puerto B estara apagado while(true) // Bucle Infinito { if(input(pin_a0)==0) //Pregunto si el pulsador conectado en RA0 es cero "0" { A++, // incremento en 1 a la constante "A" portb=A; // Muestro "A" por el Puerto B delay_ms(500); // Doy un retardo para q la cuenta se visualice bien if(a==9) // pregunto si "A" es 9,si es correcto igualo "A" a "255" { // y el programa vuelve a comenzar. A=255; } } } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // igualo "A" a "255" porque si la igualo a cero "0" la // // cuenta empezaria desde 1 hasta 9, y se necesita q empiece // // desde 0 hasta 9 // /////////////////////////////////////////////////

Secuencia de Luces utilizando Funciones


Proyecto 5
Este proyecto tiene como tarea : al presionar el pulsador conectado en RA0 se mostrara una secuencia por el puerto B, de igual manera al presionar el pulsador conectado en RA1 se mostrara otra secuencia por el puerto B. el pic a utilizar es PIC16F84A. frecuencia de oscilacion 4MHz. NOTA: La diferencia que tiene este proyecto con el PROYECTO 2 es que este es realizado con FUNCIONES. Cada proyecto esta para ser descargado en el menu de "Descargas" el codigo c comienza aqui #include <16f84a.h> // pic a utilizar #use delay(clock=4000000) // cristal a utilizar #fuses xt,nowdt,noprotect // fusibles #byte portb=6 // se declara el puerto B en su localidad void funcion_1(void); // Declaramos funcion_1 void funcion_2(void); // Declaramos funcion_2 int A; // Variable "A"

void main(void) { set_tris_b(0b00000000); // Se programa el puerto B como salida portb=0b00000000; // Inicialmente todo estara apagado while(true) { // Bucle infinito...

if(input(pin_a0)==0) { funcion_1(); } if(input(pin_a1)==0) { funcion_2(); } } } void funcion_1() { portb=0b00011000; delay_ms(200); portb=0b00100100; delay_ms(200); portb=0b01000010; delay_ms(200); portb=0b10000001; delay_ms(200); portb=0b00000000; delay_ms(200); } void funcion_2() { portb=0b11111111; delay_ms(200); portb=0b01111110; delay_ms(200); portb=0b00111100; delay_ms(200); portb=0b00011000; delay_ms(200); portb=0b00000000; delay_ms(200); }

//pregunto si el pulsador en RA0 es cero "0"

//pregunto si el pulsador en RA1 es cero "0"