es lo que hace esto:
if (input(PIN_A1))
{ // Aca entra si detecto algo
while(input(PIN_A1)); // No cuenta hasta que la señal desaparece ( o paso el objeto )
contador++;
}
Si esta en 1 entra.. y luego se queda esperando en el while hasta que se haga 0 (es decir la entrada se haga 0), cuando se hace cero recien ahi suma 1 y sale del if, no vuelve a entrar hasta que se presione nuevamente A1.
En realidad aqui estarias contando el flanco descendente, pero si cambias de orden el while y contador++ , lo harias en ascendente. pero no cambia nada. Ya que para tener un descendente tenes que tener un ascendente si o si.
Ascendente:
if (input(PIN_A1))
{ // Aca entra si detecto algo
contador++;
while(input(PIN_A1)); //Suma pero no sale hasta que se suelte el boton.
}
Asi que la cuenta deberia estar bien. Lo unico que puede pasar es que no tengas un antirebote y cuente varias veces debido a los rebotes, pero le agregas un delay y se soluciona.
Ascendente y con delay por si existe algun rebote y hace que cuente mas de 1 cuando lo presionas.
if (input(PIN_A1))
{
delay_ms(20); // Aca entra si detecto algo
contador++;
while(input(PIN_A1)); // Cuenta 1 pero no sale hasta que se suelte el boton
}
lo que no me va es lo del contador ya que no sé introducirlo
A que te referis con que no te va lo del contador?, introducirlo donde ?. Cuenta bien ? suma bien? o suma de a muchos valores por cada ves que presionas ?.
Lo estas simulando? Lo estas probando en fisico ?
Te pregunto para intentar comprender tu problema. Ya que no se cual es exactamente, que es lo que funciona mal ?, que hace el micro?
Lo que yo entendi es: Cuenta 10 pulsos ( flanco ascendente o descendente ) y luego activa RB1 y desactiva RB0, luego vuelve a contar 10 y que sucede ? o hay que resetearlo ? para que comienze todo de vuelta?