4
 Olá pessoal, Estou querendo transmitir um endereço de 8 bits via modulo RF 433,92 MHz, com um microcontrolador PIC, onde será configurado o endereço através de um chave tipo DIP-SWITCH. Quero ler a porta do PIC e enviar via serial fiz o código abaixo, mas não funcionaou. #include <16F876A.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,XT, NOPUT, NOPROTECT , NODEBUG, NOBROWNOU T, NOLVP,  NOCPD, NOWRT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) char c; short int x; void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); set_tris_a(0b00000001); //Configura o pin RA0 como entrada. set_tris_b(0b11111111); //Configura toda porta B como entrada  port_b_pullups(false); //Quando a chave estiver desativada aterra o pino x = input(pin_a0); x = 0; if(x = 1) c = input_b(); // Lê a port_b e atribui à variável 'c'.  putc(c); // Envia o dado armazenado na variável 'c' pela saída serial . } Felipe_Eletronic 17/08/2009, 16:31 H

PIC RF

Embed Size (px)

Citation preview

Page 1: PIC RF

5/14/2018 PIC RF - slidepdf.com

http://slidepdf.com/reader/full/pic-rf 1/4

Olá pessoal,

Estou querendo transmitir um endereço de 8 bits via modulo RF 433,92 MHz,

com um microcontrolador PIC, onde será configurado o endereço através de um chave

tipo DIP-SWITCH. Quero ler a porta do PIC e enviar via serial fiz o código abaixo, mas

não funcionaou.

#include <16F876A.h>

#device adc=8

#use delay(clock=4000000)

#fuses NOWDT,XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP,

 NOCPD, NOWRT

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)

char c;

short int x;

void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_spi(FALSE);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

set_tris_a(0b00000001); //Configura o pin RA0 como entrada.

set_tris_b(0b11111111); //Configura toda porta B como entrada

 port_b_pullups(false); //Quando a chave estiver desativada aterra o pino

x = input(pin_a0);

x = 0;

if(x = 1)

c = input_b(); // Lê a port_b e atribui à variável 'c'.

 putc(c); // Envia o dado armazenado na variável 'c' pela saída serial .

}

Felipe_Eletronic

17/08/2009, 16:31 H

Page 2: PIC RF

5/14/2018 PIC RF - slidepdf.com

http://slidepdf.com/reader/full/pic-rf 2/4

 Não, não, tem coisa errada ai, não é simplesmente ler a porta e usar o putc para enviar via

serial!

sugestão faça a transmissão usando o modulo USART do seu PIC, tomando cuidado de

configurar o baud rate igual para receptor e transmissor!

abs.

Angelo Eletronic

17/08/2009, 18:25 H

x = input(pin_a0);

x = 0;

Como vc define uma entrada com 0?

abç

Felipe_Eletronic

17/08/2009, 22:56 Hx = input(pin_a0);

x = 0;

 Não, não... o comando input serve para ler o estado do pino, para definir como entrada e

saida usamos o SET_TRIS_X (onde X é trisA, trisB, etc)

abs.

Andre Mathias

11/09/2009, 11:03 H

se vc ainda tiver interesse...

//*************************************************

//*USART.C *

//* *

//*Bibiloteca de manipulação da USART *

//*Suporta o moda assíncrono *

//* *

//*Autor:Fábio Pereira *

//* *

//*************************************************

char usart_tx, usart_rx, txreg, rcreg, spbrg;

struct rcsta_reg

{

int rx9d : 1;

int oerr : 1;

int ferr : 1;

int adden : 1;

int cren : 1;int sren : 1;

Page 3: PIC RF

5/14/2018 PIC RF - slidepdf.com

http://slidepdf.com/reader/full/pic-rf 3/4

int rx9 : 1;

int spen : 1;

} rcsta;

struct txsta_reg

{

int tx9d : 1;int trmt : 1;

int brgh : 1;

int xxx : 1;

int sync : 1;

int txen : 1;

int tx9 : 1;

int csrc : 1;

} txsta;

//define o endereço das variáveis

#locate rcsta = 0x18#locate txreg = 0x19

#locate rxreg = 0x1a

#locate txsta = 0x98

#locate spbrg = 0x99

#byte r_pir1 = 0x0c //define o registrador r_pir1

#bit flag_rc = r_pir1.5 // define o flag_rc

//definições utilizadas nas funções

void usart_inicializa (int vel, boolean brgh)

/*

O valor dos parametros vel e brgh deve ser retirado a partir das tabelas

de baud rate fornecidas pela Microchip ou no livro:

Microcontroadores PIC:Técnicas avnçadas.

*/

{

txsta = brgh; //seleciona o modo de gerador de baud rate

spbrg = vel //configura o gerador de baud rate

//configura os pinos da USART como entradas !

#if__device__==628

input (pin_b1);

input (pin_b2);

#endif 

#if__device__==877

input (pin_c7);

input (pin_c6);

#endif 

txsta.sync = 0; //seleciona o modo assíncrono

rcsta.spen = 1; //habilita a usarttxsta.tx9 = 0; //seleciona o modo de transmissão de 8 bits

Page 4: PIC RF

5/14/2018 PIC RF - slidepdf.com

http://slidepdf.com/reader/full/pic-rf 4/4

txsta.txen = 1; // ativa o transmissor da usart

rcsta.cren = 1; //modo de recepção contínua

rcsta.rx9 = 0; //modo de recepção de 8 bits

void usart_transmite (char dado){

while (!txsta.trmt); //aguarda o buffer de transmissão esvaziar 

txreg = dado; //coloca o novo caractere para transmissão

}

char usart_recebe (void)

{

while (!flag_rc); //aguarda a recepção de caracteres

return rxreg; //retorna o caractere recebido

vc pode dar uma olhada no datasheet do seu pic para ver o pq das configurações dos

registradores!