Comunicação USART Com PIC
Pesquisas Acadêmicas: Comunicação USART Com PIC. Pesquise 862.000+ trabalhos acadêmicosPor: FADUTH2014 • 18/4/2014 • 1.999 Palavras (8 Páginas) • 1.098 Visualizações
Comunicação Serial UART com PIC
Para enviar dados de qualquer microcontrolador PIC para qualquer dispositivo (seja outro uC, computador e etc) utilizando a interface UART, basta ativar o suporte à comunicação serial do compilador ( #use rs232 ) ou fazer uma inclusão de biblioteca ao seu código ( #include < uart.c >). A única diferença estaria nos comandos para controle da comunicação e inicialização:
-------------------------------
#use rs232 (baud = (velocidade), xmit = (pino tx), rcv = (pino rx) ) // inclui e configura a comunicação
putc (); // envia dado pela porta serial
getc (); // recebe dado pela porta serial
------------------------------
#include < uart.c > // inclui a comunicação (configuração dos pinos é automática)
uart_unicializa ( (UxBRG), 1); // configura velocidade da comunicação (prefira velocidades tabeladas
// como: 9600, 19200, etc
uart_transmite (); // envia dado pela porta serial
uart_recebe (); // recebe dado pela porta serial
------------------------------
Atenção: O UxBRG é a velocidade da comunicação, obtido através do calculo:
UxBRG = Fosc/2
____________ -1
16 * Baud Rate
Exemplo simples para melhor entendimento:
___________________________________________________
Código do Chip 1 :
#include < 16f628a.h > // define o microcontrolador utilizado
#use delay(clock=4000000) // define o cristal utilizado
#fuses intrc_io, nowdt, nolvp, nomclr, put // configura os fusíveis
#use rs232(baud=9600 , xmit = pin_b2, rcv = pin_b1) // configura a velocidade da comunicação,
// pino transmissor e pino receptor
main() // inicio do programa
{
while(true) // loop infinito
{
putc ('g'); // envia o caractere "g"
delay_ms(500); // espera 500 milisegundos
putc('r'); // envia o caractere "r"
delay_ms(500); // espera 500 milisegundos
} // volta para o loop
}
Código do Chip 2 :
#include < 16f628a.h > // define o microcontrolador utilizado
#use delay(clock=4000000) // define o cristal utilizado
#fuses intrc_io, nowdt, nolvp, nomclr, put // configura os fusiveis
#use rs232(baud=9600 , xmit = pin_b2, rcv = pin_b1) // configura a velocidade da comunicação,
// pino transmissor e pino receptor
char dado = 0; // variável global de nome "dado"
main() // início do programa
{
while(true) // loop infinito
{
dado = getc(); // "dado" é igual ao que for recebido pela comunicação
if (dado == 'r') output_high(pin_a1), output_low(pin_a3); // se "dado" for "r" seta pino a1 e desliga a3
if (dado == 'g') output_high(pin_a3), output_low(pin_a1); // se "dado" for "g" seta pino a3 e desliga a1
} // volta para loop
}
_____________________________________________
Muito fácil!
Qualquer duvida, poste um comentário que responderei o mais rápido possível.
Postado por Zio Matrix às 05:24
Enviar por e-mailBlogThis!Compartilhar no TwitterCompartilhar no FacebookCompartilhar no OrkutCompartilhar com o Pinterest
Marcadores: Tutoriais
9 comentários:
1.
Anônimosexta-feira, 08 junho, 2012
obrigado,estava tentando uma comunicação serial a muito tempo(1 ano),baixei varios tutoriais,mas não estava entendendo,somente esta explicação simples resolveu meu problema,vlw mesmo e continue ajudando quem precisa!!!
Responder
...