Upload
gleeedson
View
194
Download
3
Embed Size (px)
Citation preview
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
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;
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
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!