UART

 #include <reg51.h>

void UART_Init() {
    SCON = 0x50;  // Mode 1: 8-bit UART, REN enabled
    TMOD |= 0x20; // Timer1 in Mode 2 (8-bit auto-reload)
    TH1 = 0xFD;   // 9600 Baud Rate for 11.0592 MHz
    TL1 = 0xFD;
    TR1 = 1;      // Start Timer1
}

void UART_TxChar(char ch) {
    SBUF = ch;         // Load data into UART buffer
    while (TI == 0);   // Wait until transmission complete
    TI = 0;            // Clear transmit interrupt flag
}

char UART_RxChar() {
    while (RI == 0);   // Wait for reception to complete
    RI = 0;            // Clear receive interrupt flag
    return SBUF;       // Return received character
}

void UART_SendString(char *str) {
    while (*str) {
        UART_TxChar(*str++);
    }
}

void main() {
    char received;
    UART_Init();
    UART_SendString("8051 Serial Ready\r\n");

    while (1) {
        received = UART_RxChar();          // Wait for data
        UART_TxChar(received);             // Echo it back
    }
}

Post a Comment

Post a Comment (0)

Previous Post Next Post

ads

ads

Update cookies preferences