//****************************************************************************************************************************************************
// comunicação rs-485
//
// Data: 14/12/2007
// Autores: Aguivone
// descrição : quando receber a palavra "valor" acende um led.
//****************************************************************************************************************************************************
#include <16F628A.h>
#fuses NOWDT,XT,PUT, NOPROTECT,NOBROWNOUT, NOLVP, NOCPD,NOMCLR
#use delay(clock=4M)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,enable=PIN_B0)
#locate rx_reg = 0x1A
char rec[7],palavra[7]={"valor"},caracter;
int n,i;
//......................................
// interrupção
//......................................
#int_RDA
void recebido(void)
{
caracter = rx_reg;
if(caracter =='*')
{
n=2;
rec[i]=0;
}
if(n==1)
{
rec[i]=caracter;
i++;
}
if(caracter =='#')
{
n=1;
i=0;
}
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// rotina principal
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void main(void)
{
port_b_pullups(FALSE);
enable_interrupts(global);
enable_interrupts(int_rda); //interrupção de recebimento
for(;;)
{
if(n==2)
{
disable_interrupts(global);
if(strcmp(palavra,rec)==0)
{
output_high(PIN_B4);
delay_ms(500);
output_low(PIN_B4);
rec[0]=0;
rec[1]=0;
rec[2]=0;
rec[3]=0;
rec[4]=0;
rec[5]=0;
rec[6]=0;
n=0;
i=0;
enable_interrupts(global);
}
n=0;
i=0;
enable_interrupts(global);
}
else
{
}
}
}
programa do escravo:
// ****************************************************************************************************************************************************
// comunicação rs-485
//
// Data: 14/12/2007
// Autores: Aguivone
// descrição: envia a palavra "#valor*" a cada 1 segundo,
// ****************************************************************************************************************************************************
#include <16F628A.h>
#fuses NOWDT,XT,PUT, NOPROTECT,NOBROWNOUT, NOLVP, NOCPD,NOMCLR
#use delay(clock=4M)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,enable=PIN_B0)
#locate rx_reg = 0x1A
#include <string.h>
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// rotina principal
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void main(void)
{
port_b_pullups(FALSE);
disable_interrupts(global);
for(;;)
{
printf("#valor*");
delay_ms(1000);
}
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Olá à todos. Conheci o blog hoje, e me serviu muito. No código acima está faltando " #include ", na linha onde tem um " #include" sozinho.
ResponderExcluirFora isso o código funciona direitinho.
Obrigado ao autor, e continue compartilhando conhecimento, pois ajuda muita gente.
Este comentário foi removido pelo autor.
ExcluirO include é string.h , é uma falha do blogger que gera isso.Valeu José Ricardo!
ResponderExcluirBom dia achei o blog muito interessante parabéns, gostaria de saber se tem como postar um exemplo de comunicação rs485 entre dois PIC's um mestre e um escravo através de botões, tipo pressionei o mestre e o escravo executa.
ResponderExcluirAqui no blog tem um exemplo parecido, a proposito basta aplicar o que está neste exemplo para fazer isso!
ExcluirBoa noite Anônimo não consegui encontrar o exemplo que você mencionou, você teria como fazer as modificações nesse código para a aplicação que estou querendo, pressionei um botão no mestre o escravo recebe, executa e informa ao mestre o estado em que se encontra, ou seja habilitado ou desabilitado.
ExcluirMe mande um e-mail acho que tenho um exemplo aqui, aguivone@ibest.com.br
ExcluirOi anônimo te mandei um email. carlosbarata@bol.com.br
ResponderExcluirBom dia anônimo pode enviar o arquivo que enviou para o carlos inter ship para mim também ?? obrigado
ResponderExcluiraca.cafe@bol.com.br