boa tarde galera td bem estou ffazendo uma experiencia no mikroc queria saber se alguem consegue me ajudar eu preciso apertar o botao uma vez e depois nao conseguir mais apertalo ate que eu aperte outro botao e soa apertar esse outro botao uma vez também ate que eu aperte o primeiro novamente talvez uma especie de inter travamento se alguem conseguir me ajudar valeu rapaziada ............
/*PROJETO CONTROLADOR DE MOTOR DE PASSO VERSÃO 2
DESENVOLVIDO POR: FRANCISCO CELSON
DATA:03/02/2020
*/
unsigned int passo =0; // variavel para contagem dos passos
void main()
{
TRISA=1; // PORTA TODO COMO ENTRADA
PORTA=0b11110011; // INICIA RA2 E RA3 EM NIVEL LOGICO BAIXO OS OUTROS EM NIVEL LOGICO ALTO
TRISB=0b00000000; // PORTB TODO COMO SAIDA
PORTB=0; // PORTB TODO EM NIVEL LOGICO BAIXO
CMCON=7; // DESABILITA COMPARADORES
while(1)
{
if (button(&PORTA, 0 ,50 ,0 ) ) // avança --> SE RA0_bit delay 50ms for ==0
{
// open if
for(passo=0; passo<500; passo++) // lopp finito para contagem dos passos
{ // for e verdadeiro ? sim.....
//-------------------------------PASSO 1 ---------------------------------------
RB0_bit=1;
RB1_bit=0;
RB2_bit=0;
RB3_bit=1;
delay_ms(1);
//-------------------------------PASSO 2 ---------------------------------------
RB0_bit=0;
RB1_bit=1;
RB2_bit=0;
RB3_bit=1;
delay_ms(1);
//-------------------------------PASSO 3 ---------------------------------------
RB0_bit=0;
RB1_bit=1;
RB2_bit=1;
RB3_bit=0;
delay_ms(1);
//-------------------------------PASSO 4 ---------------------------------------
RB0_bit=1;
RB1_bit=0;
RB2_bit=1;
RB3_bit=0;
delay_ms(1);
} // end for
if( passo>=500 ) // se a minha variavel for maior que o valor de passos
{ // desliga motor
RB0_bit=0;
RB1_bit=0;
RB2_bit=0;
RB3_bit=0;
}
// end if
} // end if botão avança
//=================================================================================
if (button(&PORTA, 1 ,50 ,0 )) // retorna --> SE RA1_bit delay 50ms for ==0
{
// open if
for(passo=0; passo<500; passo++) // loop finito
{ // for e verdadeiro ? sim.....
//-------------------------------PASSO 4 ---------------------------------------
RB0_bit=1;
RB1_bit=0;
RB2_bit=1;
RB3_bit=0;
delay_ms(1);
//-------------------------------PASSO 3 ---------------------------------------
RB0_bit=0;
RB1_bit=1;
RB2_bit=1;
RB3_bit=0;
delay_ms(1);
//-------------------------------PASSO 2 ---------------------------------------
RB0_bit=0;
RB1_bit=1;
RB2_bit=0;
RB3_bit=1;
delay_ms(1);
//-------------------------------PASSO 1 ---------------------------------------
RB0_bit=1;
RB1_bit=0;
RB2_bit=0;
RB3_bit=1;
delay_ms(1);
} // end for
if( passo>=500 ) // se a minha variavel for maior que o valor de passos
{ // desliga motor
RB0_bit=0;
RB1_bit=0;
RB2_bit=0;
RB3_bit=0;
}
} // end if botão retorna
} // end while
}
// end void main