Ir ao conteúdo
  • Cadastre-se

[PROBLEMAS] USART - PIC 18F4550 - MPLAB C18


Ir à solução Resolvido por Tiago Millioli,

Posts recomendados

Olá pessoal,

 

Alguém, por favor, poderia me ajudar a resolver esse problema.

Estou querendo usar a comunicação serial do PIC18F4550. meu objetivo é usá-la para conectar a um módulo bluetooth para usar em um projeto, porém não estou conseguindo nem enviar um simples dado pela porta serial do PIC (Na verdade não consigo enviar o dado correto). Alguem poderia me ajudar? Segue o código abaixo:

 

 

 

 

#include <p18f4550.h> //arquivo de cabeçalho do PIC18f4550D
#include <stdio.h>
#include <usart.h>
 
 
#pragma config FOSC=HS
#pragma config CPUDIV=OSC1_PLL2
#pragma config WDT=OFF
#pragma config PWRT=ON
#pragma config BOR=ON
#pragma config BORV=1
#pragma config PBADEN=OFF
#pragma config LVP=OFF
 
 
 
void main (){
 
            TRISC = 0b10111111;
            OSCCONbits.IDLEN=0;
 
 
            OpenUSART(USART_TX_INT_OFF & 
                                USART_RX_INT_OFF & 
                                 USART_ASYNCH_MODE &
                                 USART_EIGHT_BIT &
                                 USART_BRGH_LOW,31);
 
            baudUSART(BAUD_8_BIT_RATE &
                                 BAUD_AUTO_OFF &
                                 BAUD_WAKEUP_OFF);
 
             while (1)
            {
                     while(BusyUSART()); 
                     putcUSART('A');
                     while(BusyUSART()); 
                     putcUSART('B');
                     while(BusyUSART()); 
                    putcUSART('C');
           }
}
 
 
 
OBS.: Estou usando cristal de 20MHz.
          Dado quer recebo é errado
          baud=9600
          Uso o proteus para fazer as simulações
 
Agradeço a todos que puderem me ajudar
Link para o comentário
Compartilhar em outros sites

@Tiago Millioli,ja postei a algum tempo uma ajuda com o C18.

 

http://www.4shared.com/rar/ugpqKe1r/Serial_C18.html

 

Altere o projeto do link pois ele usa um LCD,mas a comunicação rs232 você utiliza toda.

 

@MOR.esta diretriz é realmente usado no CCS,mas o compilador aqui usado é o C18,que poderia usar uma síntese praticamente igual.

Link para o comentário
Compartilhar em outros sites

Mas meu interesse é usar o que eu to fazendo saca? Não o porque eu usar outro codigo, primeiro, porque nao vou aprender a usar e depois, caso eu precise modifcar ou alguma coisa é mais fácil eu modificar o meu saca? mas mesmo assim, obrigado pelo seu codigo, eu dei uma olhada, mas nao consegui entender e com usar....se você puder olhar o meu codigo agradeço muito

Link para o comentário
Compartilhar em outros sites


#include <p18cxxx.h> // Biblioteca com as definições do PIC 18F4550

#include <delays.h> // Biblioteca para gerar atrasos

#include <usart.h>

/************************************************DEFINES**********************************************/

#pragma config FOSC=HS

#pragma config CPUDIV=OSC1_PLL2

#pragma config WDT=OFF

#pragma config PWRT=ON

#pragma config BOR=ON

#pragma config BORV=1

#pragma config PBADEN=OFF

#pragma config LVP=OFF

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

void main (){

TRISC = 0b10111111;

//Configura como oscilador externo - 20Mhz

OSCCONbits.SCS0 = 0;

OSCCONbits.SCS1 = 0;

//Define TX como transmissor (saída)

TRISCbits.TRISC6 = 0;

//Define RX como receptor (entrada)

TRISCbits.TRISC7 = 1;

OpenUSART(USART_TX_INT_OFF &

USART_RX_INT_OFF &

USART_ASYNCH_MODE &

USART_EIGHT_BIT &

USART_BRGH_LOW,31);

baudUSART(BAUD_8_BIT_RATE &

BAUD_AUTO_OFF &

BAUD_WAKEUP_OFF);

while (1)

{

while(BusyUSART());

putcUSART('A');

Delay10KTCYx(250); // Delay 10000*250 Ciclos

while(BusyUSART());

putcUSART('B');

Delay10KTCYx(250); // Delay 10000*250 Ciclos

while(BusyUSART());

putcUSART('C');

Delay10KTCYx(250); // Delay 10000*250 Ciclos

}

}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...