Portal    Foro    Talleres    Buscar    FAQ    Registrarse    Conectarse
Publicar Nuevo Tema  Responder al Tema Página 2 de 3
Ir a la Página Anterior  1, 2, 3  Siguiente
Introduccion Al Lenguaje C Para PICs
Autor Mensaje
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
ESTRUCTURA DE CONTROL FOR

Es un bucle que el lenguaje C nos proporciona para obtener repeticiones de bloques de codigo de manera clara y precisa. su sintaxis es la siguiente:

sintaxis:

for ( inicializacion;condicional;incremento)
{
    sentencia1;
    sentencia2;
    sentencia3;
    .
    .
    .
}


La inicializacion es usada para dar un valor inicial al contador (que es una variable ya declarada) del bucle for; el condicional es evaluado antes de ejecutar el codigo dentro del bucle y su valor al ser evaluado puede ser TRUE o FALSE, si es TRUE entonces el codigo dentro del bucle for es ejecutado, sin embargo si es FALSE se termina con el bucle for; el incremento es el que se encarga de incrementar la variable contador dentro del bucle for.


Ejemplo:
int a,buscador,hendrix;

   for(a=0;a<=30;a++)
   {
      buscador++;
      hendrix--;
      output_b(1);
      output_b(0);
   }




ESTRUCTURA DE CONTROL WHILE

Otro bucle del C. Mientras la expresión sea TRUE se repetira una porción de codigo que esté dentro del bucle while, cuando la espresión evaluada sea FALSE se terminara el bubcle while. Siempre sera evaluada la expresió nantes de seguir ejecutando la porción de código.

sintaxis:

while  (expresion)
{
         sentencia1;
         sentencia2;
         sentencia3;
         .
         .
         .
}

Ejmplo:
int a,b;

   while( input(PIN_A0) )
   {
      a++;
      b--;
   }




ESTRUCTURA DE CONTROL DO WHILE

En este caso se combinan el DO con el WHILE, realizando un bucle en el cual se ejecuta primero las sentencias o codigo y luego se evalua la expresión o condicional, de la misma forma que el while y el for, si la expresión evaluada resulta TRUE se continúa con el bucle, de lo contrario, si resulta FALSE se termina con el bucle.

sintaxis:

do
{
         sentencia1;
         sentencia2;
         sentencia3;
         .
         .
         .
}
while  (expresion);

Ejmplo:
int i,j;

   do
   {
        i ++;
        output_high(PIN_A0)
        delay_ms(250);
        output_low(PIN_A0)
        delay_ms(250);
   }
   while( input(PIN_B7) );





bonus:

   bucle infinito con while:
    while(1);
    
    bucle infinito con for:
    for(;;);

  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
AQUÍ PUEDE IR TU PUBLICIDAD
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
BIFURCACIONES DE CONTROL BREAK

Esta instrucción nos permite salir de cualquier bucle ya sea WHILE , DO WHILE, FOR. Cuando el programa encuentra a esat instrucción simplemente salta a la siguiente instruccion fuera del bucle donde se hallaba contenido.

Ejemplo:
int a,carga;

   for(a=0;a<=200;a++)
   {
      delay_ms(100);
      if ( input_a(0x03) )
         break;
      carga = input_a();
      output_b(carga);
   }


En esta situación, tenemos un bucle FOR que contara hasta 200 con la variable " a " para satisfacer la expresión del bucle, sin embargo existe un break el cual depende de la estructura condicional IF que inidica si PORTA is igual a 0x03 entonces ejecuta break, de lo contrario finaliza el IF y continua con el bucle. Cuando PORTA sea igual a 0x03 el programa se topara con el BREAK y como consecuencia terminara con el bucle FOR y continuará con la siguiente instrucción fuera del bucle.



BIFURCACIONES DE CONTROL CONTINUE

Digamos que dentro de nuestro bucle existe una instrucción al final del bloque de codigo que queremos saltarla o no ejecutarla dependiendo de alguna condición extra, la instruccion CONTINUE permite saltar todas las instrucciones posteriores a su aparición dentro del bloque de codigo escrito en el bucle.

Ejemplo:
int b,prueba;

   for(b=0;b<=200;b++)
   {
      delay_ms(500);
      if ( input_a() == 0X0A )
         continue;
      prueba = ~prueba;
   }


