Autor Tema: Mientras no suelte tecla  (Leído 2539 veces)

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

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Mientras no suelte tecla
« en: 12 de Febrero de 2011, 10:48:35 »
El código comprueba si hay un caracter a la entrada del pic a través del RS232, luego comprueba cual es y realiza una determinada acción.

¿Cómo puedo hace en caso de que pulse la tecla "a" que avance y generar un bucle para que no salga de él hasta que levante la tecla?


do{
if(bit_test(PIR,5)){
switch(getchar()){

case 'd':
avance();
break;

case 'a':
retroceso();
break;
}
}
else detencion();

}

while (x<10);
}


Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Mientras no suelte tecla
« Respuesta #1 en: 12 de Febrero de 2011, 11:24:07 »
O alguna idea para que realice alguna acción mientras pulso alguna tecla?

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: Mientras no suelte tecla
« Respuesta #2 en: 12 de Febrero de 2011, 13:43:23 »
yo pondria por ej:

do
{
key = getc();
}while(key == 'a')

y ahi quedaria retenido en ese bucle mientras tengas presionada la tecla a (minuscula)

capaz q t es una pequeña ayuda, o capaz q mal entendi tu pregunta... si no es asi, sigue preguntando jeje capaz q t puedo dar una mano d vuelta


Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Mientras no suelte tecla
« Respuesta #3 en: 13 de Febrero de 2011, 02:40:42 »
Creo que ese bucle no finalizará hasta que llegue otra tecla diferente a la "a", pero si dejan de llegar caracteres se quedará esperándolos en el getc.

A mi juicio, lo que necesitas saber es con qué frecuencia llegan las letras si se deja pulsada la tecla. Durante el tiempo entre una letra y la siguiente no puedes chequear la entrada porque no vas a encontrar nada, pero debes permanecer a la espera.
Una vez que hayas hecho la espera miras si ha llegado algo, y si es una "a", vuelta a empezar. En caso contrario sales del bucle.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Mientras no suelte tecla
« Respuesta #4 en: 13 de Febrero de 2011, 07:08:45 »
Si, lo de korpatztk no funcionaria.

Mira a ver si te sirve esto:

Código: [Seleccionar]
#include <16F876.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)

#define LCD_DATA_PORT getenv("SFR:PORTB")
#include <lcd.c>

char ch;
int bandera;

#int_rda
void serial_isr()
{
    ch=getchar();
    bandera=1;
}

void main()
{
lcd_init();
   enable_interrupts(global);
   enable_interrupts(int_rda);
while(1) 
{
if(bandera)
{
if (ch=='a')
{
lcd_gotoxy(1,1);
    printf(lcd_putc, "Valor %c",ch);
    }
    else
{
lcd_gotoxy(1,2);
    printf(lcd_putc, "Valor %c",ch);
    }   
    bandera=0;
    }
   }
}


Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Mientras no suelte tecla
« Respuesta #5 en: 13 de Febrero de 2011, 10:42:24 »
Solucionado, muchas gracias

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: Mientras no suelte tecla
« Respuesta #6 en: 13 de Febrero de 2011, 11:58:13 »
tienen razon , despues me di cuenta del error :?, y bueno hay tiempo de aprender siempre jeje
Saludos.
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo


 

anything