y te comento que ese retardo lo puse porque según lo que leí decía que el ser humano al pulsar un pulsador puede tener mas de un pulso y eso es un retardo para esperar que lo suelte según jejejeje
Exacto nuevo mundo, por eso mismo yo tambien deje el retardo ese. Si tu boton por fuera posee un "antirebote" realizado con una resistencia y un capacitor entonces no vale la pena hacerlo por software. Pero me quise asegurar.
Pero con lo que me dijiste que algo complicado que el programa aga lo que quiero por el retardo
El retardo no es el problema, el problema es que tenes un espacio de tiempo muy pequeño es decir entre que este RB0 en 0 a pasar a 1 son 40ms. Tal ves te funcione por que tu programa no tiene mas nada. Pero apenas escribas un par mas de cosas vas a notar que deja de funcionar. Actualmente para que funcione una persona deberia presionar justo en el momento anterior al if que pregunta por RB0 y soltarlo dentro de los 40ms siguientes. Lo cual es complejo que suceda.
Pero como decia, funciona por que no tenes otras instrucciones dentro, lo cual la mayor parte del tiempo se lo pasa en la demora, con una posibilidad mayor que cuando soltes este dentro de esa demora.
quiero hacer es lo que se llama interrupción o hay alguna técnica para hacerlo
La tecnica es lo que explica w3-sistemas, y si necesitas usar una interrupcion. Una interrupcion es algo que mientras esta corriendo el "main" deja de hacer eso, ejecuta la funcion de la interrupcion, y vuelve donde dejo. Supongamos que el micro estaba en la funcion main y ejecutando un delay_ms(50), la interrupcion se produce a causa de un pin externo cuando recien van 20ms de ese delay, ejecuta la funcion de interrupcion, sale de esa funcion, y continua con los 30ms restante que le faltaban y luego con el programa del "main".
HOLA A TODOS, YO PROGRAMO EN "C"......
Exacto w3-sistemas, si la idea es tener el mejor codigo posible, entonces lo conveniente es usar un timer y cada tanto leer las entradas para ver cuales cambiaron y actuar en consecuencia. Hacer esto trae un "antirebote" de forma natural, ya que vas a estar leyendo cada 10 milisegundos por ejemplo. Especialmente en un teclado donde no se necesita gran velocidad.
El tema es que el usuario "nuevo mundo" esta recien comenzando a programar en C, y tratar de hacer eso significa que ademas de conocer el lenguaje C, deberia conocer interrupciones y el timer. Por eso no intente ir a algo tan complejo, y por eso mismo dije en mi post sobre el codigo que propuse
Es una solucion como para algo "simple".Trata para la proxima no escribir todo en mayuscula, es una "norma" impuesta por internet que significa para el lector como si estuvieras "gritando".