Hola, hoy estoy programando la comunicación entre 2 microcontroladores, para la que voy a usar el módulo de rf de 433mhz. He probado el sistema en proteus y me sale el siguiente error, al principio de la simulación y cuando envías algún dato. Es cosa del receptor:
PC=0x0040. Indirect write of 0x04 to adress 0x0000 is itself an indirect write
Traducción: la escritura indirecta de 0x04 en la dirección 0x0000 (creo que no estoy utilizando esa dirección ) es en sí mismo una escritura indirecta
Al recibir datos, cambia el 0x04 por cualquier otra cosa.
Y el código es éste:
Ya he estado cambiando algunos parámetros como minimizar el código en la declaración de variables y estado de los puertos pero sigue ocurriendo. ¿Ideas? Muchas gracias.
PC=0x0040. Indirect write of 0x04 to adress 0x0000 is itself an indirect write
Traducción: la escritura indirecta de 0x04 en la dirección 0x0000 (creo que no estoy utilizando esa dirección ) es en sí mismo una escritura indirecta
Al recibir datos, cambia el 0x04 por cualquier otra cosa.
Y el código es éste:
Código:
#include <16f84a.h>
#include <stdlib.h>
#FUSES NOWDT,NOPROTECT,XT
#use delay(clock=4000000)
#byte trisa=getenv("SFR:TRISA")
#byte trisb=getenv("SRF:TRISB")
#byte portb=0x06
#bit OUT=0x05.0
#use rs232(baud=1200, xmit=PIN_B1, rcv=PIN_B2)
int asdf[8]; //El vector donde se van a almacenar los datos que llegan
void main(){
trisb=0b00000100; //Todo salidas menos el pin rcv en puerto B
trisa=0x00; //Todo salidas en puerto A
portb=0x00; //limpio el puerto B
OUT=0; //Limpio el pin que voy a usar como indicador
while(1){
gets(asdf); //Coge lo que te llegue y almacenalo
if((asdf[1]==64)&&(asdf[3]==64)){ //Si el primer y ultimo caracter es '@'
if(asdf[2]==97){ //Y si el intermedio es 'a'
OUT=!OUT; //Cambia el estado de la salida
}
}
}
}
Ya he estado cambiando algunos parámetros como minimizar el código en la declaración de variables y estado de los puertos pero sigue ocurriendo. ¿Ideas? Muchas gracias.