TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: antoniojdobarro 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);
}
-
O alguna idea para que realice alguna acción mientras pulso alguna tecla?
-
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
-
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.
-
Si, lo de korpatztk no funcionaria.
Mira a ver si te sirve esto:
#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;
}
}
}
-
Solucionado, muchas gracias
-
tienen razon , despues me di cuenta del error :?, y bueno hay tiempo de aprender siempre jeje
Saludos.