problema al comunicar uart con pic

2

Estoy tratando de hacer un programa uart en la foto. Quiero mostrar los caracteres enviados por el controlador a la PC. Pero no soy capaz de hacer esto. siguiente es mi código

#include<pic.h>

__CONFIG(0x3f72);

#define FOSC       10000     //10Mhz==>10000Khz
#define BAUD_RATE   9.6     //9600 Baudrate
#define BAUD_VAL   ((char)(FOSC/ (16 * BAUD_RATE )) – 1)     

void main()
{
 unsigned char ReceiveChar;  
 TRISC=0xc0;   //RC7,RC6 set to usart mode(INPUT)
 TXSTA=0x24;   //Transmit Enable
 SPBRG=BAUD_VAL; //9600 baud at 10Mhz
 RCSTA=0x90;   //Usart Enable, Continus receive enable
 TXREG='0';

 while(1)
 {
   if (RCIF==1) //char received? Send 'A' back to Terminal
       {
     ReceiveChar=RCREG;

     if(TXIF==1)
     TXREG=ReceiveChar;
   }  
  }
}  
    
pregunta user46573544

1 respuesta

3

Bueno, su código se ve bien, pero ¿sabe que el microchip proporciona biblioteca periférica PIC18 así puede utilizar directamente las funciones, en lugar de poner valores a los registros.

A continuación se muestra el código de ejemplo que puede usar:

#include <plib.h>
#pragma config FNOSC = PRIPLL       
#pragma config POSCMOD = HS         
#pragma config FPLLMUL = MUL_18     
#pragma config FPLLIDIV = DIV_2     
#pragma config FPBDIV = DIV_1       
#pragma config FPLLODIV = DIV_1     
#pragma config FWDTEN = OFF         
#define SYSTEM_FREQUENCY        {define you system frequency here}
#define BAUDRATE                115200
int main()
{
 int pbFreq;
 pbFreq=SYSTEMConfigPerformance(SYSTEM_FREQUENCY);
OpenUART( UART_EN | UART_NO_PAR_8BIT | UART_1STOPBIT, UART_RX_ENABLE | UART_TX_ENABLE, (pbFreq/16/BAUDRATE)-1);
 while(1)
 {
   putsUART("Hello World.!");
 }
}
    
respondido por el Aircraft

Lea otras preguntas en las etiquetas