Cómo imprimir datos desde el registro (8051) al terminal (monitor en serie)

0

He escrito un programa que utiliza la declaración printf para escribir en el programa TERMINAL mediante comunicación en serie. Ahora, para mi código real, quiero transferir el contenido de mi registro y mostrarlo en la ventana del terminal. ¿Cómo hago eso?

El código de prueba es:

#include <REG51F.H>
#include <stdio.h>

void main(void){

 SCON = 0x50;   /* SCON: mode 1, 8-bit UART, enable rcvr */
 TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
 TH1 = 253; /* TH1: reload value for 1200 baud @ 16MHz */
 TR1 = 1; /* TR1: timer 1 run */
 TI = 1; /* TI: set TI to send first char of UART */

  while(1){

      printf("Test\n");
    }
   }
    
pregunta Yash Karundia

1 respuesta

1
//make stdin, stdout and stderr point to the debug usart
static int putChar(char c, FILE *out);
static int getChar(FILE *in);
static FILE fileInOutErr = FDEV_SETUP_STREAM(putChar, getChar, _FDEV_SETUP_RW);

Así es como se hace para un AVR. Las definiciones de las funciones son triviales:

//uart
static int putChar(char c, FILE *out){
        USARTtransmit(c);
        return 0;       //SUCCESS
}

static int getChar(FILE *in){
        unsigned char c;
        USARTreceive(&c);
        return (int)c;  //SUCCESS
}

Y luego arrancas minicom o alguna otra consola serie en la PC y te comunicas.

    
respondido por el Vorac

Lea otras preguntas en las etiquetas