Codigos en C

Esta sección del blog esta destinada a programas en lenguaje C usando la interfaz ALUX o cualquira de los pics (18f2455/18f4550/18f2550) no olvides visitar la pagina del ALUX




//hello word con pic CSS parpadea un led en el portb.0
//licencia open source
//codigo :Oswaldo Sanchez
//para:  ALUX 1.1 CICY 2011 "Departamento de instrumentación y control"

#INCLUDE <18f2550.h>//seleccionamos pic a usar(18f2455/18f4550/18f2550)
#fusesHSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGE,
MCLR,NOPBADEN//ojo los fuses copiarlos en solo una linea
// declaración de fuses
#use delay(clock=48000000)   //declaramos reloj

//comienza mapeo de el vector de memoria(para bootloader) si no usa bootloader borre esta parte 
#define LOADER_END 0x7FF 
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} 
// termina el mapeo de la memoria


#use fast_io(b)                      //declaramos la librería para la configuración del registro tris



void main(){                          //bucle principal
 set_tris_b(0b00000000);     //configuramos registro tris todos salidas
 output_b(0b00000000);       //apago el portb
   while(true){                        //bucle infinito
    output_toggle(pin_b0);    //cambia de estado el portb.0
    delay_ms(500);                //pausa de 500 ms
   }
}





//Secuencia en el portB con pic CSS 
//licencia open source
//codigo :Oswaldo Sanchez
//para: ALUX 1.1 CICY 2011 "Departamento de instrumentación y control"




#INCLUDE <18f2550.h>                 //SELECCIONAMOS EL PIC A UTILISAR
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN,MCLR,NOPBADEN 
 // DECLARACION DE FUSES


#use delay(clock=48000000)          //DECLARAMOS EL RELOJ

//COMIENSA EL MAPEO DE VECTORES EN LA MEMORIA
#define LOADER_END 0x7FF 
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} 
// TERMINA EL REMAPEO DE VECTORES DE MEMORIA
//(para bootloader) si no usa bootloader borre esta parte 
#use fast_io(b) //DECLARAMOS LA LIBRERIA PARA CONFIGURAR EL REGISTRO TRISB

void main(){                   //BUCLE PRINCIPAL
  long j=1;                      //DECLARO VARIABLE DE TAMAÑO LONG
  set_tris_b(0);              //CONFIGURO REGISTRO TRIS TODOS SALIDAS


  for(;;){                         //BUCLE INFINITO
      
      while (j<255){         //MIENTRAS EL J SEA MENOR QUE CERO
         output_b(j);          //IMPRIME J EN EL PORTB
         delay_ms(200);    // PAUSA DE 200 Ms
         j*=2;                     //j=j MULTIPLICADO POR 2      
    }  
     J=128;
       while (j>2){             // MIENTRAS QUE J SEA MAYOR QUE DOS
           j/=2;                    //DIVIDO J ENTRE DOS
           output_b(j);        // IMPRIMO J EN PORTB
           delay_ms(200);  //PAUSA 200 Ms
     }
   J=1;
  }
}


1 comentario: