Autor Tema: Dudas sobre C  (Leído 1186 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RacalcaR

  • PIC10
  • *
  • Mensajes: 3
Dudas sobre C
« en: 22 de Noviembre de 2005, 18:03:00 »
Hola a todo el foro,

Resulta que copie un código de libre distribución que según su creador esta echo en C para poder empezar a aprender con los microcontroladores,  lo modifique para un robot de tracción diferencial con 2 sensores infrarrojos y PIC 16F84A y la verdad es que con mucha paciencia he comprendido el código hasta el punto de modificarlo a mi antojo, no se si bien o mal pero funciona, pero la verdad es que por mucho que leo sus ejemplos en el foro cada vez me resulta mas diferente, de echo ya estoy dudado si en realidad es C. El compilador que uso y que describía e autor del código original es el picclite, me gustaría que le echaran un vistazo al código haber que opinan y su posible conversión para poder usarlo en el CCS y poder seguir aprendiendo con ustedes. Muchas gracias por su tiempo.

Aquí pueden ver el código original: http://www.mundobot.com/projects/st-alex/spst-alex.htm

Les pongo el código modificado por mi:


#include   <pic.h>
#define      pausa1      30    
#define      pausa2      4000  
#define      adelante1   RB0
#define      adelante2   RB1
#define      atras1      RB2
#define      atras2      RB3
#define      sensordcha   RB4
#define      sensorizda   RB5
#define      On             1
#define      Off             0


void Pausa (unsigned Periodo);

main(void)
{
   /* salidas */
   TRISB0 = 0; /* adelante1 */
   TRISB1 = 0; /* adelante2 */
   TRISB2 = 0; /* atras1 */
   TRISB3 = 0; /* atras2 */

   /* entradas */
   TRISB4 = 1; /* sensordcha */
   TRISB5 = 1; /* sensorizda */
       

                PORTA = PORTB = Off;

   for(;;) {
                   
                        if ((sensorizda != Off) & (sensordcha != Off)){
                       
                        atras1 = atras2 = On;
           adelante1 = adelante2 =  Off;
                        Pausa (pausa1*15);
                        atras1 = atras2 = Off;         
           Pausa (pausa1*10);
                       
                        adelante2 = atras1 = On;
                        adelante1 = atras2 = Off;         
                        Pausa (pausa1*20);
           adelante2 = atras1 = Off;
                        Pausa (pausa1*10);
                        }
                       

                        else if(sensordcha != Off) {
         
                         
                        atras1 = atras2 = On;
           adelante1 = adelante2 =  Off;
           Pausa (pausa1*4);
                        atras1 = atras2 = Off;
                        Pausa (pausa1*10);
                                               

                        adelante1 = atras2 = On;         
           adelante2 = atras1 = Off;
                        Pausa (pausa1*10);
                        adelante1 = atras2 = Off;
           Pausa (pausa1*10);
                        }    
      
                        else if (sensorizda != Off) {
         
         
                       
           atras1 = atras2 = On;
           adelante1 = adelante2 =  Off;
                        Pausa (pausa1*4);
                        atras1 = atras2 = Off;         
           Pausa (pausa1*10);

                        adelante2 = atras1 = On;
                        adelante1 = atras2 = Off;         
                        Pausa (pausa1*10);
           adelante2 = atras1 = Off;
                        Pausa (pausa1*10);
                        }
      
                       
                                   
                        else {
           /* adelante */
           adelante1 = adelante2 = On;
                        atras1 = atras2 = Off;
                        Pausa (pausa1);
                       }
   }
}
                                 
                                   
void Pausa (unsigned Periodo)
/* Hace una pausa*/
{
   unsigned Delay, Del2;
   for(Delay = Periodo ; --Delay ;)
      for(Del2 = 100 ; --Del2 ;) continue;
}

Desconectado roc364

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 108
RE: Dudas sobre C
« Respuesta #1 en: 22 de Noviembre de 2005, 20:18:00 »
hola racalcar!  
Ese es el tema con C. No hay una sola manera de hacer una cosa! hay muchas!! dependiendo del programador,claro.
A simple vista tu codigo es perfectamente potable para pasarlo a CCS, con muy pocas modificaciones.
Te recomiendo que estudies solamente un poco mas el CCS y su ayuda, que es muy potente y vas a ver que en menos de lo que te imaginas lo vas a hacer vos solo. por supuesto cuando tengas una duda pregunta aca en el foro tambien!!
suerte!!
Hay solo 10 tipos de personas, los que entienden el codigo binario, y los que no.

Viva La Patagonia Argentina!!


 

anything