Eae pessoal beleza? Ainda sou iniciante em microcontroladores, então, fiz um projeto com motor de passo simples, mas queria implementar esse projeto travando o motor(1 dos fios acionados) quando o motor de por exemplo 20 passos na esquerda(S1) e travar, e só destravar quando apertar para direita(S2)... já tentei algumas coisas mas sem sucesso...
*
#define S1 PORTA.RA1
#define S2 PORTA.RA0
#define S3 PORTA.RA7
#define S4 PORTA.RA6
#define M1 PORTB.RB7
#define M2 PORTB.RB6
#define M3 PORTB.RB5
#define M4 PORTB.RB4
unsigned short sequencia = 0x00;
unsigned short motor[] = {0x10, 0x20, 0x40, 0x80};
unsigned short ii = 0;
void main()
{
CMCON = 0x07; //desabilita comparadores
TRISA = 0xFF; //ENTRADA
TRISB = 0x00; //SAÍDA
PORTA = 0x00; //INICIA EM NIVEL BAIXO
PORTB = 0x00; //INICIA EM NIVEL BAIXO
while(1)
{
if(S1)
{
PORTB = motor[sequencia];
sequencia++;
delay_ms(10);
if(sequencia >= 4){sequencia = 0;}
}
if(S2)
{
PORTB = motor[sequencia];
sequencia--;
delay_ms(10);
if(sequencia == 255){sequencia = 3;}
}
}//FIM while
}//FIM void main
E mais coisa teria como eu colocar algo assim sequencia*20 (motor der 20 passos)direto sem precisar colocar no while os 20 passos, isso seria uma correção de posição... Obg