Soy nuevo en el foro y necesito de la ayuda posible que puedan darme. El problema es lo siguiente: necesito realizar la comunicación pic a pc, estoy manejando el pic 16f877a, sé que tiene un puerto para transmisión serial, que son los pines c7 para RX y c6 para TX, estoy programando en PIC C compiler y aparentemente no hay nada de difícil en la programación, de hecho uso una función llamada fprintf para sacar datos por el puerto, he configurado el puerto serial y le he puesto un "stream", le puse COM1, sin embargo cuando grabo el .HEX en el pic no sale lo que debería, este es mi código, no sé si hay algo mal con ello:
#include "C:\Documents and Settings\Luis Alberto\Mis documentos\Pic 16f877a\Ejemplo 1 Pic C\Ejemplo10.h"
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=COM1)
// TODO: USER CODE!!
delay_ms(10);
fprintf(COM1,"Instituto tecnologico de Tuxtla Gutierrez");
delay_ms(50);
fprintf(COM1,"Prueba de comunicación");
delay_ms(50);
}
Había probado utilizando la función kbhit, la cual la tenía dentro de un if, y cuando recibiera la primera tecla, mandaba un mensaje, y ahí si funcionó pero el mensaje salía incompleto muchas veces, el código es el siguiente:
while(1)
{
if(kbhit(COM1))
{
fprintf(COM1,"Hola mundo");
delay_ms(1);
}
}
aquí después de que presionaba una tecla, aparecía en el hyperterminal de windows la frase "hola mundo" muchas veces pero a veces la letra "a" no salía, y en su lugar salía otro caracter como "%". Por favor necesito saber que pasa, si hay algo más que deba de configurarse en el puerto serial o tiene que ver el "delay" que le pongo.