CODIGOS PIC C COMPILER PARA LA PROGRAMACION DE PICS Y SIMULACION EN ISIS PROTEUS WWW.INGALEJANDROTORRES.COM ING. Oscar Alejandro Torres Cruz Microprocesadores y Micro controladores 1) Prender y apagar un led #include <16f877A.h> #use delay (clock =20M) #fuses XT,NOWDT #use standard_io(b) void main() { while (true) { output_high(pin_b0); delay_ms(500); output_low(pin_b0); delay_ms(500); } } 2) Secuencia de Leds #include <16f877A.h> #use delay (clock =20M) #fuses XT,NOWDT #use standard_io(b) void main() { while(true) { if (input(pin_a0)) { output_high(pin_b0); delay_ms(20); } output_low(pin_b0); delay_ms(20); } } 3) Prender led oprimiendo un botón #include <16f877A.h> #use delay (clock =20M) #fuses XT,NOWDT #use standard_io(b) void main() { while(true) { output_low(pin_b0); output_low(pin_b1); if (input(pin_a0)) { output_high(pin_b0); delay_ms(200); } if (!input(pin_a1)) { output_high(pin_b1); delay_ms(200); } } 4) Secuencia LEds usando código binario en el puerto B #include <16f877A.h> #use delay(clock=4M) #fuses XT,NOWDT #use standard_io(b) void main() { while(true) { output_b(0b00011000); output_b(0b00100100); output_b(0b01000010); output_b(0b10000001); output_b(0b01000010); output_b(0b00100100); } } delay_ms(200); delay_ms(200); delay_ms(200); delay_ms(200); delay_ms(200); delay_ms(200); 5) Diseño de un semaforo #include <16f877A.h> #use delay (clock =20M) #fuses XT,NOWDT #use standard_io(b) void main() { while (true) { delay_ms(5000); output_high(pin_d7); output_low(pin_d6); output_low(pin_d5); output_low(pin_b2); output_low(pin_b1); output_high(pin_b0); output_high(pin_b5); output_low(pin_b6); output_low(pin_b7); output_low(pin_d2); output_high(pin_d1); output_high(pin_d0); output_high(pin_b0); output_low(pin_b1); output_low(pin_b2); delay_ms(2000); output_high(pin_d0); output_low(pin_d1); output_low(pin_d2); output_low(pin_b2); output_high(pin_b1); output_low(pin_b0); delay_ms(3000); output_high(pin_d2); output_low(pin_d1); output_low(pin_d0); delay_ms(5000); delay_ms(5000); output_low(pin_d7); output_high(pin_d6); output_low(pin_d5); output_low(pin_d2); output_high(pin_d1); output_low(pin_d0); delay_ms(2000); delay_ms(2000); output_low(pin_d7); output_low(pin_d6); output_high(pin_d5); output_low(pin_d2); output_low(pin_d1); output_high(pin_d0); output_low(pin_b2); output_high(pin_b1); output_high(pin_b0); output_low(pin_d7); output_high(pin_d6); output_high(pin_d5); delay_ms(2000); delay_ms(2000); output_high(pin_b2); output_low(pin_b1); output_low(pin_b0); } } 6) Mensaje en una LCD #include <16f877a.h> #use delay (clock = 4M) #include <LCD.C> void main () { while (true) { lcd_init (); //inicializa la LCD printf (lcd_putc,"u controladores. \n"); printf (lcd_putc," IT.COFREM. "); delay_ms(1000); } } 7) Conexión al Led 7 segmentos de cátodo Común #include <16f877A.h> #use delay(clock=4M) #fuses XT,NOWDT #use standard_io(b) //segundero void main() { while(true) { // gfedcba en el display 7 segmentos // output_b(0b10111111); delay_ms(1000); //numero 0 output_b(0b00000110); delay_ms(1000); //numero 1 output_b(0b11011011); delay_ms(1000); //numero 2 output_b(0b01001111); delay_ms(1000); //numero 3 output_b(0b11100110); delay_ms(1000); //numero 4 output_b(0b01101101); delay_ms(1000); //numero 5 output_b(0b11111100); delay_ms(1000); //numero 6 output_b(0b00000111); delay_ms(1000); //numero 7 output_b(0b11111111); delay_ms(1000); //numero 8 output_b(0b01100111); delay_ms(1000); //numero 9 } } 8) Lectura de la entrada Analoga (An0)} #include <16F877A.h> #device adc=10 //para la practica cambiemos por 8 #FUSES XT,NOWDT #use delay(clock=4000000) #include <LCD.C> void main() { double q; setup_adc_ports(AN0); //Canal 0 analógico setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC for (;;) { set_adc_channel(0); delay_us(20); //Habilitación canal a0;si lo cambiamos cambia el puerto A1,A2,A3 q = read_adc(); //Lectura canal0 //Conversión a tensión lcd_init(); printf(lcd_putc, "Numero =%1.2f", q); delay_ms(1000); } } 9) Logica positiva y negativa – conexión a bombillos de 120VAC #include <16F877A.h> #FUSES XT,NOWDT #use delay(clock=4000000) void main() { while(true) { output_high(pin_b0); output_high(pin_b1); delay_ms(5000); output_low(pin_b0); output_low(pin_b1); delay_ms(10000); } }