TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: lxlDeMolxl en 18 de Noviembre de 2011, 12:00:02

Título: Comunicacion Serial
Publicado por: lxlDeMolxl en 18 de Noviembre de 2011, 12:00:02
Buenas.
Tengo una duda, estoy tratando de simular la comunicación serie mediante el modulo USART del PIC16F877A, tengo este código para la recepcion de datos del PIC:


#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT,NOCPD,NOWRT
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7, bits=8, parity=N)

char coor=0;

#int_rda
void serial_isr()
{
    coor=getc();
}

void main()
{
   TRIS_B=0x00;       // config. todo el puerto como salida
            // 1 es entrada y 0 es salida

   port_B=0;          // blanquea el puerto (Apaga LED en RB0)
   
   enable_interrupts(global);
   enable_interrupts(int_rda);

   while(TRUE)
   {
     if(coor!=0)
     {
         RB0=1;               // Enciende LED en RB0
         delay_ms(1000);             // Retardo de 1s
         
     }
   
   }

Como se puede observar se trata de un programa que al recibir un numero distinto de "0" encienda un LED.
Pero al momento de simular en el proteus, no puedo escribir nada en el VIRTUAL TERMINAL, por lo que el PIC no responde.
Cual es el error??
Adjunto una imagen del circuito.
Espero su respuesta

Título: Re: Comunicacion Serial
Publicado por: MerLiNz en 18 de Noviembre de 2011, 13:10:16
el max232 no es necesario ponerlo, aun asi, pon el virtual terminal en el TX y RX del pic no del max232 a ver si asi funciona.
Título: Re: Comunicacion Serial
Publicado por: DominusDRR en 30 de Noviembre de 2011, 18:22:04
Tu led está polarizado al revés. Así nunca se va a encender...