DominusDRR, cordial saludo, gracias por tu interés en ayudarme.
el switch esta muy por debajo en el programa lo que pasa es que lo coloque seguido para no colocar todo el programa que es extenso.
y no coloco el switch dentro de la interrupción ya que la idea es salir rapidito.
( la idea es saber por que se pierde el valor al llegar al switch case) de hecho trato de imprimir la variable y no sale nada, "se pierde el dato"
putc(valor);
int valor=0;
int flag=0;
int1 flag2=0;
char guardar;
//char rol=0;
//char cadena1[20];
// declaracion funciones
void ret1 (); // retardo general secuencias
void secuencia1 ();
#int_RDA
void RDA_isr(void)
{
//valor=0;
if(kbhit())//verifico si el dato ya esta disponible
{
valor=getc();//adquiero el dato
flag=1;
}
}
// VOID MAIN //
void main()
{
SET_TRIS_a(0B00000000);
SET_TRIS_b(0B00000000);
SET_TRIS_c(0B10011111);
SET_TRIS_e(0B1);
setup_adc_ports(NO_ANALOGS);
setup_comparator(NC_NC_NC_NC);
portA=0x00;
portB=0x00;
enable_interrupts(INT_RDA); //HAbilita interrupcion por puerto serial
enable_interrupts(GLOBAL); // Habilita las interrupcciones globales
s=80;
while(TRUE)
{
// VALOR INTERUPCION /
if (flag==1)
{
// if(valor=='a')
// porta=0;
//secuencia3();
//porta=0xff;
// delay_ms(1000);
putc('m');
putc(valor);
switch(valor)// aqui se piede el contenido sde valor
{
case 'a':
// putc('m');
// guardar=valor;
puerto=0;
secuencia1();
break;
case 'b':
puerto=0;
guardar=valor;
secuencia2();
break;