En este caso, el bucle FOR contara hasta 200 con la variable " b " y ejecutará la ultima instruccion prueba = ~prueba dependiendo del estado del PORTA, siempre y cuando sea igual a 0X0A, de esta manera se utiliza el CONTINUE.
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
bueno, ya hemos terminado con las estructuras de control, cuyo conocimiento y dominio es el ABC del C (jeje me salio un verso sin esfuerzo  Mr. Green ), sin embargo no lo es todo, hay otros comandos muy importantes en el manejo de microcontroladores, son las instrucciones para operar con bits y bytes, a continuación profundizaremos dichos temas.
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
Manipulación de Bits y Bytes

Cuando desarrollamos aplicaciones con microcontroladores, siempre tenemos que afrontar el analisis de los pines de entrada o salida, algunas veces realizaremos una lectura de todo un puerto, otras será el estudio de un pin específico o varios pines independientes entre si; la primera situación se trata de un manejo de bytes y en la segunda se trata de manejo de bits.

Y esto no sucede solamente con los pines de entrada o salida del pic sino también con banderines o registros de desplazamiento, dichas tareas se hacen imprescindibles al momento de programar y ejecutar la solución por software, es por ello que existen estas funciones que realizan operaciones para los bytes y bits.

En el Assembler se utiliza un puñado de comandos que permiten estas tareas, en el lenguaje C también existen estas características.


Funciones que manejan BITS


bit_clear(var,bit) :
Esta función simplemente borra (pone a '0') el dígito especificado en bit(0-7 o 0-15) del byte o palabra aportado en var. El bit menos significativo es el 0. Esta función es exactamente igual que: var & = ~(1 << bit);                        
 
Ejemplo:
int x;                                                                            

x=5;                                                                              
bit_clear(x,2);       // x = 1                                                        


bit_set(var,bit) :
Esta función pone a '1' el dígito especificado en bit(0-7 o 0-15) del byte o palabra aportado en var. El bit menos significativo es el 0. Esta función es igual que: var | = (1 << bit);                                                    
 
Ejemplo:
int x;                                                                            

x=5;                                                                              
bit_set(x,3);        // x = 13  


bit_test(var,bit):
Esta función examina el dígito especificado en bit(0-7 o 0-15) del byte o palabra aportado en var. Esta función es igual, aunque mucho más eficaz que esta otra forma: ((var & (1 << bit)) != 0)                                        
 
Ejemplo:
 
if( bit_test(x,3) || !bit_test (x,1) )
{                                            
           //o el bit 3 es 1 o el bit 1 es 0                                            
}                                                                                  



Funciones que manejan BYTES


swap(byte) :
Esta función intercambia el nibble alto con el nibble bajo del byte dado. Esto es lo
mismo que: byte = (byte << 4) | (byte >> 4);                                
 
Ejemplo:
 
x=0x45;                                                                            
swap(x);    // x ahora tiene  0x54                    




Funciones que manejan BITS y BYTES de los pines de entrada y salida del PIC


INPUT(pin)
Devuelve el estado '0' o '1' de la patilla indicada en pin. El método de acceso de I/O depende de la última directiva #USE *_IO utilizada. El valor de retorno es un entero corto.

Ejemplo:
  
while ( !input(PIN_B1) ); //espera en este bucle mientras el pin B1 sea 0
                                                                        

OUTPUT_BIT(pin, value)
Esta función saca el bit dado en value(0 o 1) por la patilla de I/O especificada en pin. El modo de establecer la dirección del registro, está determinada por la última directiva #USE *_IO.

Ejemplo:
            
output_bit( PIN_B0, 0);        // es lo mismo que output_low(pin_B0);                
output_bit( PIN_B0,input( PIN_B1 ) );     // pone B0 igual que B1                  
output_bit( PIN_B0, shift_left(&data, 1, input(PIN_B1)));                          
    // saca por B0 el MSB de 'data' y al mismo tiempo                              
    // desplaza el nivel en B1 al LSB de data.                                    


OUTPUT_FLOAT(pin)
Esta función pone la patilla especificada como pin en el modo de entrada. Esto permitirá que la patilla esté flotante para representar un nivel alto en una conexión de tipo colector abierto.  


