Ya no me marcó error, pero no despliega lo que quiero. Completé el Switch:
#include<16f887.h>
#use delay(clock = 4MHz)
#use standard_io(D)
#fuses INTRC, NOWDT, NOBROWNOUT, NOLVP
#include<LCD.c>
#define use_portd_lcd TRUE
void despliega(char sec, char dyr)
{
lcd_gotoxy(2, 1);
printf(lcd_putc, "%s", sec);
lcd_gotoxy(2, 9);
printf(lcd_putc, "%s" dyr);
}
void rut(int8 dyr, char vector[], int8 h, int8 n_pas, int16 t)
{
}
void main()
{
int8 vel, vela = 0, n_pas, n_pasa = 0, paso;
int16 t_int;
char secu[10], dire[10];
float t;
char upc[4]={1, 2 ,4 , 8};
char upm[8]={1, 3, 2, 6, 4, 12, 8, 9};
char udp[4]={9, 3, 6, 12};
setup_adc(ADC_CLOCK_INTERNAL);
SETUP_ADC_PORTS(sAN0|sAN1);
lcd_init();
lcd_gotoxy(1, 1);
printf(lcd_putc, "Pasos");
for(;
{
set_adc_channel(0);
vel = READ_ADC();
set_adc_channel(1);
n_pas = READ_ADC();
if((n_pas != n_pasa) || (vel != vela))
{
n_pasa = n_pas;
vela = vel;
t = 1.0-(1.57086614*(vel - 255.0));
t_int = t; // Parte entera de t
}
paso = input_c() & 0x3f;
switch(paso)
{
case 1:
secu[8] = "Simple";
dire[4] = "Der";
despliega(secu, dire);
rut(0, upc, 4, n_pas, t_int);
break;
case 2:
secu[8] = "Simple";
dire[4] = "Izq";
despliega(secu, dire);
rut(1, upc, 4, n_pas, t_int);
break;
case 4:
secu[8] = "Medio";
dire[4] = "Der";
despliega(secu, dire);
rut(0, upm, 8, n_pas, t_int);
break;
case 8:
secu[8] = "Medio";
dire[4] = "Izq";
despliega(secu, dire);
rut(1, upm, 8, n_pas, t_int);
break;
case 16:
secu[8] = "Par D.";
dire[4] = "Der";
despliega(secu, dire);
rut(0, udp, 4, n_pas, t_int);
break;
case 32:
secu[8] = "Par D.";
dire[4] = "Izq";
despliega(secu, dire);
rut(1, udp, 4, n_pas, t_int);
break;
default:
lcd_gotoxy(1, 2);
printf(lcd_putc, "Elige una opcion");
break;
}
delay_ms(500);
}
}