Hola a todos, tengo un problema con el siguiente programa y es que no me entra en la interrupcion de la uart (enviandole cosas) , he probado el codigo sin las interrupciones y si que funciona (poniendo el codigo directamente en el programa principal).
A ver si me podeis echar una mano, el programa es para el control de una puerta por serie, si llega una cadena especifica se abre, es parecido a un transponder, evidentemente le enganchare un aparatito de Aurel para hacerlo inalambrico.
Gracias.
#include <16f628A.h>
#fuses HS,NOWDT,NOPROTECT,PUT
#use delay (clock=20000000)
#use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1)
#define P_Salida PIN_B5 //Led Verde
int ent[3]; //Bufer de llegada
int Salida=0; //Variables para temporizar
#int_RDA //Rutina para el servicio de Interrupción
void RDA(){
if(kbhit()){
if(ent[2]=='A' && ent[1]=='A' && ent[0]=='A'){ // MAMA
Salida=10; // Inicio de contadores
OUTPUT_BIT(P_Salida,1);
ent[2]=0; // Nos aseguramos de que no lo vuelva a interpretar
}
ent[0]=ent[1];
ent[1]=ent[2];
}
}
void main(){
OUTPUT_BIT(P_Salida,1);
delay_ms(1000);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
OUTPUT_BIT(P_Salida,0);
while(1){ //Bucle principal control de las salidas
delay_ms(1000);
if( Salida>0 )
Salida--;
else OUTPUT_BIT(P_Salida,0); // Cerramos la puerta hace mas de 10 segundos que no recive
}
}
PD: Este foro nuevo esta mucho mejor que el otro.
