Mi código es para mandar una cierta cantidad de veces un ciclo para un motor a pasos, pero cuando entra al for, no manda la señal al motor.
¿Qué debería cambiar?
¿Qué debería cambiar?
C:
#INCLUDE <16f877A.h>
#FUSES XT, NOPUT, NOLVP, NOPROTECT, NOWRT
#USE DELAY (CLOCK=400000)
#iNCLUDE <lcd.c>
#INCLUDE <kbd3.c>
#BYTE TRISB=0x86
#BYTE PORTB=0x06
#BYTE PORTC=0x07
#BYTE TRISC=0x87
char k;
int n1;
int x=1;
int i=0;
void main (void)
{
lcd_init();
kbd_init();
port_b_pullups(TRUE);
PORTC=0x00;
do
{
lcd_gotoxy(1,1);
printf(lcd_putc,"B1 90 B2 180 ");
lcd_gotoxy(1,2);
printf(lcd_putc,"B3 270 B2 360");
k=kbd_getc();
n1=k-48;
PORTC=0x00;
while(x==1)
{
k=kbd_getc();
if((k<=52)&&(k>=49))
{
n1=k-48;
delay_ms(500);
x++;
}
}
while(x==2)
{
if(n1==1) //%
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Elegiste 90 Grados ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
for(i=0;i<=90;i++)
{
PORTC=0b00000001;
delay_ms(30);
PORTC=0b00000010;
delay_ms(30);
PORTC=0b00000100;
delay_ms(30);
PORTC=0b00001000;
delay_ms(30);
}
delay_ms(500);
x++;
}
if(n1==2) //%
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Elegiste 180 Grados ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
for(i=0;i<=180;i++)
{
PORTC=0b00000001;
delay_ms(30);
PORTC=0b00000010;
delay_ms(30);
PORTC=0b00000100;
delay_ms(30);
PORTC=0b00001000;
delay_ms(30);
}
delay_ms(500);
x++;
}
if(n1==3) //%
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Elegiste 270 Grados ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
for(i=0;i<=270;i++)
{
PORTC=0b00000001;
delay_ms(30);
PORTC=0b00000010;
delay_ms(30);
PORTC=0b00000100;
delay_ms(30);
PORTC=0b00001000;
delay_ms(30);
}
delay_ms(500);
x++;
}
if(n1==4) //%
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Elegiste 360 Grados ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
for(i=0;i<=360;i++)
{
PORTC=0b00000001;
delay_ms(30);
PORTC=0b00000010;
delay_ms(30);
PORTC=0b00000100;
delay_ms(30);
PORTC=0b00001000;
delay_ms(30);
}
delay_ms(500);
x++;
}
}
while(x==3)
{
delay_ms(5000);
x=1;
}
}
WHILE(TRUE);
}