Tengo dos PIC16F628A. uno para transmisor y otro para receptor ... (433 MHz) Puse los pines B como entrada para usar el transmisor y el receptor ...
Los códigos están escritos en mikroC.
Aquí está el código para el transmisor:
void main() {
trisb = 1;
portb = 0;
cmcon = 7;
UART1_Init(9600);
delay_ms(1000);
while(1){
UART1_Write_Text('a');
delay_ms(1000);
UART1_Write_Text('b');
delay_ms(1000);
}
}
Aquí está el código para el receptor:
void main() {
trisb = 1;
trisa = 0;
portb = 0;
porta = 0;
cmcon = 7;
UART1_Init(9600);
delay_ms(100);
while(1){
if(UART1_Data_Ready()){
if(UART1_Read() == 'a') porta.b1 = 1;
if(UART1_Read() == 'b') porta.b1 = 0;
}
}
}
Quiero encender el led cuando recibo el mensaje 'a' del transmisor y el led se apaga cuando se recibe el mensaje 'b'. El led está conectado a 18.pin (porta.b1).
EDIT
No tengo proteus. Por eso dibujé el diagrama de los circuitos en un papel.
EDIT2Logréencenderelled,peroenestemomentonoenciendedeacuerdoconmideseo.
Elproblemaquedijeessobreelbajoconsumodeenergíadelabatería,creo.
Ahora,trabajoconotrasbateríasparaobtenersuficienteenergía...
Nuevocódigodereceptor:
charx;voidmain(){trisb=0xFF;trisa=0;trisa.b5=1;//MCLRpiniiçincmcon=7;porta=0;porta.b5=1;UART1_Init(9600);delay_ms(100);while(1){if(UART1_Data_Ready()){x=UART1_Read();if(x=='a')porta.b1=1;if(x=='b')porta.b1=0;}}}
Nuevocódigodetransmisor:
voidmain(){trisb=0xFF;trisa=0;trisa.b5=1;//MCLRporta=0;porta.b5=1;//MCLRcmcon=7;UART1_Init(9600);delay_ms(100);while(1){UART1_Write_Text("a");
delay_ms(1000);
UART1_Write_Text("b");
delay_ms(1000);
}
}
De acuerdo con estos códigos, el led debe encenderse durante 1 segundo y apagarse durante 1 segundo ...
Pero no fue así. Cuando toco los cables que están conectados al receptor, el LED se enciende o apaga.
A veces lo hace sin tocar ...
Incluso si el circuito del transmisor está desactivado, el led en el circuito del receptor se enciende o apaga ...
No tiene una iluminación específica en el tipo. Lo hace de acuerdo a su decisión.