Interrupción RS-232 en PIC C de CCS

Mira dejo el código fuente que uso y la simulación , el programa al dar inicio recibe la letra del case y saca el mensaje, pero intento enviar el otro dato y no lo realiza.
No sale del while, y eso que dentro del while está el getc()
¿ Cómo podría solucionar ?
 

Adjuntos

  • CALLE.rar
    28.1 KB · Visitas: 9
Lo que sucede es que después de ocurrir la interrupción el programa continuará exactamente justo en el lugar en donde fue ejecutada.
Como existen varios bucles, entonces se tendrán que cumplir para que se retome el nuevo valor asignado en la interrupción.
Una solución sería verificar durante los bucles si el valor ha cambiado.
Por ejemplo: if(valor != '1') break;
Y en un caso extremo... if(valor != '1') reset_cpu();
 
No soy experto en programación pero tal vez deberías de cambiar la estructura de tu código, ejemplo:
Código:
#INT_RDA
void LETRERO(){
valor=getc();//recibe el dato del pc y lo guarda en valor

Void main{
codigo

  While(true){
    switch (valor){
       case '1':
         codigo;
         break;
        
          case '2':
         codigo;
         break;}
}
}
 
Lo que sucede es que después de ocurrir la interrupción el programa continuará exactamente justo en el lugar en donde fue ejecutada.
Como existen varios bucles, entonces se tendrán que cumplir para que se retome el nuevo valor asignado en la interrupción.
Una solución sería verificar durante los bucles si el valor ha cambiado.
Por ejemplo: if(valor != '1') break;
Y en un caso extremo... if(valor != '1') reset_cpu();


Gracias, funciono a la perfeccion
Mensaje automáticamente combinado:

No soy experto en programación pero tal vez deberías de cambiar la estructura de tu código, ejemplo:
Código:
#INT_RDA
void LETRERO(){
valor=getc();//recibe el dato del pc y lo guarda en valor

Void main{
codigo

  While(true){
    switch (valor){
       case '1':
         codigo;
         break;
       
          case '2':
         codigo;
         break;}
}
}
lo intente hacer y genera problemas, cree void y estoy sacando 22 msj, pero aun asi llevo muchas lineas de codigo
Mensaje automáticamente combinado:

Gracias, funciono a la perfeccion
Mensaje automáticamente combinado:


lo intente hacer y genera problemas, cree void y estoy sacando 22 msj, pero aun asi llevo muchas lineas de codigo
mira este es el codigo que genere
 

Adjuntos

  • enviar datos.rar
    2.6 KB · Visitas: 12
lo intente hacer y genera problemas, cree void y estoy sacando 22 msj, pero aun asi llevo muchas lineas de codigo
Ok, veo que tu código es mucho mas extenso y que estas utilizando casi toda la memoria rom del pic, se podría optimizar creando subfunciones que sean iguales en todas tus funciones principales.
Te paso un código de como lo haría yo, no se si funciona en físico, pues no tengo los materiales para probar pero tal vez te sirva de base para mejorar y optimizar tu proyecto.
 

Adjuntos

  • CALLE1.rar
    41.5 KB · Visitas: 17
Atrás
Arriba