Siguiendo el hilo de lo que comenta Sispic, tengo un par de preguntitas.
En el programa que os pongo más abajo, se desea que cada vez que se reciba un caracter del terminal vía serie, se le reenvie al mismo y además que un led situado en RB4 cambie de valor.
#include <16f84.h>
#use delay(clock=4000000)
#use RS232(BAUD=9600, BITS=8, PARITY=N, XMIT=PIN_B4, RCV=PIN_B5, RESTART_WDT)
#use fast_io(B)
#byte port_b=6
main()
{
char a;
short b=0;
while(1)
{
port_b = 0b00010000; // RB4=1 --> TxD a "1". Inactiva.
set_tris_b(0b00100000); // PIN_B4 = Salida(TxD), PIN_B5 = Entrada(RxD)
while(!kbhit()); // Espera a recibir un caracter vía serie
a=getc(); // Recibe un caracter via serie y lo almacena en a
putc(a); // Envía vía serie al terminal el caracter recibido
output_bit(PIN_B4,b);
b=!b;
}
}
Las preguntas son:
- No entiendo porqué para transmitir el caracter al terminal hay que poner obligatoriamente: port_b=0b00010000 y set_tris_b(0b00100000)
- Si pongo esto, el caracter se retransmite bien pero el led no cambia de estado. ¿Qué tengo que poner delante del output_bit(PIN_B4,b) para que la salida del led se active? Si pongo set_tris_b(0b00000000) no va.
Un saludo