Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, tenia un problema en css, y es que no me funcionan bien las ordenes que le mando. Estaba usando el skybot de prueba pero al compilarlo en css no se porque me va mal(uso la tarjeta ct293). Tengo dudas en que quiza pueda ser esta linea #use fast_io(B). La verdad es que nunca entendi lo de use standard_io,fast_io,fixed_io...alguien me lo podria explicar? Los valores hexadecimales los comprobe y estan bien. El codigo que hicees el siguiente:
#include <16F876a>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=20000000)
#use rs232(baud=19200, xmit=pin_C6, rcv=pin_C7)
#use fast_io(B)
#use fast_io(C)
//-- Definiciones para los motores. Estos valores define
//-- los movimientos del robot
#define AVANZA 0x18
#define ATRAS 0x78
#define IZQUIERDA 0x58
#define DERECHA 0x38
#define STOP 0x00
void main(void)
{
unsigned char tecla;
set_tris_c(0x80);
set_tris_b(0x85);
printf("Menunr");
printf("----nr");
printf("q.- adelantenr");
printf("a.- atrasnr");
printf("o.- izquierdanr");
printf("p.- derechanr");
printf("ESPACIO.- Pararnr");
while(true)
{
output_b(STOP); //INICIALMENTE PARADO
tecla=getc();
putc(tecla); // eco de lo que recibo
switch(tecla)
{
case 'q': //-- Adelante
output_b(AVANZA);
break;
case 'a': //-- Atras
output_b(ATRAS);
break;
case 'o': //-- Izquierda
output_b(IZQUIERDA);
break;
case 'p': //-- Adelante
output_b(DERECHA);
break;
case ' ': //-- Adelante
output_b(STOP);
break;
default:
output_b(AVANZA);
break;
}
}
}
Un saludo y gracias.
Hola, tenia un problema en css, y es que no me funcionan bien las ordenes que le mando. Estaba usando el skybot de prueba pero al compilarlo en css no se porque me va mal(uso la tarjeta ct293). Tengo dudas en que quiza pueda ser esta linea #use fast_io(B). La verdad es que nunca entendi lo de use standard_io,fast_io,fixed_io...alguien me lo podria explicar? Los valores hexadecimales los comprobe y estan bien. El codigo que hicees el siguiente:
#include <16F876a>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=20000000)
#use rs232(baud=19200, xmit=pin_C6, rcv=pin_C7)
#use fast_io(B)
#use fast_io(C)
//-- Definiciones para los motores. Estos valores define
//-- los movimientos del robot
#define AVANZA 0x18
#define ATRAS 0x78
#define IZQUIERDA 0x58
#define DERECHA 0x38
#define STOP 0x00
void main(void)
{
unsigned char tecla;
set_tris_c(0x80);
set_tris_b(0x85);
printf("Menunr");
printf("----nr");
printf("q.- adelantenr");
printf("a.- atrasnr");
printf("o.- izquierdanr");
printf("p.- derechanr");
printf("ESPACIO.- Pararnr");
while(true)
{
output_b(STOP); //INICIALMENTE PARADO
tecla=getc();
putc(tecla); // eco de lo que recibo
switch(tecla)
{
case 'q': //-- Adelante
output_b(AVANZA);
break;
case 'a': //-- Atras
output_b(ATRAS);
break;
case 'o': //-- Izquierda
output_b(IZQUIERDA);
break;
case 'p': //-- Adelante
output_b(DERECHA);
break;
case ' ': //-- Adelante
output_b(STOP);
break;
default:
output_b(AVANZA);
break;
}
}
}
Un saludo y gracias.rashii lo que veo en tu codigo es que despues de pulsar una tecla entra en el switch y cambia la salida e inmediatamente salta al inicio del while donde pones la salida en STOP y no le das tiempo a que se realize la accion seleccionada dentro de switch.
tendrias que agregarle un delay antes de salir de cada CASE y asi creo que te funcionara.
alepic
uff que fallo mas tonto era por esta linea output_b(STOP); //INICIALMENTE PARADO que la habia metido en el while sin darme cuenta....gracias 🙂