Autor Tema: problemas con la directiva kbhit()  (Leído 2117 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Ric555

  • PIC10
  • *
  • Mensajes: 37
problemas con la directiva kbhit()
« en: 24 de Abril de 2004, 11:00:00 »
Hola a todos/as,
Estoy haciendo un programa para un 16f84 con un reloj de 4 Mhz,

Cuando meto la directiva kbhit() para ver si se recibe algo, no me hace lo que yo quiero, la estructura del programa es la siguiente

#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#use rs232(baud=2400, parity=N, BITS=8, xmit=PIN_B6, rcv=PIN_A3, RESTART_WDT)

SET_TRIS_B(0b10111110) ;
SET_TRIS_A(0b01000) ;

PORT_B_PULLUPS (TRUE);
.
.
.
BUCLE
.
Entrada = " ";
if (kbhit())      {Entrada = getc();}              

if(Entrada=="K") {
Proceso_uno();
}
ELSE
{
Proceso_dos();
}
.
.
.
FIN BUCLE


Sólo se ejecuta cuando le entra "K" Proceso_uno, si le entrara otra cosa Proceso_dos() no se ejecuta.

Sin embargo si quito la sentencia kbhit() Proceso_dos si se ejecuta.


Tambien si le meto el #use fast_io(A) o B no me funciona el programa


¿Alguna sugerencia?

Muchas gracias de antemano

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: problemas con la directiva kbhit()
« Respuesta #1 en: 24 de Abril de 2004, 12:21:00 »

mude isto:
#use rs232(baud=2400, parity=N,  xmit=pin_b6, rcv=pin_a3)

Desconectado Ric555

  • PIC10
  • *
  • Mensajes: 37
RE: problemas con la directiva kbhit()
« Respuesta #2 en: 24 de Abril de 2004, 19:20:00 »
Al final he probado con esto y me funciona

if (!input(PIN_A3))
{
Entrada = getc();
}

if(Entrada=="K") {
Proceso_uno();
}
ELSE
{
Proceso_dos();
}


Lo que no tengo claro es lo que pone Ginho_rj  de esa modificación en el #use de quitar el número de bits y el restart_wdt


 

anything