Ejemplo:
// guardamos la lectura del port A en dato
if( (dato & 0x80)==0 )       // comprobamos si es '1' el MSB                  
  output_low(pin_A0);     // si es '1' ponemos a cero el pin A0              
else                                                                          
  output_float(pin_A0);     // de lo contrario, ponemos el pin A0 a uno flotante


OUTPUT_HIGH(pin)
Pone a 'uno' el pin indicado. El método de acceso de I/O depende de la última directiva #USE *_IO utilizada.


Ejemplo:
 output_high(PIN_A0);                                                              


OUTPUT_LOW(pin)
 Pone a 'cero' el pin indicado. El método de acceso de I/O depende de la última directiva #USE *_IO.
 
Ejemplo:
output_low(PIN_A0);                                                                


PORT_B_PULLUPS(flag)
Esta función activa/desactiva las resistencias pullups en las entradas del puerto B. Flag puede ser TRUE (activa) o FALSE (desactiva).
 
Ejemplo:
 port_b_pullups(FALSE);                                                            


SET_TRIS_A(value)
SET_TRIS_B(value)
SET_TRIS_C(value)
SET_TRIS_D(value)
SET_TRIS_E(value)
Estas funciones permiten escribir directamente los registros tri-estado para la configuración de los puertos. Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un '1' indica que la patilla es de entrada y un '0' que es de
salida.


Ejemplo:
 SET_TRIS_B( 0x0F );   // pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7    
                                  // como salidas

  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
hola yo no e podido istalar el CCS no se por que. Bueno de hecho si lo instale pero con se como accesar a dicho programa para poder comenzar con la edicion de mis programas para poder compilarlos.el programa es el CCS
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
... "marctronico"... el CCS lo puedes vajar de esta pagina ( http://www.mecatronika.com/2009/03/compilador-ccs-4084/ ), ademas en el archivo te viene la guia para que lo instales, es muy bueno, yo almenos aurita lo tengo instalado en el win. 7 (y antes en el XP) y funciona de maravilla.... Mr. Green
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
Gracias. Pues yo,lo tengo por que compre el libro Compilador CCCS y simulador PROTEUS para microcontroladores PIC ya que quiero incursionar en lenguaje C para micontroladores.  Y en el disco biene el programa CCs para pics pero no lo he podido instalar en mi lap.

Intentare la opcion que me dices.....
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 


Me ha funcionado de maravilla el link que me has pasado, gracias. Pero tambien descrubi por que no funcionaba la version del libro, me tenia que registrar con una clave que trae el libro al final.   Gracias....

Lo probare con un programa basico en prende leds
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
ya tengo el compilador Ccs para pics, ahora lo que no se como hacer es simular mis circuitos en proteus. como le cargo el archivo. hex al microcontrolador por que se lo pongo en mis propiedades pero me marca error
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Responder Citando  
Mensaje Re: Introduccion Al Lenguaje C Para PICs 
 
Tick  es muy facil, lo que tienes que hacer es lo siguiente:

_ entrar a las propiedades del microcontrolador (doble click en el)
_ en la ventana que se abre hay un espacio en blanco al cual en su costado dice "PROGRAM FILE"...
_ le das click en el dibujito de una carpeta que sta a su derecha.
_ buscas el archivo HEX donde lo guardas y aceptar...
_ y le das simular.... y listo....

_x si es que no te quedo claro en la tarde subo unas imagenes..... Mr. Green
  



Desconectado Ver perfil del usuario Enviar Mensaje Privado
Descargar Mensaje Volver arriba Página Inferior
Mostrar mensajes anteriores:
Resumen de Valoraciones:
Media de Valoración Valoración Mínima Valoración Máxima Número de Valoraciones
10.00 10 10 4
Ver Información Detallada
Elegir Valoración: 
Publicar Nuevo Tema  Responder al Tema   Página 2 de 3
Ir a la Página Anterior  1, 2, 3  Siguiente

Usuarios navegando en este Tema: 0 Registrados, 0 Ocultos y 1 Invitado
Usuarios Registrados conectados: Ninguno


 
Lista de Permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No Puede descargar archivos
Puede enviar eventos al Calendario