lunes, 17 de mayo de 2010

codigo sentry gun,

/* con este codigo se controlan los dos motores a pasos y tambien se despliega los datos en el puerto D, los dos motores a pasos se encuentran en el puerto B, donde el nibble superior es para el motor que se mueve en Y y el nibble inferior se dejo para el motor que se mueve en X, la secuencia de pasos se despliega en el puerto D.



*/
int i;
int n;
int command;



void main() {
PORTB =0;
TRISB =0;
PORTD =0;
TRISD =0;
Usart_Init(2400);


do {

if (Usart_Data_Ready()) { // If data is received for Y axis
command = Usart_Read();
Usart_Write(command);
}
//++++++++++++++++ condiciones+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (command ==41){ //si es 255
i++;// derecha
n++;// arriba
}
if (command ==64){ //si es 255
i--; //izquierda
n++; // arriba
}
if (command ==22){ //si es 255
i++; // derecha
n--; // abajo
}
if (command ==255){ //si es 255
i--; // izquierda
n--; // abajo
}

if(i>7){i=0;} //resetear contador de dirrección.
if(i<0){i=7;}>
if(n>7){n=0;} //resetear contador de dirrección.
if(n<0){n=7;}

//++++++++++++++++++++++++++++++++ primer motor+++++++++++++++++++++++++++++++++++++++++++
switch (i){
case 0 : PORTB.F0 = 1;
PORTB.F1 = 0;
PORTB.F2 = 0;
PORTB.F3 = 0; break;
case 1 : PORTB.F0 = 1;
PORTB.F1 = 1;
PORTB.F2 = 0;
PORTB.F3 = 0; break;
case 2 : PORTB.F0 = 0;
PORTB.F1 = 1;
PORTB.F2 = 0;
PORTB.F3 = 0; break;
case 3 : PORTB.F0 = 0;
PORTB.F1 = 1;
PORTB.F2 = 1;
PORTB.F3 = 0; break;
case 4 : PORTB.F0 = 0;
PORTB.F1 = 0;
PORTB.F2 = 1;
PORTB.F3 = 0; break;
case 5 : PORTB.F0 = 0;
PORTB.F1 = 0;
PORTB.F2 = 1;
PORTB.F3 = 1; break;
case 6 : PORTB.F0 = 0;
PORTB.F1 = 0;
PORTB.F2 = 0;
PORTB.F3 = 1; break;
case 7 : PORTB.F0 = 1;
PORTB.F1 = 0;
PORTB.F2 = 0;
PORTB.F3 = 1; break;
default : PORTB = 0; break;
}


switch (i) {
case 0 : PORTD.F0 = 1;
PORTD.F1 = 0;
PORTD.F2 = 0;
PORTD.F3 = 0; break;

case 1 : PORTD.F0 = 1;
PORTD.F1 = 1;
PORTD.F2 = 0;
PORTD.F3 = 0; break;

case 2 : PORTD.F0 = 0;
PORTD.F1 = 1;
PORTD.F2 = 0;
PORTD.F3 = 0; break;

case 3 : PORTD.F0 = 0;
PORTD.F1 = 1;
PORTD.F2 = 1;
PORTD.F3 = 0; break;

case 4 : PORTD.F0 = 0;
PORTD.F1 = 0;
PORTD.F2 = 1;
PORTD.F3 = 0; break;

case 5 : PORTD.F0 = 0;
PORTD.F1 = 0;
PORTD.F2 = 1;
PORTD.F3 = 1; break;

case 6 : PORTD.F0 = 0;
PORTD.F1 = 0;
PORTD.F2 = 0;
PORTD.F3 = 1; break;

case 7 : PORTD.F0 = 1;
PORTD.F1 = 0;
PORTD.F2 = 0;
PORTD.F3 = 1; break;
}

//+++++++++++++++++++++++ segundo motor++++++++++++++++++++++++++++++++++++++++++++++++++++++++

switch (n){
case 0 : PORTB.F4 = 1;
PORTB.F5 = 0;
PORTB.F6 = 0;
PORTB.F7 = 0; break;

case 1 : PORTB.F4 = 1;
PORTB.F5 = 1;
PORTB.F6 = 0;
PORTB.F7 = 0; break;

case 2 : PORTB.F4 = 0;
PORTB.F5 = 1;
PORTB.F6 = 0;
PORTB.F7 = 0; break;

case 3 : PORTB.F4 = 0;
PORTB.F5 = 1;
PORTB.F6 = 1;
PORTB.F7 = 0; break;

case 4 : PORTB.F4 = 0;
PORTB.F5 = 0;
PORTB.F6 = 1;
PORTB.F7 = 0; break;

case 5 : PORTB.F4 = 0;
PORTB.F5 = 0;
PORTB.F6 = 1;
PORTB.F7 = 1; break;

case 6 : PORTB.F4 = 0;
PORTB.F5 = 0;
PORTB.F6 = 0;
PORTB.F7 = 1; break;

case 7 : PORTB.F4 = 1;
PORTB.F5 = 0;
PORTB.F6 = 0;
PORTB.F7 = 1; break;
default : PORTB = 0; break;
}


switch (n) {
case 0 : PORTD.F4 = 1;
PORTD.F5 = 0;
PORTD.F6 = 0;
PORTD.F7 = 0; break;

case 1 : PORTD.F4 = 1;
PORTD.F5 = 1;
PORTD.F6 = 0;
PORTD.F7 = 0; break;

case 2 : PORTD.F4 = 0;
PORTD.F5 = 1;
PORTD.F6 = 0;
PORTD.F7 = 0; break;

case 3 : PORTD.F4 = 0;
PORTD.F5 = 1;
PORTD.F6 = 1;
PORTD.F7 = 0; break;

case 4 : PORTD.F4 = 0;
PORTD.F5 = 0;
PORTD.F6 = 1;
PORTD.F7 = 0; break;

case 5 : PORTD.F4 = 0;
PORTD.F5 = 0;
PORTD.F6 = 1;
PORTD.F7 = 1; break;

case 6 : PORTD.F4 = 0;
PORTD.F5 = 0;
PORTD.F6 = 0;
PORTD.F7 = 1; break;

case 7 : PORTD.F4 = 1;
PORTD.F5 = 0;
PORTD.F6 = 0;
PORTD.F7 = 1; break;
}

Delay_ms(500);// delay entre cada paso


}//while
while(1);

} //~! main

No hay comentarios:

Publicar un comentario