pic x pic serial

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

pic x pic serial

Mensagempor rebelk » 29 Nov 2007 16:10

alguem poderia me enviar um explo de dois pics se comunicando via rs232 876 > < 877

fkleberp@ibest.com.br
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Re: pic x pic serial

Mensagempor SoMeWhErE » 30 Nov 2007 07:53

se puderem disponibilizar na net....ou me enviar tb......agradeceria

safemate@ig.com.br

Obrigado
Avatar do usuário
SoMeWhErE
Byte
 
Mensagens: 119
Registrado em: 20 Jun 2007 18:09
Localização: Charqueada

Mensagempor fabim » 30 Nov 2007 08:22

NÃO ENTENDI BEM A PEDIDA..

2 pics se comunicando por RS232.. como assim ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor cservidone » 04 Dez 2007 12:09

Segue cod. fonte em C++ para microcont. PIC
Colega, não se esqueça de q essa comunicaçãé assincrona, portanto alem dela vc precisa implementar um protocolo de comunicação.
Abs :shock: :idea:

/************************************************************************/
/* RS232.C Biblioteca de Comunicação serial assíncrona por */
/* software */
/* */
/* Autor: Fabio Pereira */
/* */
/* Velocidade : 9600 Bps, 1 Start, 1 Stop, Sem paridade */
/* */
/* Estas rotinas funcionam sem modificação para velocidades de 9600 e */
/* 19200 Bps. */
/* */
/************************************************************************/

// Definições de comunicação
/*
Para alterar a velocidade de comunicação, basta alterar o valor da
constante baud_rate
*/
#ifndef baud_rate
const long int baud_rate = 9600;
#endif
const int tempo_bit_dado = 1000000/baud_rate-10; // tempo do bit de dado
const int tempo_bit_start = 1500000/baud_rate; // tempo do bit de start

// Definições dos pinos de comunicação
// Para utilizar outros pinos, basta incluir novas definições
// no arquivo do programa onde esta biblioteca for incluída
#bit pino_tx = 0x06.0 // pino de transmissão é o RB0
#bit pino_rx = 0x06.1 // pino de recepção é o RB1
#bit dir_tx = 0x86.0 // direção do pino de tx
#bit dir_rx = 0x86.1 // direção do pino de rx

void rs232_inicializa (void)
{
dir_tx = 0; // pino de tx como saída
pino_tx = 1; // coloca o pino de tx em nível 1
dir_rx = 1; // configura o pino de rx como entrada
}
void rs232_transmite (char dado)
{
boolean result;
int conta;
// primeiro o bit de start
pino_tx = 0;
delay_us(tempo_bit_dado); // aguarda o tempo de start
conta = 8; // são 8 bits de dados
while (conta)
{
// desloca o dado à direita e dependendo do resultado
// seta ou não a saída
if (shift_right ( &dado, 1, 0)) pino_tx=1; else pino_tx=0;
delay_us ( tempo_bit_dado); // aguarda o tempo do bit de dado
conta--; // decrementa um no número de bits a transmitir
}
pino_tx = 1; // seta a saída TX (bit de stop)
delay_us(tempo_bit_dado); // aguarda o tempo de 1 bit
}

char rs232_recebe (void)
{
int conta,dado;
while (pino_rx); // aguarda o bit de start
delay_us(tempo_bit_start); // aguarda o tempo de start
conta = 8; // são 8 bits de dados
dado = 0; // apaga o dado recebido
while (conta)
{
shift_right( &dado, 1, pino_rx); // insere o bit recebido
// deslocando à direita a
// variável com o dado
// recebido
delay_us(tempo_bit_dado); // aguarda o tempo de 1 bit
conta--; // decrementa o número de bits
}
delay_us(tempo_bit_dado); // aguarda o tempo de 1 bit
return dado; // retorna o dado recebido
}
cservidone
 
Mensagens: 4
Registrado em: 05 Nov 2007 23:51


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x