Estoy usando un PIC16F877A y estoy leyendo su valor ADC y enviándolo al puerto serie. Estoy parpadeando con un LED para poder determinar si el programa está bloqueado o no. Desafortunadamente, no puedo ver ningún dato en el puerto a través de Hyperterminal. Sin embargo, si pruebo mi código en Proteus, veo datos en el terminal virtual. Sé que el hardware está diseñado correctamente porque es un kit de prueba comercial.
Creo que hay un problema con la configuración del cristal.
También confirmé que el cable funciona, porque uso el mismo para mi programador y este hardware. Estoy usando el compilador de imágenes Mikro C, con la frecuencia establecida en 4MHz. Intenté editar mi proyecto y establecer el oscilador en HS y XT, pero los resultados son los mismos. ¿Qué está mal?
char text[7];
void main() {
unsigned int adc_value =0;
UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize
ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = 0xFF; // PORTA is input
TRISC = 0; // PORTC is output
TRISB = 0; // PORTB is output
PORTB = 0;
UART1_Write_Text("Start");
Delay_ms(100);
do
{
PORTB.B3 = ~PORTB.B3;
adc_value = Adc_Read(0); // Get results of AD conversion
IntToStr(adc_value, text);
UART1_Write(10);
UART1_Write(0x90);
UART1_Write_Text(text);
UART1_Write_Text("\r\n");
Delay_us(200);
// PORTB = adc_value; // Send lower 8 bits to PORTB
PORTC = adc_value >> 8; // Send 2 most significant bits to RC1, RC0
Delay_ms(100);
} while(1);
}