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;
}