Ir ao conteúdo
  • Cadastre-se
ancg

Comunicação Serial

Recommended Posts

Eu gostaria de fazer um programa de comunicação serial usando um Display de Sete segmentos,Pic18F4520 e o COMPIM e queria saber como posso fazer.

Tenho um exemplo mais não estou entendendo muito bem.

/* Main.c file generated by New Project wizard * * Created:   Sun Jun 1 2014 * Processor: PIC18F4520 * Compiler:  MPLAB C18 */#include <p18f4520.h>#include <delays.h>#include <usart.h>//--------------------------#define BOTAO     PORTCbits.RC0#define RECEBE    PORTB#define TRANSMITE PORTD#define DSP1      PORTEbits.RE0#define DSP2      PORTEbits.RE1//--------------------------#pragma config WDT=OFF          // Desabilitando o cao de guarda.#pragma config OSC=HS           // Habilitando o clock externo (4Mhz).//--------------------------unsigned char vetor[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0xF9,0x8C,0x46,0xC1,0x86,0xC8};unsigned char BDADO, CONVERTIDO, recebe, transmite;//--------------------------void main() {  TRISC  = 0x01;    TRISB  = 0x00;     TRISD  = 0x00;    TRISE  = 0x00;    ADCON1 = 0xFF;      PORTD  = 0xC0;    PORTB  = 0xC0;//--------------------------    SPBRG  = 25;           // Taxa de transmissao 9615bps(Fosc = 4).    BAUDCONbits.BRG16 = 0; // Definindo para ser 8 bits.    TXSTAbits.BRGH    = 0; // Habilitando em velocidade baixa.     TXSTAbits.SYNC    = 0; // Operando em modo assíncrono.    RCSTAbits.SPEN    = 1; // Configurando os pinos RC6 e RC7.    TXSTAbits.TX9     = 0; // Configurando transmissão em 8 bits.    TXSTAbits.TXEN    = 1; // Habilitando a transmissão.    RCSTAbits.RX9     = 0; // Configurando recepção em 8 bits.    RCSTAbits.CREN    = 1; // Habilitando a recepção.        IPR1bits.RCIP     = 1; // Prioridade da interrupção de recepção.    PIE1bits.RCIE     = 1; // Habilitando a interrupção de recepçãp.    DSP1 = 1;    DSP2 = 1;       while (1)   {// Se o botão for igual a zero, o BDADO vai incrementar de acordo com a recepção, enviando para o display o valor recebido.      if(BOTAO==0)                  {  	 BDADO++;// Com o botão negado, o dado vai ser carregado no TXREG para setar o valor do botão para a transmissão.              while (!BOTAO)	    	 TXREG = BDADO;	 transmite = TXREG;	 CONVERTIDO = vetor[transmite];          TRANSMITE  = CONVERTIDO; 	 while (!TXSTAbits.TRMT);      }// Irá sinalizar a recepção e bufferizar a recepção enviando para o display.      if(PIR1bits.RCIF)      {  RCREG  = BDADO;	 CONVERTIDO = vetor[BDADO];          RECEBE = CONVERTIDO; 	      }            if(BDADO==10)	 BDADO=0;   }   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×