Buenas a todos. Hace unos dias que estoy con un proyecto de mover 2 motores paso a paso y controlar un lcd. Primero hice los motores en un 16f628 y ningun problema. Ahora, para añadirle en lcd,he cambiado a un 16f873A. Segun la simulacion de proteus, todo esta correcto pero estoy haciendo las pruebas en placa y ni si quiera me enciende un led que tengo cuando se enciende todo. Haber si alguien puede ayudarme un poco.
Gracias de antemano.
#include <16F873A.h>
#device adc=8
#FUSES NOWDT, XT, NOPROTECT,NOLVP,NODEBUG, BROWNOUT,NOCPD, NOWRT,NOPUT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use fixed_io(A_OUTPUTS=PIN_A0,PIN_A1,PIN_A2, PIN_A3)
#use fixed_io(C_OUTPUTS=PIN_C0,PIN_C1,PIN_C2,PIN_C3,PIN_C5)
#include <LCD.C>
#include <stdlib.h>
unsigned int leche()
{
if(!input(PIN_C4))
{
output_low(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
output_low(PIN_A3);
output_low(PIN_C0);
output_low(PIN_C1);
output_low(PIN_C2);
output_low(PIN_C3);
lcd_putc("
"
;
lcd_putc(" STOP "
;
return(0);
}
else
return(1);
}
void main()
{
unsigned char opcion[3], a[4];
unsigned int i,j, velocidad=150;
port_b_pullups(TRUE);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
lcd_putc("Empezamos"
;
output_high(PIN_C5);
while(TRUE)
{
if ( kbhit () )
{
j=1;
lcd_putc("f"
;
gets(opcion);
if (opcion[1]==" ")
opcion[1]=1;
if (opcion[0]=="V")
velocidad=opcion[1];
putc(opcion[0]);
switch (opcion[0]) //adelante
{
case ("a"):
lcd_gotoxy(1,2);
lcd_putc("Avanza"
;
lcd_gotoxy(8,2);
if (opcion[1]==1)
lcd_putc("1 paso"
;
else
{
itoa(opcion[1],10,a);
for(i=0; i<3; i++)
lcd_putc(a
);
lcd_putc(" pasos"
}
for(i=0; i<opcion[1]; i++)
{
j=leche();
if(j==1)
{
output_low(PIN_A0);
output_low(PIN_C0);
output_high(PIN_A2);
output_high(PIN_C2);
delay_ms(velocidad);
output_low(PIN_A2);
output_high(PIN_A1);
output_low(PIN_C2);
output_high(PIN_C1);
delay_ms(velocidad);
output_low(PIN_A1);
output_high(PIN_A3);
output_low(PIN_C1);
output_high(PIN_C3);
delay_ms(velocidad);
output_low(PIN_A3);
output_high(PIN_A0);
output_low(PIN_C3);
output_high(PIN_C0);
delay_ms(velocidad);
}
else
i=opcion;
}
break;
case ("b")://atras
lcd_gotoxy(1,2);
lcd_putc("Atras "
lcd_gotoxy(7,2);
if (opcion[1]==1)
lcd_putc("1 paso "
else
{
itoa(opcion[1],10,a);
for(i=0; i<3; i++)
lcd_putc(a);
lcd_putc(" pasos"
}
for(i=0; i<opcion[1]; i++)
{
j=leche();
if (j==1)
{
output_low(PIN_A1);
output_high(PIN_A2);
output_low(PIN_C1);
output_high(PIN_C2);
delay_ms(velocidad);
output_low(PIN_A2);
output_high(PIN_A0);
output_low(PIN_C2);
output_high(PIN_C0);
delay_ms(velocidad);
output_low(PIN_A0);
output_high(PIN_A3);
output_low(PIN_C0);
output_high(PIN_C3);
delay_ms(velocidad);
output_low(PIN_A3);
output_high(PIN_A1);
output_low(PIN_C3);
output_high(PIN_C1);
delay_ms(velocidad);
}
else
i=opcion;
}
break;
case ("c")://derecha
lcd_gotoxy(1,2);
lcd_putc("Derecha"
lcd_gotoxy(9,2);
if (opcion[1]==1)
lcd_putc("1 paso"
else
{
itoa(opcion[1],10,a);
for(i=0; i<3; i++)
lcd_putc(a);
lcd_putc(" pasos"
}
for(i=0; i<opcion[1]; i++)
{
j=leche();
if (j==1)
{
output_low(PIN_A0);
output_high(PIN_A2);
output_low(PIN_C1);
output_high(PIN_C2);
delay_ms(velocidad);
output_low(PIN_A2);
output_high(PIN_A1);
output_low(PIN_C2);
output_high(PIN_C0);
delay_ms(velocidad);
output_low(PIN_A1);
output_high(PIN_A3);
output_low(PIN_C0);
output_high(PIN_C3);
delay_ms(velocidad);
output_low(PIN_A3);
output_high(PIN_A0);
output_low(PIN_C3);
output_high(PIN_C1);
delay_ms(velocidad);
}
else
i=opcion;
}
break;
case ("d")://izquierda
lcd_gotoxy(1,2);
lcd_putc("Izquierda"
lcd_gotoxy(11,2);
if (opcion[1]==1)
lcd_putc("1 paso"
else
{
itoa(opcion[1],10,a);
for(i=0; i<3; i++)
lcd_putc(a);
lcd_putc("pasos"
}
for(i=0; i<opcion[1]; i++)
{
j=leche();
if (j==1)
{
output_low(PIN_A1);
output_high(PIN_A2);
output_low(PIN_C0);
output_high(PIN_C2);
delay_ms(velocidad);
output_low(PIN_A2);
output_high(PIN_A0);
output_low(PIN_C2);
output_high(PIN_C1);
delay_ms(velocidad);
output_low(PIN_A0);
output_high(PIN_A3);
output_low(PIN_C1);
output_high(PIN_C3);
delay_ms(velocidad);
output_low(PIN_A3);
output_high(PIN_A1);
output_low(PIN_C3);
output_high(PIN_C0);
delay_ms(velocidad);
}
else
i=opcion[1];
}
break;
}
}
}
}