TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cristianmerz en 20 de Abril de 2005, 09:38:00
-
Hola.
Estoy trabajando con un 16F84A y MAX232 para comunicaciones RS232 con la PC.
Ahora tengo un problema...arme el siguiente programa y envia datos:
#include <16F84.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=4000000)
#define Tx PIN_B5 // PIN de Transmisión
#define Rx PIN_B6 // PIN de Recepción
#use rs232(baud=9600, xmit=Tx, rcv=Rx)
void main() {
int contador;
set_tris_b(0b01000000);
while (true) {
// putc("H");
printf("Hola. Estoy vivo!!!
"
;
while(--contador!=0)
delay_us(100);
};
Aunque no logro recibir.....claro que con este programa no voy a poder porque no tengo lectura de datos, pero lo que no entiendo es como poner el Pin B6 como entrada, ya que por mas que al set_tris_b le ponga 0xFF o 0x00...los datos los envia igual...digamos que ni me tira el error por mas que declare al port b todo como entrada de datos.
Esto lo estoy monitoreando con dos leds uno en cada pin TX y TX con resistencias de 470 ohm.
Me podrian dar una idea como hago para dejarlo como hago para declarar bien la entrada y salida de datos, y que como le puedo agregar a mi programa una rutina para verificar que los datos llegan.
Desde ya muchas gracias.
-
Puedes usar getc() para recibir, mira la ayuda del C y encontraras ademas sugerencias y ejemplos de uso...

-
Claro, pero me refiero.
Para que se usa set_tris_b si ponga lo que ponga anda de la misma forma...no cambia nada si le pongo todo cero o todo 1......
Me queda enviando a la PC sin problemas :P
-
El set_tris_b para los pines de Tx y Rx creo que no hace falta, al haberlos definido en el #use rs232(baud=9600, xmit=Tx, rcv=Rx)
Un saludo