Estoy probando dos códigos distintos para comunicarse 2 pic 16f877a mediante Rx/Tx, pero no me funciona correctamente, podeis ayudarme?
Cuando lo inicializo, el que recibe el mensaje comienza a funcionar dando el mensaje BAD correctamente, pero cuando pulso el boton del micro que envia el mensaje por el pin_a1, el codigo se bloquea, estoy simulando todo atraves de proteus, pero es que el código es muy simple....He comprobado las variables con los .cof y cuando pulso el boton pin_a1 la variable d cambia correctamente, pero el codigo que se queda bloqueado, no continua y el proteus no da ningun error, ni de saturacion de CPU, ni de nada....
Código del micro que envia el mensaje:
#include <16f877a.h>
#fuses hs,nowdt,noput
#use delay(clock=20000000)
#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7)
void main(){
set_tris_a(0b00011110);
while(true){
if (input(pin_a1)== 1) {
printf("dato");
delay_ms(300);
}
}
}
Código del que recibe el mensaje:
#include <16f877a.h>
#include <string.h>
#fuses hs,nowdt,noput
#use delay(clock=20000000)
#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7)
char a[5] ="dato";
char d[5];
#int_rda
void coge_datos(){
d="0000";
if(kbhit()){
gets(d);
d[4]='\0';
}
}
void main(){
enable_interrupts(global);
enable_interrupts(int_rda);
while(true){
if(strcmp(d,a)==0){ printf("GOOD\n\r");
}else{ printf("BAD\n\r");
}
}
}