Serial Communication Program for 8051 to Continuously Receive Data at 9600 Baud Rate

30 Apr 2023 Balmiki Mandal 0 Embedded C

Writing a program for the Intel 8051 Microcontroller to receive bytes of data serially and transfer it continuously at 9600 bouds can be done using the following steps:

 

Step 1: Setting up the communication interface.

Before you can use the 8051 to communicate, you need to set up the communication interface. You will need to configure the serial UART module of the 8051 microcontroller. This will involve setting up the baud rate, data bits, parity, and stop bit. For this example, the desired baud rate is 9600 bps, the data bits are 8-bits, the parity is None, and the stop bit is 1.

Step 2: Writing the program.

Now you are ready to begin writing the program. The first step is to create a main loop that continuously polls the serial port for incoming data. Once data is received, the program must check to make sure it is valid data before processing it and converting it into HTML format.

Step 3: Transmitting Data.

Once the data has been converted into the desired HTML format, it can then be sent out over the serial port. The data can be sent out in chunks, or as a single continuous transmission. Be sure to keep track of how much data has been sent so that the receiving device can process it properly.

Step 4: Closing the communication interface.

Once all the data has been transmitted, the serial port should be closed. This will ensure that the communication between the 8051 microcontroller and the other device is closed properly.

By following these steps, you can write a program for the 8051 microcontroller to receive bytes of data serially, transfer it continuously at 9600bps, and convert it into HTML format.

 

Here's an example program for the 8051 microcontroller to receive bytes of data serially and transfer what is received at 9600 baud continuously. This program assumes that an external UART (universal asynchronous receiver-transmitter) module is connected to the microcontroller and is configured to communicate at 9600 baud, 8-bit data, and 1 stop bit.

#include <8051.h>

void serial_init() {
    // Set the UART baud rate to 9600
    TMOD |= 0x20;  // Timer 1 in mode 2
    TH1 = 0xFD;    // Set reload value for 9600 baud at 11.0592 MHz crystal
    SCON = 0x50;   // 8-bit data, 1 stop bit, enable receiver and transmitter
    TR1 = 1;       // Start Timer 1
}

void main() {
    unsigned char data_byte;

    serial_init();

    while (1) {
        // Wait for a byte to be received
        while (!RI);

        // Read the received byte from the UART
        data_byte = SBUF;

        // Transmit the received byte at 9600 baud
        SBUF = data_byte;

        // Wait for the byte to be transmitted
        while (!TI);

        // Clear the receive and transmit interrupt flags
        RI = 0;
        TI = 0;
    }
}

In this program, the serial_init() function sets up the UART to communicate at the desired baud rate and data format. The main() function then enters an infinite loop where it waits for a byte to be received by checking the receive interrupt flag (RI) in the SCON register. Once a byte is received, it is read from the UART receive buffer (SBUF) and immediately transmitted back out on the UART by writing it to the transmit buffer (SBUF). Finally, the receive and transmit interrupt flags (RI and TI) are cleared to indicate that the byte has been read and transmitted.

Note that this program simply echoes back whatever is received on the UART. Depending on your specific requirements, you may need to modify the program to perform some other action with the received data.

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.