TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: antoniojdobarro en 09 de Febrero de 2011, 12:27:24
-
Esto es lo que hace la entrada de un pic, conectado a un Max232, ya que los datos vienen del pc.
void main(void) {
do{
if (kbhit(){ // Si hay una pulsación de tecla
avance();
?????????? // Aquí debería volver kbhit() a FALSE
}
else { //Si no hay pulsación de tecla
detencion();
}
}
while (x<10); // Para que esté leyendo siempre las entradas
}
El problema viene que una vez que recibe una pulsación kbhit() se queda siempre a TRUE luego siempre cumple la condición y corre la subrutina avance.
Donde tengo ???????? debería resetear kbhit() a FALSE y correr la subrutina detencion hasta que nuevamente se pulse una tecla.
Como puedo resetear kbhit(), o devolverlo a su estado inicial?
-
Al detectar Kbhit() hay que leer el buffer del puerto serie, ya que no hay otra forma que entre un nuevo caracter que no sea limpiando ese buffer. :mrgreen: :mrgreen:
-
if (kbhit() && getchar()=='2'){
avance();}
Esta orden significa que si hay una tecla pulsada y la tecla es 2 avanza?
-
No se si getchar() esta bien utilizado así (deberías ver mas en el help) pero si, esa es la idea.
-
hola amigo
en esta web hay buen material de librerias y funciones de C.
Ponle un ojo.
ir a enlace (http://c.conclase.net/borland/?borlandfun=kbhit#inicio).
Un saludo.